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));
            }
        }