public async Task <AccommodationDTO> CreateAccommodation(AccommodationCreateDTO newAccommodation) { using (_unitOfWork) { if (!DateManagerService.checkFromToDates(newAccommodation.From, newAccommodation.To)) { return(null); } Accommodation accommodation = _mapper.Map <AccommodationCreateDTO, Accommodation>(newAccommodation); Location location = await _unitOfWork.LocationRepository.FindByID(newAccommodation.LocationId); if (!DateManagerService.checkParentChildDates(location.From, location.To, accommodation.From, accommodation.To)) { return(null); } accommodation.Location = location; if (location.Accommodations == null) { location.Accommodations = new List <Accommodation>(); } location.Accommodations.Add(accommodation); Votable votable = new Votable(); accommodation.Votable = votable; await _unitOfWork.VotableRepository.Create(votable); await _unitOfWork.AccommodationRepository.Create(accommodation); await _unitOfWork.Save(); AccommodationDTO retValue = _mapper.Map <Accommodation, AccommodationDTO>(accommodation); await _messageControllerService.NotifyOnTripChanges(location.TripId, "AddAccommodation", retValue); return(retValue); } }
public async Task <ActionResult> CreateAccommodation(int tripId, [FromBody] AccommodationCreateDTO newAccommodation) { try { if (!await _editRightsService.HasEditRights(tripId)) { return(BadRequest(new JsonResult("You can't currently edit this trip."))); } AccommodationDTO result = await _accommodationService.CreateAccommodation(newAccommodation); await _editRightsService.ProlongEditRights(tripId, _redisAppSettings.EditRightsProlongedTTL); if (result != null) { return(Ok(result)); } return(BadRequest(new JsonResult("Accommodation dates are not valid."))); } catch (Exception ex) { return(BadRequest(ex.Message)); } }