diff --git a/web/src/layouts/CatalogueGroups.tsx b/web/src/layouts/CatalogueGroups.tsx index 9028064..897efd3 100644 --- a/web/src/layouts/CatalogueGroups.tsx +++ b/web/src/layouts/CatalogueGroups.tsx @@ -1,7 +1,6 @@ import { PlusOutlined } from '@ant-design/icons'; import { Button, Space } from 'antd'; import { useEffect, useState } from 'react'; -import { ApiError } from '../api/client'; import PageTitle from '../components/PageTitle'; import { createCatalogueJur } from '../services/api/directories/catalogue_jur'; import { createCompanyGroup, fetchRelatedGroups } from '../services/api/directories/company_groups'; @@ -13,7 +12,6 @@ import type { RelatedGroupOut } from '../types/api'; import type { CatalogueJurFormProps } from '../types/catalogueJur/catalogueJur'; import type { CreateCompanyGroupProps } from '../types/companyGroups/companyGroups'; import type { CreateEntityKind, RelatedGroupFormType } from '../types/relatedGroup/relatedGroup'; -import { useNotificationApi } from '../utils/useNotification'; import { CataloguGroupTabs, type CatalogueGroupTabKey } from '../widgets/CataloguGroupTabs/CataloguGroupTabs'; import { CompanyGroupHeader } from '../widgets/CatalogueGroupHeader/CatalogueGroupHeader'; import { CatalogueJurForm } from '../widgets/CatalogueJurForm/CatalogueJurForm'; @@ -26,7 +24,6 @@ import { RelatedGroupTable } from '../widgets/RelatedGroupTable/RelatedGroupTabl export function CatalogueGroup() { const dispatch = useAppDispatch(); - const notification = useNotificationApi(); const isGettingArchive = useAppSelector((state) => state.catalogue_jur.isGettingArchive); @@ -53,55 +50,30 @@ export function CatalogueGroup() { } async function createRelatedGroupHandler(values: RelatedGroupFormType) { if (values.company_group_id) { - try { - await createRelatedGroup(values.company_group_id, { - ...values, - company_group_id: undefined, - }); - getRelatedGroupsHandler(); - setKindForm(null); - } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } - } + await createRelatedGroup(values.company_group_id, { + ...values, + company_group_id: undefined, + }); + getRelatedGroupsHandler(); + setKindForm(null); } } async function createCompanyGroupHandler(values: CreateCompanyGroupProps) { - try { - await createCompanyGroup(values); - dispatch(getCompanyGroupsThunk()); - getRelatedGroupsHandler(); - setKindForm(null); - } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } - } + await createCompanyGroup(values); + dispatch(getCompanyGroupsThunk()); + getRelatedGroupsHandler(); + setKindForm(null); } async function getRelatedGroupsHandler() { if (activeCompanyGroup?.id) { setRelatedGroupLoading(true); - try { - const res = await fetchRelatedGroups(activeCompanyGroup?.id); - const gsks = res.filter((elem) => elem.kind === 'gsk'); - const gszs = res.filter((elem) => elem.kind === 'gsz'); - setGskData(gsks); - setGszData(gszs); - } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } - } finally { - setRelatedGroupLoading(false); - } + const res = await fetchRelatedGroups(activeCompanyGroup?.id); + const gsks = res.filter((elem) => elem.kind === 'gsk'); + const gszs = res.filter((elem) => elem.kind === 'gsz'); + setGskData(gsks); + setGszData(gszs); + setRelatedGroupLoading(false); } } @@ -197,9 +169,7 @@ export function CatalogueGroup() { onCancel={() => { setKindForm(null); }} - onOk={async (values) => { - await createRelatedGroupHandler(values); - }} + onOk={createRelatedGroupHandler} /> )} {kindForm === 'gk' && ( @@ -208,9 +178,7 @@ export function CatalogueGroup() { onCancel={() => { setKindForm(null); }} - onOk={async (values) => { - await createCompanyGroupHandler(values); - }} + onOk={createCompanyGroupHandler} /> )} diff --git a/web/src/layouts/CatalogueJur.tsx b/web/src/layouts/CatalogueJur.tsx index 3b2ac3b..8919f11 100644 --- a/web/src/layouts/CatalogueJur.tsx +++ b/web/src/layouts/CatalogueJur.tsx @@ -1,41 +1,30 @@ import { PlusOutlined } from '@ant-design/icons'; import { Button, Space } from 'antd'; import { useState } from 'react'; -import { ApiError } from '../api/client'; import PageTitle from '../components/PageTitle'; import { createCatalogueJur } from '../services/api/directories/catalogue_jur'; import { getCatalogueJurThunk } from '../store/slices/catalogueJurSlice/thunks'; import { useAppDispatch, useAppSelector } from '../store/store'; import type { CatalogueJurFormProps } from '../types/catalogueJur/catalogueJur'; -import { useNotificationApi } from '../utils/useNotification'; import { CatalogueJurForm } from '../widgets/CatalogueJurForm/CatalogueJurForm'; import { CatalogueJurTable } from '../widgets/CatalogueJurTable/CatalogueJurTable'; export function CatalogueJur() { const dispatch = useAppDispatch(); - const notification = useNotificationApi(); const isGettingArchive = useAppSelector((state) => state.catalogue_jur.isGettingArchive); const [createFormOpen, setCreateFormOpen] = useState(false); const outside_group = true; async function createJurHandler(values: CatalogueJurFormProps) { - try { - await createCatalogueJur(values); - dispatch( - getCatalogueJurThunk({ - closed: isGettingArchive, - outside_group: outside_group, - }), - ); - setCreateFormOpen(false); - } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } - } + await createCatalogueJur(values); + dispatch( + getCatalogueJurThunk({ + closed: isGettingArchive, + outside_group: outside_group, + }), + ); + setCreateFormOpen(false); } return ( @@ -59,9 +48,7 @@ export function CatalogueJur() { onCancel={() => { setCreateFormOpen(false); }} - onOk={async (values) => { - await createJurHandler(values); - }} + onOk={createJurHandler} /> )} diff --git a/web/src/widgets/CatalogueJurForm/CatalogueJurForm.tsx b/web/src/widgets/CatalogueJurForm/CatalogueJurForm.tsx index e2193b8..a54cad8 100644 --- a/web/src/widgets/CatalogueJurForm/CatalogueJurForm.tsx +++ b/web/src/widgets/CatalogueJurForm/CatalogueJurForm.tsx @@ -124,6 +124,14 @@ export const CatalogueJurForm: React.FC = ({ open, onCancel, onOk, jurId }, ]); } + if (e.code === 'CRM_ID_EXISTS') { + form.setFields([ + { + name: 'crm_id', + errors: [e.message], + }, + ]); + } notification.error({ description: e.message }); } } finally { diff --git a/web/src/widgets/CatalogueJurTable/CatalogueJurTable.tsx b/web/src/widgets/CatalogueJurTable/CatalogueJurTable.tsx index 6149d2d..9dfe714 100644 --- a/web/src/widgets/CatalogueJurTable/CatalogueJurTable.tsx +++ b/web/src/widgets/CatalogueJurTable/CatalogueJurTable.tsx @@ -122,21 +122,13 @@ export function CatalogueJurTable({ outside_group, tabsComponent }: CatalogueJur } async function editJurHandler(values: CatalogueJurFormProps) { - try { - await editCatalogueJur(jurId, values); - getCatalogueJur(); - closeEditCatalogueJurHandler(); - } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } - } + await editCatalogueJur(jurId, values); + getCatalogueJur(); + closeEditCatalogueJurHandler(); } useEffect(() => { - getCatalogueJur(); + getCatalogueJur(); }, [isGettingArchive, activeCompanyGroup, outside_group]); const extraColumns: ColumnsType = useMemo( @@ -327,9 +319,7 @@ export function CatalogueJurTable({ outside_group, tabsComponent }: CatalogueJur onCancel={() => { closeEditCatalogueJurHandler(); }} - onOk={async (values) => { - await editJurHandler(values); - }} + onOk={editJurHandler} /> )} diff --git a/web/src/widgets/CompanyGroupForm/CompanyGroupForm.tsx b/web/src/widgets/CompanyGroupForm/CompanyGroupForm.tsx index c5274e3..76e31f6 100644 --- a/web/src/widgets/CompanyGroupForm/CompanyGroupForm.tsx +++ b/web/src/widgets/CompanyGroupForm/CompanyGroupForm.tsx @@ -49,6 +49,14 @@ export const CompanyGroupForm: React.FC = ({ open, onCancel, onOk }) => { }); } catch (e) { if (e instanceof ApiError) { + if (e.code === 'CRM_ID_EXISTS') { + form.setFields([ + { + name: 'crm_id', + errors: [e.message], + }, + ]); + } notification.error({ description: e.message, }); diff --git a/web/src/widgets/RelatedGroupForm/RelatedGroupForm.tsx b/web/src/widgets/RelatedGroupForm/RelatedGroupForm.tsx index 5cae809..ec63a23 100644 --- a/web/src/widgets/RelatedGroupForm/RelatedGroupForm.tsx +++ b/web/src/widgets/RelatedGroupForm/RelatedGroupForm.tsx @@ -59,7 +59,7 @@ export const RelatedGroupForm: React.FC = ({ open, onCancel, onOk, relate try { const { created_date, name, crm_id, company_group_id } = await form.validateFields(); await onOk({ - created_date: created_date ?? (relatedGroupId ? null : dayjs().format('YYYY-MM-DD') ), + created_date: created_date ?? (relatedGroupId ? null : dayjs().format('YYYY-MM-DD')), name, crm_id, company_group_id: relatedGroupId ? undefined : company_group_id, @@ -67,6 +67,14 @@ export const RelatedGroupForm: React.FC = ({ open, onCancel, onOk, relate }); } catch (e) { if (e instanceof ApiError) { + if (e.code === 'CRM_ID_EXISTS') { + form.setFields([ + { + name: 'crm_id', + errors: [e.message], + }, + ]); + } notification.error({ description: e.message, }); @@ -101,8 +109,8 @@ export const RelatedGroupForm: React.FC = ({ open, onCancel, onOk, relate loading={initialDataLoading} confirmLoading={confirmLoading}>
- - + + diff --git a/web/src/widgets/RelatedGroupTable/RelatedGroupTable.tsx b/web/src/widgets/RelatedGroupTable/RelatedGroupTable.tsx index e591330..f3a842a 100644 --- a/web/src/widgets/RelatedGroupTable/RelatedGroupTable.tsx +++ b/web/src/widgets/RelatedGroupTable/RelatedGroupTable.tsx @@ -62,17 +62,9 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ } async function editRelatedGroupHandler(values: RelatedGroupFormType) { - try { - await editRelatedGroup(groupId, values); - getData(); - closeEditRelatedGroupHandler(); - } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } - } + await editRelatedGroup(groupId, values); + getData(); + closeEditRelatedGroupHandler(); } const extraColumns: ColumnsType = useMemo( @@ -167,9 +159,7 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ onCancel={() => { closeEditRelatedGroupHandler(); }} - onOk={async (values) => { - await editRelatedGroupHandler(values); - }} + onOk={editRelatedGroupHandler} /> )} {deleteModalOpen && (