/**
 * User Restaurant Access Model
 * Represents user access rights to restaurant entities
 */
export interface UserRestaurantAccess {
  id: string;
  user_id: string;
  restaurant_id: string;
  restaurant_level: 'group' | 'brand' | 'outlet';
  permissions: string[];
  created_at: Date;
  updated_at: Date;
}

/**
 * Create Access DTO
 * Data transfer object for creating user restaurant access
 */
export interface CreateAccessDto {
  user_id: string;
  restaurant_id: string;
  restaurant_level: 'group' | 'brand' | 'outlet';
  permissions?: string[];
}

/**
 * Update Access DTO
 * Data transfer object for updating user restaurant access
 */
export interface UpdateAccessDto {
  permissions?: string[];
}

/**
 * Access Response DTO
 * Data transfer object for API responses
 */
export interface AccessResponseDto extends UserRestaurantAccess {
  user?: {
    id: string;
    email: string;
    first_name: string;
    last_name: string;
  };
  restaurant?: {
    id: string;
    name: string;
    type: 'group' | 'brand' | 'outlet';
  };
}

/**
 * Bulk Access Assignment DTO
 * For assigning multiple users to a restaurant
 */
export interface BulkAccessAssignmentDto {
  restaurant_id: string;
  restaurant_level: 'group' | 'brand' | 'outlet';
  user_ids: string[];
  permissions?: string[];
}

/**
 * User Access Summary
 * Summary of all restaurant access for a user
 */
export interface UserAccessSummary {
  user_id: string;
  email: string;
  first_name: string;
  last_name: string;
  access: {
    groups: {
      id: string;
      name: string;
      permissions: string[];
    }[];
    brands: {
      id: string;
      name: string;
      group_id: string;
      permissions: string[];
    }[];
    outlets: {
      id: string;
      name: string;
      brand_id: string;
      permissions: string[];
    }[];
  };
}
