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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #6
0
        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);
            }
        }