import { MultiSelectOption } from './options.type'; export type EmployeeType = 'Magang' | 'Kontrak' | 'Tetap'; export type SalesRoleType = 'sales' | 'seniorSales' | 'elsa'; export type SalesRole = Record; export interface Preset { _id: string; name: string; canCreateSchedules: boolean; canPerformVisitAbsence: boolean; canPerformWfhAbsence: boolean; workDays: string[]; } export interface EmployeeProfile { _id: string; profilePicture: string; fullName: string; employeeId: string; employeeType: EmployeeType; division: string; position: string; startWorkDate: string; endWorkDate: string; workDuration: string; updatedAt: string; createdAt: string; } export interface EmployeeDetail { _id: string; employeeId: string; isActive: boolean; createdAt: string; updatedAt: string; fullName: string; nickName: string; employeeType: EmployeeType; division: { _id: string; name: string; }; position: { _id: string; name: string; }; startWorkDate: string; endWorkDate?: string; profilePicture: string; preset: Preset; accessModule: string[]; salesRole: SalesRole; adminRole?: AdminRole; email: string; phoneNumber: string; nik: string; address: string; birthDate: string; emergencyContact: string; maritalStatus: string; totalDependents: number; accountNumber: string; accountNumberHolder: string; npwp?: string; company: { _id: string; name: string; }; workDuration?: string; cutiLeft?: number; kartuBpjs?: string; } export interface AdminRole { _id: string; name: string; permission: EmployeePermissions; } export interface EmployeePermissions { employeeData: EmployeePermission; absenceData: EmployeePermission; requestData: EmployeePermission; calendarAndSchedule: EmployeePermission; salaryData: EmployeePermission; kasbonData: EmployeePermission; settingCompany: EmployeePermission; settingDivision: EmployeePermission; settingPosition: EmployeePermission; settingAdminRole: EmployeePermission; settingLeave: EmployeePermission; settingRequestDeadline: EmployeePermission; settingWorkTime: EmployeePermission; settingAgenda: EmployeePermission; settingEmail: EmployeePermission; settingPreset: EmployeePermission; } export interface EmployeePermission { read: boolean; update: boolean; } export interface EmployeeFilterRaw { employeeType?: string[]; division?: string[]; position?: string[]; workDurationMin?: number; workDurationMax?: number; startWorkDate?: number[]; endWorkDate?: number[]; adminRole?: string[]; company?: string[]; isActive?: boolean[]; } export type EmployeeFilterQuery = Partial>; export type EmployeeFilterOption = { [key: string]: MultiSelectOption[]; }; export type EmployeeFilterBoolean = { [key: string]: boolean; }; export type FingerprintDevice = 'Alat_Absen_Lantai_2' | 'Alat_Absen_Lantai_3'; export interface Fingerprint { fingerprintIds: number[]; device: FingerprintDevice; } export interface EmployeeDevice { _id: string; personId: string; deviceId: string; } export interface MergedEmployee { masterAccount: MergeAccount; mergedAccount: MergeAccount; } export interface MergeAccount { _id: string; nickName: string; email: string; company: string; } export interface MergeEmployeeOption { lable: string; value: string; email: string; }