export interface TeamScheduleResponse {
  month: number;
  year_month: number;
  days_in_month: number;
  users: ScheduleUser[];
  teams: ScheduleTeam[];
  unassigned_user_ids: number[];
  schedule: WeekScheduleData[];
  shift_templates_used: ShiftTemplateInfo[];
}

export interface ScheduleTeam {
  team_id: number;
  team_name: string;
  team_color: string;
  member_ids: number[];
}

export interface MonthScheduleResponse {
  ber_id: number;
  month: number | null;
  year_month: number | null;
  days_in_month: number | null;
  start_year: number;
  start_week: number;
  end_year: number;
  end_week: number;
  users: ScheduleUser[];
  schedule: WeekScheduleData[];
  shift_templates_used: ShiftTemplateInfo[];
}

export interface ScheduleUser {
  usr_id: number;
  name: string;
  initials: string;
  photourl: string | null;
  roles: { zr_id: number; zr_name: string }[];
}

export interface WeekScheduleData {
  week_number: number;
  week_year: number;
  week_start: string;
  week_end: string;
  days: ScheduleDay[];
}

export interface ScheduleDay {
  date: string; // YYYY-MM-DD
  day_name: string; // e.g. "Monday"
  users_data: UserDayData[];
}

export interface UserDayData {
  usr_id: number;
  shifts: ScheduleShift[];
  vacation: {
    zvr_id: number;
    from_date: string;
    to_date: string;
    status: 'approved' | 'submitted';
  } | null;
  sick_leave: {
    zsr_id: number;
    from_date: string;
    to_date: string;
    status: 'approved' | 'submitted';
  } | null;
  is_free: boolean;
}

export interface ScheduleShift {
  zsa_id: number;
  zs_id: number;
  start_time: string;
  end_time: string;
  name: string;
  status: string;
  color: string;
  template_name: string | null;
  role: {
    zr_id: number;
    zr_name: string;
  } | null;
}

export interface ShiftTemplateInfo {
  zst_id: number;
  zst_name: string;
  zst_color: string;
}
