diff --git a/apps/backoffice/src/app/features/configuration/api/configuration-api.ts b/apps/backoffice/src/app/features/configuration/api/configuration-api.ts index 598e014dc..6ee3d2a0c 100644 --- a/apps/backoffice/src/app/features/configuration/api/configuration-api.ts +++ b/apps/backoffice/src/app/features/configuration/api/configuration-api.ts @@ -1,41 +1,41 @@ -import { baseApi } from '@ema-platform/api'; +import { baseApi } from "@ema-platform/api"; import type { Organization, Profession, ListResponse, CreateProfessionPayload, UpdateProfessionPayload, -} from '../types/configuration'; +} from "../types/configuration"; const configurationApi = baseApi.injectEndpoints({ endpoints: (builder) => ({ getOrganizations: builder.query, void>({ - query: () => '/organizations', - providesTags: ['Api'], + query: () => "/organizations", + providesTags: ["Api"], }), - getProfessions: builder.query< - ListResponse, - { skip?: number; take?: number; q?: string; orderBy?: string } | void - >({ - query: (arg) => ({ url: '/professions', params: arg ?? {} }), - providesTags: ['Api'], + getProfessions: builder.query, { q?: string }>({ + query: (params) => ({ + url: "/professions", + params, + }), + providesTags: ["Api"], }), createProfession: builder.mutation({ - query: (body) => ({ url: '/professions', method: 'POST', body }), - invalidatesTags: ['Api'], + query: (body) => ({ url: "/professions", method: "POST", body }), + invalidatesTags: ["Api"], }), updateProfession: builder.mutation({ query: ({ id, ...body }) => ({ url: `/professions/${id}`, - method: 'PUT', + method: "PUT", body, }), - invalidatesTags: ['Api'], + invalidatesTags: ["Api"], }), deleteProfession: builder.mutation({ - query: (id) => ({ url: `/professions/${id}`, method: 'DELETE' }), - invalidatesTags: ['Api'], + query: (id) => ({ url: `/professions/${id}`, method: "DELETE" }), + invalidatesTags: ["Api"], }), }), overrideExisting: true, diff --git a/apps/backoffice/src/app/features/configuration/pages/ConfigurationPage.tsx b/apps/backoffice/src/app/features/configuration/pages/ConfigurationPage.tsx index e9bb85d67..ac238a204 100644 --- a/apps/backoffice/src/app/features/configuration/pages/ConfigurationPage.tsx +++ b/apps/backoffice/src/app/features/configuration/pages/ConfigurationPage.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useCallback } from 'react'; +import { useState, useEffect, useCallback } from "react"; import { Stack, Title, @@ -15,28 +15,36 @@ import { Loader, Center, Alert, -} from '@mantine/core'; -import { useForm } from '@mantine/form'; -import { useDisclosure } from '@mantine/hooks'; -import { IconEdit, IconTrash, IconPlus, IconBriefcase, IconMap, IconCertificate, IconInfoCircle } from '@tabler/icons-react'; -import { useTranslation } from 'react-i18next'; +} from "@mantine/core"; +import { useForm } from "@mantine/form"; +import { useDisclosure } from "@mantine/hooks"; +import { + IconEdit, + IconTrash, + IconPlus, + IconBriefcase, + IconMap, + IconCertificate, + IconInfoCircle, +} from "@tabler/icons-react"; +import { useTranslation } from "react-i18next"; import { notify, useErrorHandler, AdvancedTable, useServerTable, type AdvancedColumn, -} from '@ema-platform/ui'; -import { LocationPage } from '../../location/pages/LocationPage'; -import { CertificationPage } from '../../certification/pages/CertificationPage'; +} from "@ema-platform/ui"; +import { LocationPage } from "../../location/pages/LocationPage"; +import { CertificationPage } from "../../certification/pages/CertificationPage"; import { useGetOrganizationsQuery, useGetProfessionsQuery, useCreateProfessionMutation, useUpdateProfessionMutation, useDeleteProfessionMutation, -} from '../api/configuration-api'; -import type { Profession } from '../types/configuration'; +} from "../api/configuration-api"; +import type { Profession } from "../types/configuration"; interface ProfFormValues { nameEn: string; @@ -54,14 +62,27 @@ interface ProfFormProps { onCancel: () => void; } -function ProfessionForm({ editingProf, deptOptions, isSubmitting, onSubmit, onCancel }: ProfFormProps) { +function ProfessionForm({ + editingProf, + deptOptions, + isSubmitting, + onSubmit, + onCancel, +}: ProfFormProps) { const { t } = useTranslation(); const form = useForm({ - initialValues: { nameEn: '', nameAm: '', descEn: '', descAm: '', departmentId: '' }, + initialValues: { + nameEn: "", + nameAm: "", + descEn: "", + descAm: "", + departmentId: "", + }, validate: { - nameEn: (v) => (!v ? t('configuration.validation.nameEnRequired') : null), - nameAm: (v) => (!v ? t('configuration.validation.nameAmRequired') : null), - departmentId: (v) => (!v ? t('configuration.validation.departmentRequired') : null), + nameEn: (v) => (!v ? t("configuration.validation.nameEnRequired") : null), + nameAm: (v) => (!v ? t("configuration.validation.nameAmRequired") : null), + departmentId: (v) => + !v ? t("configuration.validation.departmentRequired") : null, }, }); @@ -70,61 +91,65 @@ function ProfessionForm({ editingProf, deptOptions, isSubmitting, onSubmit, onCa form.setValues({ nameEn: editingProf.name.en, nameAm: editingProf.name.am, - descEn: editingProf.description.en ?? '', - descAm: editingProf.description.am ?? '', + descEn: editingProf.description.en ?? "", + descAm: editingProf.description.am ?? "", departmentId: editingProf.departmentId, }); } }, [editingProf]); - const handleSubmit = form.onSubmit((values) => onSubmit(values, !!editingProf)); + const handleSubmit = form.onSubmit((values) => + onSubmit(values, !!editingProf), + ); return (