Files
bodyshop/client/src/components/parts-dispatch-expander/parts-dispatch-expander.component.jsx
2025-01-21 17:20:46 -08:00

78 lines
2.4 KiB
JavaScript

import { useMutation } from "@apollo/client";
import { Button, Card, Col, Row, Table } from "antd";
import dayjs from "../../utils/day";
import React from "react";
import { useTranslation } from "react-i18next";
import { UPDATE_PARTS_DISPATCH_LINE } from "../../graphql/parts-dispatch.queries";
import { DateTimeFormatter } from "../../utils/DateFormatter";
import { useNotification } from "../../contexts/Notifications/notificationContext.jsx";
export default function PartsDispatchExpander({ dispatch, job }) {
const { t } = useTranslation();
const [updateDispatchLine] = useMutation(UPDATE_PARTS_DISPATCH_LINE);
const notification = useNotification();
const handleAccept = async ({ partsDispatchLineId }) => {
const accepted_at = dayjs();
const result = await updateDispatchLine({
variables: { id: partsDispatchLineId, line: { accepted_at } },
optimisticResponse: {
update_parts_dispatch_lines_by_pk: {
accepted_at,
id: partsDispatchLineId
}
}
});
if (result.errors) {
notification.open({
type: "error",
message: t("parts_dispatch.errors.accepting", {
error: JSON.stringify(result.errors)
})
});
}
};
const columns = [
{
title: t("joblines.fields.part_qty"),
dataIndex: "quantity",
key: "quantity",
width: "10%"
//sorter: (a, b) => alphaSort(a.number, b.number),
},
{
title: t("joblines.fields.line_desc"),
dataIndex: "joblineid",
key: "joblineid",
//sorter: (a, b) => alphaSort(a.number, b.number),
render: (text, record) => record.jobline.line_desc
},
{
title: t("parts_dispatch_lines.fields.accepted_at"),
dataIndex: "accepted_at",
key: "accepted_at",
width: "20%",
//sorter: (a, b) => alphaSort(a.number, b.number),
render: (text, record) =>
record.accepted_at ? (
<DateTimeFormatter>{record.accepted_at}</DateTimeFormatter>
) : (
<Button onClick={() => handleAccept({ partsDispatchLineId: record.id })}>
{t("parts_dispatch.actions.accept")}
</Button>
)
}
];
return (
<Card>
<Row gutter={[16, 16]}>
<Col span={24}>
<Table rowKey={"id"} dataSource={dispatch.parts_dispatch_lines} columns={columns} />
</Col>
</Row>
</Card>
);
}