diff --git a/backend/routers/repairs.py b/backend/routers/repairs.py index e1270df..e41be62 100644 --- a/backend/routers/repairs.py +++ b/backend/routers/repairs.py @@ -125,12 +125,21 @@ def get_repair(repair_id: int, db: Session = Depends(get_db), return _fmt_repair(repair) +def _parse_dt(s: Optional[str]) -> Optional[datetime]: + if not s: return None + try: + return datetime.fromisoformat(s) + except Exception: + return None + @router.post("") async def create_repair( report_ids: str = Form(...), repair_types: str = Form(...), description: str = Form(...), result_status: str = Form("done"), + started_at_input: Optional[str] = Form(None), + completed_at_input: Optional[str] = Form(None), mechanic_lat: Optional[float] = Form(None), mechanic_lng: Optional[float] = Form(None), photos_before: List[UploadFile] = File(default=[]), @@ -138,13 +147,14 @@ async def create_repair( db: Session = Depends(get_db), current_user: models.User = Depends(require_mechanic) ): + now = datetime.now() rids = json.loads(report_ids) repair = models.Repair( mechanic_id=current_user.id, repair_types=json.loads(repair_types), description=description, - started_at=datetime.now(), - completed_at=datetime.now(), + started_at=_parse_dt(started_at_input) or now, + completed_at=_parse_dt(completed_at_input) or now, result_status=result_status, mechanic_lat=mechanic_lat, mechanic_lng=mechanic_lng, @@ -175,6 +185,8 @@ async def update_repair( repair_types: str = Form(...), description: str = Form(...), result_status: str = Form("done"), + started_at_input: Optional[str] = Form(None), + completed_at_input: Optional[str] = Form(None), mechanic_lat: Optional[float] = Form(None), mechanic_lng: Optional[float] = Form(None), photos_before: List[UploadFile] = File(default=[]), @@ -192,7 +204,9 @@ async def update_repair( repair.repair_types = json.loads(repair_types) repair.description = description repair.result_status = result_status - repair.completed_at = datetime.now() + if started_at_input: + repair.started_at = _parse_dt(started_at_input) or repair.started_at + repair.completed_at = _parse_dt(completed_at_input) or datetime.now() if mechanic_lat is not None: repair.mechanic_lat = mechanic_lat if mechanic_lng is not None: repair.mechanic_lng = mechanic_lng diff --git a/frontend/static/pages/mechanic/repair.html b/frontend/static/pages/mechanic/repair.html index 65d6bd5..78e7dab 100644 --- a/frontend/static/pages/mechanic/repair.html +++ b/frontend/static/pages/mechanic/repair.html @@ -81,8 +81,15 @@ -