import type { ListMeta } from '@/interfaces/common';

export interface EmployeeCitiesData {
    id: number;
    city_id: number;
    city_name: string;
    user_id: number;
}

export interface EmployeeFilter {
    search?: string
    city_id?: string | undefined | null
    designation_id?: number | undefined | null
    role_id?: number | undefined | null
    status?: string | undefined | null
    is_blocked?: boolean | undefined | null
    page?: number
    pageSize?: number
    pagination?: boolean
    sortColumn: string
    sortOrder: string
}

export interface EmployeePayload {
    page: number
    sortColumn: string
    sortOrder: string
    pageSize?: number
    filter?: EmployeeFilter
}

export interface Employee {
    employees: string
    designation_name: string
    name: string
    id: number
    first_name: string
    last_name: string
    email: string
    phone: string | number
    password: string
    status: 'active' | 'inactive'
    salary: number
    city_id: number
    user_cities: EmployeeCitiesData[]
    designation_id: number
    cluster_manager_id: number
    created_at: Date
    updated_at: Date
    created_by: number
    updated_by: number
    role_id: number
    role: string
    cluster_name: string
    city_name: string
    reporting_manager_id: number
    manager_of_id: []
    re_assign_to_id: number,
    launches: [],
    is_blocked?: boolean
    launch_replacement_user_id?: { value: number; label: string } | number
    launch_replacement_user_name?: string
    project_replacement_user_id?: { value: number; label: string } | number
    project_replacement_user_name?: string
}

export interface InactiveValidation {
    success: boolean
    launch: {
      required: boolean
      type: 'PS' | 'FS' | 'TL' | null
      affectedLaunches: number[]
    }
    project: {
      required: boolean
      affectedProjects: number[]
    }
}
export interface designationI {
    id: number
    name: string
    status: string
}
export interface EmployeeState {
    designation: designationI[]
    employees: Employee[]
    listLoading: boolean
    status: 'loading' | 'succeeded' | 'failed'
    error: string | null
    employeesMeta: ListMeta
    employee: Employee | null
}

export interface EmployeeCities {
    current_page: number
    per_page: number
}

export interface citiesI {
    id: number
    name: string
}

export interface clusterI {
    id: number
    name: string
    status: string
}

export interface roleI {
    id: number
    name: string
    status: string
}
