32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import type { Employee } from '~/services/dto/employee'
|
|
|
|
export const compareEmployeesInSite = (employeeA: Employee, employeeB: Employee) => {
|
|
const orderA = employeeA.displayOrder ?? 0
|
|
const orderB = employeeB.displayOrder ?? 0
|
|
if (orderA !== orderB) return orderA - orderB
|
|
|
|
const lastNameA = employeeA.lastName ?? ''
|
|
const lastNameB = employeeB.lastName ?? ''
|
|
if (lastNameA !== lastNameB) return lastNameA.localeCompare(lastNameB, 'fr')
|
|
|
|
const firstNameA = employeeA.firstName ?? ''
|
|
const firstNameB = employeeB.firstName ?? ''
|
|
return firstNameA.localeCompare(firstNameB, 'fr')
|
|
}
|
|
|
|
export const compareEmployeesBySiteAndOrder = (employeeA: Employee, employeeB: Employee) => {
|
|
const siteOrderA = employeeA.site?.displayOrder ?? 0
|
|
const siteOrderB = employeeB.site?.displayOrder ?? 0
|
|
if (siteOrderA !== siteOrderB) return siteOrderA - siteOrderB
|
|
|
|
const siteNameA = employeeA.site?.name ?? ''
|
|
const siteNameB = employeeB.site?.name ?? ''
|
|
if (siteNameA !== siteNameB) return siteNameA.localeCompare(siteNameB, 'fr')
|
|
|
|
return compareEmployeesInSite(employeeA, employeeB)
|
|
}
|
|
|
|
export const sortEmployeesBySiteAndOrder = (employees: Employee[]) => {
|
|
return [...employees].sort(compareEmployeesBySiteAndOrder)
|
|
}
|