RBAC: Phase 1-3, Total Salary fix, employee creation fix, permission groups, backup script
Made-with: Cursor
This commit is contained in:
@@ -84,8 +84,12 @@ export const employeesAPI = {
|
||||
|
||||
const response = await api.get(`/hr/employees?${params.toString()}`)
|
||||
const { data, pagination } = response.data
|
||||
const employees = (data || []).map((e: any) => ({
|
||||
...e,
|
||||
baseSalary: e.baseSalary ?? e.basicSalary ?? 0,
|
||||
}))
|
||||
return {
|
||||
employees: data || [],
|
||||
employees,
|
||||
total: pagination?.total || 0,
|
||||
page: pagination?.page || 1,
|
||||
pageSize: pagination?.pageSize || 20,
|
||||
@@ -96,7 +100,8 @@ export const employeesAPI = {
|
||||
// Get single employee by ID
|
||||
getById: async (id: string): Promise<Employee> => {
|
||||
const response = await api.get(`/hr/employees/${id}`)
|
||||
return response.data.data
|
||||
const e = response.data.data
|
||||
return e ? { ...e, baseSalary: e.baseSalary ?? e.basicSalary ?? 0 } : e
|
||||
},
|
||||
|
||||
// Create new employee
|
||||
@@ -118,10 +123,40 @@ export const employeesAPI = {
|
||||
}
|
||||
|
||||
// Departments API
|
||||
export interface Department {
|
||||
id: string
|
||||
name: string
|
||||
nameAr?: string | null
|
||||
code: string
|
||||
parentId?: string | null
|
||||
parent?: { id: string; name: string; nameAr?: string | null }
|
||||
description?: string | null
|
||||
isActive?: boolean
|
||||
children?: Department[]
|
||||
employees?: any[]
|
||||
positions?: any[]
|
||||
_count?: { children: number; employees: number }
|
||||
}
|
||||
|
||||
export const departmentsAPI = {
|
||||
getAll: async (): Promise<any[]> => {
|
||||
const response = await api.get('/hr/departments')
|
||||
return response.data.data
|
||||
},
|
||||
getHierarchy: async (): Promise<Department[]> => {
|
||||
const response = await api.get('/hr/departments/hierarchy')
|
||||
return response.data.data
|
||||
},
|
||||
create: async (data: { name: string; nameAr?: string; code: string; parentId?: string; description?: string }) => {
|
||||
const response = await api.post('/hr/departments', data)
|
||||
return response.data.data
|
||||
},
|
||||
update: async (id: string, data: Partial<{ name: string; nameAr: string; code: string; parentId: string | null; description: string; isActive: boolean }>) => {
|
||||
const response = await api.put(`/hr/departments/${id}`, data)
|
||||
return response.data.data
|
||||
},
|
||||
delete: async (id: string) => {
|
||||
await api.delete(`/hr/departments/${id}`)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user