(Feat-Fix): Lots of fixes done, reporting system fixed, stricter types
This commit is contained in:
@@ -1,56 +1,61 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { api } from '../services/api';
|
||||
import type { User } from '../types';
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { api } from "../services/api";
|
||||
import type { User } from "../types";
|
||||
|
||||
export const useEmployees = (filters?: { role?: string; departmentId?: number }) => {
|
||||
export const useEmployees = (
|
||||
filters?: { role?: string; departmentId?: number },
|
||||
) => {
|
||||
const [employees, setEmployees] = useState<User[]>([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
const fetchEmployees = async () => {
|
||||
const fetchEmployees = useCallback(async () => {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
try {
|
||||
const data = await api.getUsers(filters);
|
||||
setEmployees(data);
|
||||
} catch (err: any) {
|
||||
setError(err.message || 'Failed to fetch employees');
|
||||
console.error('Failed to fetch employees:', err);
|
||||
} catch (err: never) {
|
||||
setError(err.message || "Failed to fetch employees");
|
||||
console.error("Failed to fetch employees:", err);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
}, [filters]);
|
||||
|
||||
useEffect(() => {
|
||||
fetchEmployees();
|
||||
}, [JSON.stringify(filters)]);
|
||||
}, [fetchEmployees]);
|
||||
|
||||
const createEmployee = async (data: any) => {
|
||||
const createEmployee = async (data: Omit<User, "id">) => {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
try {
|
||||
const newEmployee = await api.createUser(data);
|
||||
await fetchEmployees(); // Refresh list
|
||||
return newEmployee;
|
||||
} catch (err: any) {
|
||||
setError(err.message || 'Failed to create employee');
|
||||
console.error('Failed to create employee:', err);
|
||||
} catch (err: never) {
|
||||
setError(err.message || "Failed to create employee");
|
||||
console.error("Failed to create employee:", err);
|
||||
throw err;
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
const updateEmployee = async (id: number, data: any) => {
|
||||
const updateEmployee = async (
|
||||
id: number,
|
||||
data: Partial<Omit<User, "id">>,
|
||||
) => {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
try {
|
||||
const updated = await api.updateUser(id, data);
|
||||
await fetchEmployees(); // Refresh list
|
||||
return updated;
|
||||
} catch (err: any) {
|
||||
setError(err.message || 'Failed to update employee');
|
||||
console.error('Failed to update employee:', err);
|
||||
} catch (err: never) {
|
||||
setError(err.message || "Failed to update employee");
|
||||
console.error("Failed to update employee:", err);
|
||||
throw err;
|
||||
} finally {
|
||||
setLoading(false);
|
||||
@@ -63,9 +68,9 @@ export const useEmployees = (filters?: { role?: string; departmentId?: number })
|
||||
try {
|
||||
await api.deleteUser(id);
|
||||
await fetchEmployees(); // Refresh list
|
||||
} catch (err: any) {
|
||||
setError(err.message || 'Failed to delete employee');
|
||||
console.error('Failed to delete employee:', err);
|
||||
} catch (err: never) {
|
||||
setError(err.message || "Failed to delete employee");
|
||||
console.error("Failed to delete employee:", err);
|
||||
throw err;
|
||||
} finally {
|
||||
setLoading(false);
|
||||
|
||||
Reference in New Issue
Block a user