Files
Fulfillment-Frontend/src/pages/LeadsPage/tabs/EmployeesTab/hooks/useEmployeesTab.tsx

74 lines
2.2 KiB
TypeScript

import { notifications } from "../../../../../shared/lib/notifications.ts";
import { modals } from "@mantine/modals";
import { useDealPageContext } from "../../../contexts/DealPageContext.tsx";
import { AssignmentSchema, DealService } from "../../../../../client";
const useEmployeesTab = () => {
const { selectedDeal: deal, refetchDeal } = useDealPageContext();
const manageEmployee = (dealId: number, userId: number, isAssign: boolean) => {
DealService.manageEmployee({
requestBody: {
dealId,
userId,
isAssign,
},
})
.then(({ ok, message }) => {
notifications.guess(ok, { message });
refetchDeal();
})
.catch((err) => console.log(err));
};
const onInputFinish = (userIdInput: string) => {
const userId = parseInt(userIdInput);
if (isNaN(userId)) {
notifications.error({ message: "Ошибка, некорректные данные в QR-коде" });
return;
}
if (!deal) return;
manageEmployee(deal.id, userId, true);
};
const onAssignEmployeeByQrClick = () => {
modals.openContextModal({
modal: "scanningModal",
innerProps: {
label: "Отсканируйте QR-код",
onScan: onInputFinish,
closeOnScan: true,
},
withCloseButton: false,
});
};
const onUnassignEmployeeClick = (assignment: AssignmentSchema) => {
if (!deal) return;
manageEmployee(deal.id, assignment.user.id, false);
};
const onAssignEmployeeManuallyClick = () => {
if (!deal) return;
modals.openContextModal({
modal: "assignUserModal",
title: `Назначение исполнителя`,
withCloseButton: false,
innerProps: {
deal,
manageEmployee,
},
});
};
return {
onAssignEmployeeByQrClick,
onAssignEmployeeManuallyClick,
onUnassignEmployeeClick,
};
};
export default useEmployeesTab;