Unverified Commit d76b35c1 authored by ksmirnov's avatar ksmirnov Committed by GitHub

Merge pull request #15 from AyaDigital/hotfix/DMVP-1091

DMVP-1091 - Реализовать отображение в модальном окне отображение ошиб…
parents b91dd9e5 a04a997c
......@@ -7,12 +7,10 @@ const HEALTHAPP_URI = process.env.REACT_APP_BASE_URL
const PRACTITIONERS = '/api/profiles';
const PROFILE = '/api/profile';
const PRACTITIONERS_ADMIN_LIST = '/idm-list';
const AVATAR = '/avatar';
const UPLOAD = '/upload';
const ABOUT_INFO = '/about-info';
const PROFILES = '/api/profiles';
const PROFILES_LIST = '/api/profiles/all';
const SPECIALITIES = '/api/specialities';
const SPECIALITIES_ADD = SPECIALITIES + "/add";
const SPECIALITIES_DESTROY = SPECIALITIES + "/destroy";
......@@ -67,18 +65,6 @@ export const practitionersApi = createApi({
},
providesTags: (result) => ["Practitioner"],
}),
fetchPractitioners: build.query({
query: ({ page = 0, search = ''}) => {
let tail = '?page=' + page;
if (search) {
tail = "?search=" + search + '&page=' + page;
}
return {
url: ADMIN_URI + PROFILES_LIST + tail,
}
},
providesTags: (result) => ["Practitioners"],
}),
fetchOnePractitioner: build.query({
query: (id) => `${ADMIN_URI}${PRACTITIONERS}/${id}`,
providesTags: (result) => ["Practitioner"],
......@@ -104,19 +90,11 @@ export const practitionersApi = createApi({
fetchPractitionerSpecialities: build.query({
query: (id) => HEALTHAPP_URI + SHOW_SPECIALITIES + '/' + id,
providesTags: (result) => ["Specialities"]
}),
deletePractitioner: build.mutation({
query: (id) => ({
url: ADMIN_URI + PRACTITIONERS + "/" + id,
method: 'delete'
}),
providesTags: (result) => ["Practitioners"],
})
}),
})
export const {
useFetchPractitionersQuery,
useFetchOnePractitionerQuery,
useUpdatePractitionerMutation,
useCreatePractitionerMutation,
......@@ -125,6 +103,5 @@ export const {
useGetAboutInfoQuery,
useAddPractitionerSpecialitiesMutation,
useRemovePractitionerSpecialitiesMutation,
useFetchPractitionerSpecialitiesQuery,
useDeletePractitionerMutation
useFetchPractitionerSpecialitiesQuery
} = practitionersApi;
......@@ -14,6 +14,7 @@ const UPLOAD = '/upload';
const ABOUT_INFO = '/api/profile/about-info';
const EDUCATION = '/api/education-train';
const PROFILES = '/api/profiles';
const PROFILES_LIST = '/api/profiles/all';
const PROFILES_ROLES = '/api/profiles/roles';
const PROFILE = '/api/profile';
const API_SETTING_ADDRESS = '/api/settings/address';
......@@ -25,15 +26,27 @@ const PROFILE_INSURANCES = '/api/settings/insurances/profile-insurances-by-uuid'
export const profilesApi = createApi({
reducerPath: 'profilesApi',
baseQuery: baseQueryWithToken,
entityTypes: ["Profile"],
entityTypes: ["Profile", "Practitioners"],
endpoints: (build) => ({
fetchPractitioners: build.query({
query: ({ page = 0, search = ''}) => {
let tail = '?page=' + page;
if (search) {
tail = "?search=" + search + '&page=' + page;
}
return {
url: ADMIN_URI + PROFILES_LIST + tail,
}
},
providesTags: (result) => ["Practitioners"],
}),
createProfile: build.mutation({
query: (data) => ({
url: ADMIN_URI + PROFILES,
method: 'POST',
body: data
}),
invalidatesTags: ["Profile"],
invalidatesTags: ["Profile", "Practitioners"],
}),
updateProfile: build.mutation({
query: ({ id, patch }) => ({
......@@ -41,7 +54,7 @@ export const profilesApi = createApi({
method: 'PATCH',
body: patch
}),
invalidatesTags: ["Profile"],
invalidatesTags: ["Profile", "Practitioners"],
}),
getProfileById: build.query({
query: (id) => ({
......@@ -188,10 +201,18 @@ export const profilesApi = createApi({
}),
invalidatesTags: ["Profile"],
}),
deletePractitioner: build.mutation({
query: (id) => ({
url: ADMIN_URI + PROFILES + "/" + id,
method: 'delete'
}),
invalidatesTags: ["Practitioners"],
})
}),
})
export const {
useFetchPractitionersQuery,
useCreateProfileMutation,
useUpdateProfileMutation,
useUpdateProfileEducationMutation,
......@@ -211,5 +232,6 @@ export const {
useRefreshUserDegreesMutation,
useDeleteUserInsurancesMutation,
useAddUserInsurancesMutation,
useRefreshUserLanguagesMutation
useRefreshUserLanguagesMutation,
useDeletePractitionerMutation
} = profilesApi;
......@@ -38,13 +38,17 @@ const Practitioners = () => {
const navigate = useNavigate();
const [page, setPage] = useState(0);
const [search, setSearch] = useState('');
const [error, setError] = useState('');
const { isLoading, isError, data = {}} = useFetchPractitionersQuery({ page, search });
const { content: practitioners = [], totalElements} = data;
const [
deletePractitioner,
{
isLoading: isDeletionLoading,
isSuccess: isPractitionerDeleted
isSuccess: isPractitionerDeleted,
isError: isDeleteUserError,
error: deleteError,
reset: resetDeletionState
}
] = useDeletePractitionerMutation();
const [open, setOpen] = useState(false);
......@@ -59,8 +63,14 @@ const Practitioners = () => {
const { isLoading: isFetchingOnePractitioner, data: practitioner = {}} = useFetchOnePractitionerQuery(id, {
skip
});
const handleClose = () => setOpen(false);
const handleModalClose = () => setIsModalOpen(false);
const handleClose = () => {
setOpen(false);
}
const handleDeleteModalClose = () => {
setIsModalOpen(false);
resetDeletionState();
setError('');
}
const handleCreateFormClose = () => setIsCreateFormOpen(false);
......@@ -74,8 +84,15 @@ const Practitioners = () => {
setPage(pageNum - 1)
}
useEffect(() => {
if (isDeleteUserError) {
setError(deleteError?.data)
}
}, [isDeleteUserError, deleteError])
useEffect(() => {
if (isPractitionerDeleted) {
handleDeleteModalClose();
setSelectedPractitioners([])
setId(null);
setSkip(true);
......@@ -175,15 +192,19 @@ const Practitioners = () => {
setSearch(event.target.value);
}}
/>
<InputRightElement width='4.5rem' height={'100%'}>
<CloseButton
color='gray.500'
size='sm'
onClick={() => {
setSearch('');
}}
/>
</InputRightElement>
{
search ? (
<InputRightElement width='4.5rem' height={'100%'}>
<CloseButton
color='gray.500'
size='sm'
onClick={() => {
setSearch('');
}}
/>
</InputRightElement>
) : null
}
</InputGroup>
</div>
......@@ -209,6 +230,7 @@ const Practitioners = () => {
<Checkbox
value={item.uuid}
onChange={onChange}
isChecked={selectedPractitioners.includes(item.uuid)}
disabled={open}
/>
</div>
......@@ -317,7 +339,7 @@ const Practitioners = () => {
isOpen={isModalOpen}
isCentered
size='xl'
onClose={() => handleModalClose()}
onClose={() => handleDeleteModalClose()}
aria-labelledby="modal-modal-title"
aria-describedby="modal-modal-description"
>
......@@ -325,8 +347,13 @@ const Practitioners = () => {
<ModalContent>
<ModalHeader>
<div className='modal-window-header'>
{
isDeleteUserError ? (
<div className='error-block'>{error}</div>
) : null
}
<div>Delete practitioner</div>
<div>{`${practitioner?.fullName}`}</div>
<div>{`${practitioner?.firstName} ${practitioner?.lastName}`}</div>
</div>
</ModalHeader>
<ModalCloseButton />
......@@ -336,9 +363,8 @@ const Practitioners = () => {
isLoading={isDeletionLoading}
handleOperation={() => {
deletePractitioner(selectedPractitioners[0]);
handleModalClose();
}}
onClose={() => handleModalClose()}
onClose={() => handleDeleteModalClose()}
/>
</div>
</ModalBody>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment