// Assuming that employees is an array of EmployeeData
import employees from './json/employees.json'

interface EmployeeData {
    id?: number
    first_name?: string
    last_name?: string
    email?: string
    // Add other properties from your data
}

// Explicitly set the type of employees
const employeesArray: EmployeeData[] = employees.data

const mockEmployees = (mock: any): void => {
    mock.onGet('/api/v1/users').reply(() => {
        return [200, { data: employeesArray }]
    })

    mock.onPost('/api/v1/users').reply((config: any) => {
        const userData = JSON.parse(config.data)
        employeesArray.push(userData)
        return [200, { message: 'Added successfully', data: userData }]
    })

    mock.onPut('/api/v1/users/').reply(() => {
        return [
            200,
            {
                success: true,
                message: 'User updated successfully.'
            }
        ]
    })

    mock.onDelete('/api/v1/users/:userId').reply((config: any) => {
        const userId = parseInt(config.url.split('/').pop(), 10)
        const index = employeesArray.findIndex((user: EmployeeData) => user.id === userId)
        if (index !== -1) {
            employeesArray.splice(index, 1)
            return [200]
        } else {
            return [404, { message: 'User not found' }]
        }
    })
}

export { mockEmployees }
