diff --git a/backend/app/routers/logistics.py b/backend/app/routers/logistics.py index 0ae75a3..faefb8a 100644 --- a/backend/app/routers/logistics.py +++ b/backend/app/routers/logistics.py @@ -228,7 +228,6 @@ async def get_all_slots(db: Session = Depends(get_db)): .first() ) - # Determine if the dewar is at the beamline if last_event: if last_event.event_type == "beamline": at_beamline = True @@ -243,6 +242,22 @@ async def get_all_slots(db: Session = Depends(get_db)): beamlineLocation = ( associated_slot.label if associated_slot else None ) + elif last_event.event_type == "refill" and last_event.slot_id in [ + 47, + 48, + 49, + ]: + # Check if last event is a refill and slot_id matches beamline slots + at_beamline = True + retrievedTimestamp = last_event.timestamp.isoformat() + associated_slot = ( + db.query(SlotModel) + .filter(SlotModel.id == last_event.slot_id) + .first() + ) + beamlineLocation = ( + associated_slot.label if associated_slot else None + ) elif last_event.event_type == "returned": at_beamline = False @@ -291,10 +306,18 @@ async def refill_dewar(qr_code: str, db: Session = Depends(get_db)): raise HTTPException(status_code=404, detail="Dewar not found") now = datetime.now() + # Retrieve the last associated slot_id for the dewar + last_event = ( + db.query(LogisticsEventModel) + .filter(LogisticsEventModel.dewar_id == dewar.id) + .order_by(LogisticsEventModel.timestamp.desc()) + .first() + ) + slot_id = last_event.slot_id if last_event else None new_event = LogisticsEventModel( dewar_id=dewar.id, - slot_id=None, + slot_id=slot_id, event_type="refill", timestamp=now, ) diff --git a/logistics/src/pages/LogisticsView.tsx b/logistics/src/pages/LogisticsView.tsx index 51e1a6b..1c7ae3a 100644 --- a/logistics/src/pages/LogisticsView.tsx +++ b/logistics/src/pages/LogisticsView.tsx @@ -461,7 +461,7 @@ const LogisticsView: React.FC = () => { {`Occupied: ${selectedSlotData.occupied ? 'Yes' : 'No'}`} {`Needs Refill: ${selectedSlotData.needsRefillWarning ? 'Yes' : 'No'}`} {`Time Until Refill: ${selectedSlotData.time_until_refill ?? 'N/A'}`} - {`Retrieved Timestamp: ${formatTimestamp(selectedSlotData.retrievedTimestamp)}`} + {`Last Event: ${formatTimestamp(selectedSlotData.retrievedTimestamp)}`} {`Local Contact: ${selectedSlotData.local_contact}`} {`Beamline Location: ${selectedSlotData.beamlineLocation || 'N/A'}`}