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

74 lines
2.2 KiB
TypeScript

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