public async Task <bool> UpdateVehicleAssignments(int id, VehicleAssignmentDTO model) { if (model is null) { return(false); } var vehicle = await _vehicleRepo.GetAsync(id); if (vehicle == null) { return(false); } var driver = (await _driversvc.FirstOrDefaultAsync(c => c.Code == model.PryDriver)); if (driver == null) { throw new LMEGenericException($"Driver ({model.PryDriver}) not found"); } Driver handOverDriver = null; if (!string.IsNullOrEmpty(model.NewHandOverDriverCode)) { handOverDriver = (await _driversvc.FirstOrDefaultAsync(c => c.Code == model.NewHandOverDriverCode)); if (handOverDriver == null) { throw new LMEGenericException($"Hand over driver ({model.NewHandOverDriverCode}) not found"); } } // Set primary captain vehicle/ but first take away current captain from this vehicle if (driver.VehicleRegistrationNumber != vehicle.RegistrationNumber) { var currAssignedCaptains = await _driversvc.GetDriverByBusNumberAsync(vehicle.RegistrationNumber); if (currAssignedCaptains != null && currAssignedCaptains.Code != model.PryDriver) { var curPry = await _driversvc.GetAsync(currAssignedCaptains.Id); if (curPry == null) { throw new LMEGenericException($"Unable to load previous owner of vehicle({vehicle.RegistrationNumber}) for deassignement"); } curPry.VehicleRegistrationNumber = ""; } } driver.VehicleRegistrationNumber = vehicle.RegistrationNumber; await _unitOfWork.SaveChangesAsync(); return(true); }
public async Task <ServiceResponse <bool> > UpdateVehicleAssignments(int id, VehicleAssignmentDTO model) { return(await HandleApiOperationAsync(async() => { var result = await _vehicleService.UpdateVehicleAssignments(id, model); return new ServiceResponse <bool> { Object = result }; })); }