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