(Feat-Fix): New Reporting system, more seeded data, fixed subdepartments and activity inversion, login page changes, etc etc
This commit is contained in:
@@ -253,6 +253,108 @@ class ApiService {
|
||||
method: 'DELETE',
|
||||
});
|
||||
}
|
||||
|
||||
// Reports
|
||||
async getCompletedAllocationsReport(params?: {
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
departmentId?: number;
|
||||
contractorId?: number;
|
||||
employeeId?: number;
|
||||
}) {
|
||||
const query = params ? new URLSearchParams(params as any).toString() : '';
|
||||
return this.request<{
|
||||
allocations: any[];
|
||||
summary: { totalAllocations: number; totalAmount: string; totalUnits: string }
|
||||
}>(`/reports/completed-allocations${query ? `?${query}` : ''}`);
|
||||
}
|
||||
|
||||
async getReportSummary(params?: { startDate?: string; endDate?: string }) {
|
||||
const query = params ? new URLSearchParams(params as any).toString() : '';
|
||||
return this.request<{
|
||||
byContractor: any[];
|
||||
bySubDepartment: any[];
|
||||
byActivity: any[];
|
||||
}>(`/reports/summary${query ? `?${query}` : ''}`);
|
||||
}
|
||||
|
||||
// Standard Rates
|
||||
async getStandardRates(params?: { departmentId?: number; subDepartmentId?: number; activity?: string }) {
|
||||
const query = params ? new URLSearchParams(params as any).toString() : '';
|
||||
return this.request<any[]>(`/standard-rates${query ? `?${query}` : ''}`);
|
||||
}
|
||||
|
||||
async getAllRates(params?: { departmentId?: number; startDate?: string; endDate?: string }) {
|
||||
const query = params ? new URLSearchParams(params as any).toString() : '';
|
||||
return this.request<{
|
||||
allRates: any[];
|
||||
summary: { totalContractorRates: number; totalStandardRates: number; totalRates: number };
|
||||
}>(`/standard-rates/all-rates${query ? `?${query}` : ''}`);
|
||||
}
|
||||
|
||||
async compareRates(params?: { contractorId?: number; subDepartmentId?: number }) {
|
||||
const query = params ? new URLSearchParams(params as any).toString() : '';
|
||||
return this.request<{
|
||||
standardRates: any[];
|
||||
contractorRates: any[];
|
||||
comparisons: any[];
|
||||
}>(`/standard-rates/compare${query ? `?${query}` : ''}`);
|
||||
}
|
||||
|
||||
async createStandardRate(data: {
|
||||
subDepartmentId?: number;
|
||||
activity?: string;
|
||||
rate: number;
|
||||
effectiveDate: string
|
||||
}) {
|
||||
return this.request<any>('/standard-rates', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
}
|
||||
|
||||
async updateStandardRate(id: number, data: { rate?: number; activity?: string; effectiveDate?: string }) {
|
||||
return this.request<any>(`/standard-rates/${id}`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
}
|
||||
|
||||
async deleteStandardRate(id: number) {
|
||||
return this.request<{ message: string }>(`/standard-rates/${id}`, {
|
||||
method: 'DELETE',
|
||||
});
|
||||
}
|
||||
|
||||
// Activities
|
||||
async getActivities(params?: { departmentId?: number; subDepartmentId?: number }) {
|
||||
const query = params ? new URLSearchParams(params as any).toString() : '';
|
||||
return this.request<any[]>(`/activities${query ? `?${query}` : ''}`);
|
||||
}
|
||||
|
||||
async getActivity(id: number) {
|
||||
return this.request<any>(`/activities/${id}`);
|
||||
}
|
||||
|
||||
async createActivity(data: { sub_department_id: number; name: string; unit_of_measurement?: string }) {
|
||||
return this.request<any>('/activities', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
}
|
||||
|
||||
async updateActivity(id: number, data: { name?: string; unit_of_measurement?: string }) {
|
||||
return this.request<any>(`/activities/${id}`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
}
|
||||
|
||||
async deleteActivity(id: number) {
|
||||
return this.request<{ message: string }>(`/activities/${id}`, {
|
||||
method: 'DELETE',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export const api = new ApiService(API_BASE_URL);
|
||||
|
||||
Reference in New Issue
Block a user