better support of add and delete dewar to a shipment
This commit is contained in:
@ -29,6 +29,11 @@ const ShipmentDetails: React.FC<ShipmentDetailsProps> = ({
|
||||
tracking_number: '',
|
||||
});
|
||||
|
||||
// To reset localSelectedDewar when selectedShipment changes
|
||||
React.useEffect(() => {
|
||||
setLocalSelectedDewar(null);
|
||||
}, [selectedShipment]);
|
||||
|
||||
const totalPucks = selectedShipment.dewars.reduce((acc, dewar) => acc + (dewar.number_of_pucks || 0), 0);
|
||||
const totalSamples = selectedShipment.dewars.reduce((acc, dewar) => acc + (dewar.number_of_samples || 0), 0);
|
||||
|
||||
@ -38,13 +43,23 @@ const ShipmentDetails: React.FC<ShipmentDetailsProps> = ({
|
||||
setSelectedDewar(newSelection);
|
||||
};
|
||||
|
||||
const handleDeleteDewar = () => {
|
||||
if (localSelectedDewar) {
|
||||
const confirmed = window.confirm('Are you sure you want to delete this dewar?');
|
||||
if (confirmed) {
|
||||
const updatedDewars = selectedShipment.dewars.filter(dewar => dewar.tracking_number !== localSelectedDewar.tracking_number);
|
||||
setSelectedShipment((prev) => ({ ...prev, dewars: updatedDewars }));
|
||||
const handleDeleteDewar = async (dewarId: string) => {
|
||||
const confirmed = window.confirm('Are you sure you want to delete this dewar?');
|
||||
if (confirmed) {
|
||||
try {
|
||||
console.log('Selected Shipment ID:', selectedShipment.shipment_id);
|
||||
console.log('Dewar ID to be deleted:', dewarId);
|
||||
|
||||
const updatedShipment = await DefaultService.removeDewarFromShipmentShipmentsShipmentIdRemoveDewarDewarIdDelete(
|
||||
selectedShipment.shipment_id, dewarId
|
||||
);
|
||||
|
||||
// Ensure state is updated with server response
|
||||
setSelectedShipment(updatedShipment);
|
||||
setLocalSelectedDewar(null);
|
||||
} catch (error) {
|
||||
console.error('Failed to delete dewar:', error);
|
||||
alert('Failed to delete dewar. Please try again.');
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -57,15 +72,6 @@ const ShipmentDetails: React.FC<ShipmentDetailsProps> = ({
|
||||
}));
|
||||
};
|
||||
|
||||
const addDewarToList = (currentDewars: Array<Dewar>, newDewar: Dewar): Array<Dewar> => {
|
||||
return [...currentDewars, newDewar];
|
||||
};
|
||||
|
||||
const updateDewarsState = (prev: Shipment_Input, createdDewar: Dewar): Shipment_Input => {
|
||||
const updatedDewars = addDewarToList(prev.dewars, createdDewar);
|
||||
return { ...prev, dewars: updatedDewars };
|
||||
};
|
||||
|
||||
const handleAddDewar = async () => {
|
||||
if (selectedShipment && newDewar.dewar_name) {
|
||||
try {
|
||||
@ -100,15 +106,15 @@ const ShipmentDetails: React.FC<ShipmentDetailsProps> = ({
|
||||
if (updatedShipment) {
|
||||
setSelectedShipment(updatedShipment);
|
||||
} else {
|
||||
throw new Error("Failed to update shipment with new dewar");
|
||||
throw new Error('Failed to update shipment with new dewar');
|
||||
}
|
||||
|
||||
setIsAddingDewar(false);
|
||||
setNewDewar({ dewar_name: '', tracking_number: '' });
|
||||
|
||||
} catch (error) {
|
||||
alert("Failed to add dewar or update shipment. Please try again.");
|
||||
console.error("Error adding dewar or updating shipment:", error);
|
||||
alert('Failed to add dewar or update shipment. Please try again.');
|
||||
console.error('Error adding dewar or updating shipment:', error);
|
||||
}
|
||||
} else {
|
||||
alert('Please fill in the Dewar Name');
|
||||
@ -224,9 +230,9 @@ const ShipmentDetails: React.FC<ShipmentDetailsProps> = ({
|
||||
justifyContent: 'space-between'
|
||||
}}>
|
||||
<CustomStepper dewar={dewar} />
|
||||
{localSelectedDewar?.tracking_number === dewar.tracking_number && (
|
||||
{localSelectedDewar?.id === dewar.id && (
|
||||
<Button
|
||||
onClick={handleDeleteDewar}
|
||||
onClick={() => handleDeleteDewar(dewar.id)} // <--- Pass the dewar ID here
|
||||
color="error"
|
||||
sx={{
|
||||
minWidth: '40px',
|
||||
|
Reference in New Issue
Block a user