public async Task <IActionResult> Put([FromBody] TravelPlanUpdateRequest request) { try { await _travelPlanService.Update(request); return(Ok()); } catch (EntityNotFoundException) { return(NotFound()); } }
public async Task Update(TravelPlanUpdateRequest request) { // TODO: write custom NotFound exception and middleware to catch it var model = await unitOfWork.TravelPlans.GetById(request.TravelPlanId) ?? throw new EntityNotFoundException($"Travel plan with ID = {request.TravelPlanId} does not exist."); model.StartLocation = request.StartLocation; model.EndLocation = request.EndLocation; model.StartDate = request.StartDate.Date; model.EndDate = request.EndDate.Date; model.CarId = request.CarId; var employeeTravelPlanMappings = request.EmployeeIds.Select(employeeId => new EmployeeTravelPlanMapping { EmployeeId = employeeId, }).ToList(); // Delete old mappings before setting new ones unitOfWork.EmployeeTravelPlanMappings.DeleteRange(model.EmployeeTravelPlanMappings); model.EmployeeTravelPlanMappings = employeeTravelPlanMappings; unitOfWork.TravelPlans.Update(model); await unitOfWork.Commit(); }