public async Task <JoinTravelResponse> JoinTravel(JoinTravelRequest request) { var jsonDataList = await Read(); var data = jsonDataList.FirstOrDefault(x => x.Id == request.Id); if (data == null) { return new JoinTravelResponse { Id = "0", Message = "Not Found" } } ; if (data.AvailableSeatingCapacity < request.SeatingCount) { return new JoinTravelResponse { Id = "0", Message = "Seating Capacity is not available" } } ; data.AvailableSeatingCapacity = data.AvailableSeatingCapacity - request.SeatingCount; await Write(jsonDataList); return(new JoinTravelResponse { Id = request.Id }); }
public async Task <ActionResult <Travel> > JoinTravels(int id, [FromBody] JoinTravelRequest request) { try { var travel = await _travelRepository.FindById(request.Id); var employeeTravels = await _employeeTravelRepository.FindByTravelId(request.Id); var travelMain = await _travelRepository.FindById(id); if (Math.Abs((travel.StartTime - travelMain.StartTime).Days) <= 1) { foreach (var employeeTravel in employeeTravels) { employeeTravel.Travel = travelMain; await _employeeTravelRepository.Update(employeeTravel); } await _travelRepository.Delete(travel); return(Ok()); } else { return(Conflict("Too different start dates")); } } catch (ArgumentException e) { return(Conflict(e.Message)); } catch (InvalidOperationException e) { return(Conflict(e.Message)); } }