fix asign shipment to shop
This commit is contained in:
@@ -24,22 +24,63 @@ export const ShipmentManagementModal = ({
|
|||||||
const removeShipmentFromAdminMutation = useRemoveShipmentFromAdmin();
|
const removeShipmentFromAdminMutation = useRemoveShipmentFromAdmin();
|
||||||
|
|
||||||
const shipments = shipmentData?.results?.shipper || [];
|
const shipments = shipmentData?.results?.shipper || [];
|
||||||
const adminShipments: ShipmentMethod[] = adminShopData?.results?.data?.shipmentMethod || [];
|
const adminShipments: ShipmentMethod[] = adminShopData?.results?.data?.shipmentMethod || (adminShopData?.results as { shop?: { shipmentMethod?: ShipmentMethod[] } })?.shop?.shipmentMethod || [];
|
||||||
|
|
||||||
// لیست روشهای ارسال که هنوز به ادمین اضافه نشدهاند
|
// لیست روشهای ارسال که هنوز به ادمین اضافه نشدهاند
|
||||||
const availableShipments = shipments.filter((shipment: Shipper) =>
|
const availableShipments = shipments.filter((shipment: Shipper) => {
|
||||||
!adminShipments.some((adminShipment: ShipmentMethod) => adminShipment._id === shipment._id)
|
// اگر adminShipments خالی باشد، همه shipments را نشان بده
|
||||||
|
if (adminShipments.length === 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// اگر shipment._id وجود داشته باشد، از _id برای مقایسه استفاده کن
|
||||||
|
if (shipment._id != null) {
|
||||||
|
return !adminShipments.some((adminShipment: ShipmentMethod) =>
|
||||||
|
adminShipment._id != null && adminShipment._id === shipment._id
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
// اگر _id وجود نداشته باشد، از name برای مقایسه استفاده کن
|
||||||
|
return !adminShipments.some((adminShipment: ShipmentMethod) =>
|
||||||
|
adminShipment.name === shipment.name
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
const handleAddShipmentToAdmin = async () => {
|
const handleAddShipmentToAdmin = async () => {
|
||||||
if (!selectedShipment) return;
|
if (!selectedShipment) return;
|
||||||
|
|
||||||
await addShipmentToAdminMutation.mutateAsync(Number(selectedShipment), {
|
// اگر value با "index-" شروع شود، یعنی _id وجود ندارد
|
||||||
|
if (selectedShipment.startsWith('index-')) {
|
||||||
|
const index = parseInt(selectedShipment.replace('index-', ''));
|
||||||
|
const shipment = availableShipments[index];
|
||||||
|
if (!shipment || shipment._id == null) {
|
||||||
|
toast.error('شناسه روش ارسال یافت نشد. لطفاً صفحه را رفرش کنید.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await addShipmentToAdminMutation.mutateAsync(Number(shipment._id), {
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
toast.error(extractErrorMessage(error));
|
toast.error(extractErrorMessage(error));
|
||||||
},
|
},
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
refetchAdminShop();
|
refetchAdminShop();
|
||||||
|
setSelectedShipment('');
|
||||||
|
toast.success('روش ارسال با موفقیت اضافه شد');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const shipmentId = Number(selectedShipment);
|
||||||
|
if (isNaN(shipmentId)) {
|
||||||
|
toast.error('شناسه روش ارسال نامعتبر است');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await addShipmentToAdminMutation.mutateAsync(shipmentId, {
|
||||||
|
onError: (error) => {
|
||||||
|
toast.error(extractErrorMessage(error));
|
||||||
|
},
|
||||||
|
onSuccess: () => {
|
||||||
|
refetchAdminShop();
|
||||||
|
setSelectedShipment('');
|
||||||
toast.success('روش ارسال با موفقیت اضافه شد');
|
toast.success('روش ارسال با موفقیت اضافه شد');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -87,12 +128,14 @@ export const ShipmentManagementModal = ({
|
|||||||
placeholder="انتخاب روش ارسال"
|
placeholder="انتخاب روش ارسال"
|
||||||
value={selectedShipment}
|
value={selectedShipment}
|
||||||
onChange={(e: React.ChangeEvent<HTMLSelectElement>) => setSelectedShipment(e.target.value)}
|
onChange={(e: React.ChangeEvent<HTMLSelectElement>) => setSelectedShipment(e.target.value)}
|
||||||
items={availableShipments
|
items={availableShipments.map((shipment: Shipper, index: number) => {
|
||||||
.filter((shipment: Shipper) => shipment._id != null)
|
// اگر _id وجود داشته باشد، از آن استفاده کن، در غیر این صورت از index
|
||||||
.map((shipment: Shipper) => ({
|
const value = shipment._id != null ? String(shipment._id) : `index-${index}`;
|
||||||
value: String(shipment._id),
|
return {
|
||||||
|
value,
|
||||||
label: shipment.name
|
label: shipment.name
|
||||||
}))}
|
};
|
||||||
|
})}
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
label="اضافه کردن"
|
label="اضافه کردن"
|
||||||
|
|||||||
Reference in New Issue
Block a user