import designationData from './json/designation.json'

const mockDesignation = (mock: any): void => {
    mock.onGet('/api/v1/masters/designations').reply(() => {
        return [200, { data: designationData }]
    })

    mock.onPost('/api/v1/masters/designations').reply((data: any) => {
        const newDesignation = {
            id: Math.floor(Math.random() * 1000),
            name: data.name,
            status: data.status
        }

        return [200, { message: 'added successfully', data: newDesignation }]
    })

    mock.onPatch('/api/v1/masters/designations/{id}').reply((data: any) => {
        const requestData = JSON.parse(data.data)
        const desinationId = requestData.id
        const updatedDesinationData = designationData.map((desinations: any) =>
            desinations.id === desinationId
                ? { ...desinations, name: requestData.name }
                : desinations
        )

        return [200, { message: 'edited successfully', data: updatedDesinationData }]
    })

    mock.onGet('/api/v1/masters/designations/{id}').reply((config: any) => {
        const desinationId = parseInt(config.url?.split('/').pop() ?? '', 10)

        const desinations = designationData.find((g: any) => g.id === desinationId)

        if (desinations !== undefined) {
            return [200, { message: 'Fetched successfully', data: desinations }]
        } else {
            return [404, { message: 'desinations not found', data: null }]
        }
    })

    mock.onDelete('/api/v1/masters/designations/{id}').reply((config: any) => {
        const desinationId = parseInt(config.url?.split('/').pop() ?? '', 10)
        const updatedDesinationData = designationData.filter(
            (desinations: any) => desinations.id !== desinationId
        )
        return [200, { message: 'Deleted successfully', data: updatedDesinationData }]
    })
}

export { mockDesignation }
