public async Task <AccommodationDTO> EditAccommodationInfo(AccommodationEditDTO accommodationInfo) { using (_unitOfWork) { if (!DateManagerService.checkFromToDates(accommodationInfo.From, accommodationInfo.To)) { return(null); } Accommodation accommodation = await _unitOfWork.AccommodationRepository.FindByID(accommodationInfo.AccommodationId); Location location = await _unitOfWork.LocationRepository.FindByID(accommodation.LocationId); accommodation.Type = accommodationInfo.Type; accommodation.Name = accommodationInfo.Name; accommodation.Description = accommodationInfo.Description; accommodation.From = accommodationInfo.From; accommodation.To = accommodationInfo.To; accommodation.Address = accommodationInfo.Address; if (!DateManagerService.checkParentChildDates(location.From, location.To, accommodation.From, accommodation.To)) { return(null); } await _unitOfWork.Save(); AccommodationDTO retValue = _mapper.Map <Accommodation, AccommodationDTO>(accommodation); await _messageControllerService.NotifyOnTripChanges(location.TripId, "EditAccommodation", retValue); return(retValue); } }
public async Task <LocationDTO> EditLocationInfo(LocationEditDTO locationInfo) { using (_unitOfWork) { if (!DateManagerService.checkFromToDates(locationInfo.From, locationInfo.To)) { return(null); } Location location = await _unitOfWork.LocationRepository.GetLocationWithAccommodations(locationInfo.LocationId); if (location.Accommodations != null) { foreach (Accommodation accommodation in location.Accommodations) { if (!DateManagerService.checkParentChildDates(locationInfo.From, locationInfo.To, accommodation.From, accommodation.To)) { return(null); } } } Trip trip = await _unitOfWork.TripRepository.FindByID(location.TripId); location.Name = locationInfo.Name; location.Description = locationInfo.Description; location.From = locationInfo.From; location.To = locationInfo.To; if (!DateManagerService.checkParentChildDates(trip.From, trip.To, location.From, location.To)) { return(null); } await _unitOfWork.Save(); LocationDTO retValue = _mapper.Map <Location, LocationDTO>(location); await _messageControllerService.NotifyOnTripChanges(location.TripId, "EditLocation", retValue); return(retValue); } }
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 <TripDTO> CreateTrip(int userId, TripCreateDTO newTrip) { using (_unitOfWork) { if (!DateManagerService.checkFromToDates(newTrip.From, newTrip.To)) { return(null); } Trip trip = _mapper.Map <TripCreateDTO, Trip>(newTrip); User user = await _unitOfWork.UserRepository.FindByID(userId); if (user.MyTrips == null) { user.MyTrips = new List <Trip>(); } user.MyTrips.Add(trip); if (trip.Travelers == null) { trip.Travelers = new List <User>(); } trip.Travelers.Add(user); AbstractFactory factory = getConcreteFactory(newTrip.TripCategory); trip.AddOn = factory.CreateAddOn(); trip.TripType = factory.CreateTripType(); await _unitOfWork.TripTypeRepository.Create(trip.TripType); await _unitOfWork.TripRepository.Create(trip); _unitOfWork.UserRepository.Update(user); await _unitOfWork.Save(); TripDTO returnTrip = _mapper.Map <Trip, TripDTO>(trip); return(returnTrip); } }
public async Task <LocationDTO> CreateLocation(LocationCreateDTO newLocation) { using (_unitOfWork) { if (!DateManagerService.checkFromToDates(newLocation.From, newLocation.To)) { return(null); } Location location = _mapper.Map <LocationCreateDTO, Location>(newLocation); Trip trip = await _unitOfWork.TripRepository.FindByID(location.TripId); if (!DateManagerService.checkParentChildDates(trip.From, trip.To, location.From, location.To)) { return(null); } location.Trip = trip; if (trip.Locations == null) { trip.Locations = new List <Location>(); } trip.Locations.Add(location); Votable votable = new Votable(); location.Votable = votable; await _unitOfWork.VotableRepository.Create(votable); await _unitOfWork.LocationRepository.Create(location); await _unitOfWork.Save(); LocationDTO retValue = _mapper.Map <Location, LocationDTO>(location); await _messageControllerService.NotifyOnTripChanges(location.TripId, "AddLocation", retValue); return(retValue); } }
public async Task <TripDTO> EditTripInfo(TripEditDTO tripInfo) { using (_unitOfWork) { if (!DateManagerService.checkFromToDates(tripInfo.From, tripInfo.To)) { return(null); } Trip trip = await _unitOfWork.TripRepository.GetTripWithILocations(tripInfo.TripId); if (trip.Locations != null) { foreach (Location location in trip.Locations) { if (!DateManagerService.checkParentChildDates(tripInfo.From, tripInfo.To, location.From, location.To)) { return(null); } } } trip.Name = tripInfo.Name; trip.Description = tripInfo.Description; trip.From = tripInfo.From; trip.To = tripInfo.To; _unitOfWork.TripRepository.Update(trip); await _unitOfWork.Save(); TripDTO returnTrip = _mapper.Map <Trip, TripDTO>(trip); TripBasicDTO notificationTrip = _mapper.Map <Trip, TripBasicDTO>(trip); await _messageControllerService.NotifyOnTripChanges(trip.TripId, "EditTripInfo", notificationTrip); return(returnTrip); } }