Exemplo n.º 1
0
        public async Task <TripResponse> GetAuthorizedListAsync(FilterTripRequest filterTripRequest, int userId, string currentCulture)
        {
            if (filterTripRequest == null)
            {
                throw new ArgumentNullException(nameof(filterTripRequest));
            }

            var trips = await _tripStorage.GetAuthorizedListAsync(filterTripRequest, userId);

            var pathToUserDirectory = Path.Combine(_appEnvironment.WebRootPath, "Photos", "Users");

            var tripsForListDto = new List <TripForListDto>();

            foreach (var trip in trips)
            {
                var targetPath   = Path.Combine(pathToUserDirectory, $"{trip.User.Login}");
                var targetImages = new List <string>();
                if (Directory.Exists(targetPath))
                {
                    targetImages = Directory.GetFiles(targetPath, "*_icon.jpeg").ToList();
                }
                var tripDto = new TripForListDto
                {
                    Id           = trip.Id,
                    UserName     = trip.User.FirstName,
                    DateFrom     = trip.DateFrom,
                    DateTo       = trip.DateTo,
                    IsCompleted  = trip.IsCompleted,
                    IsDeleted    = trip.IsDeleted,
                    UserLogin    = trip.User.Login,
                    ImageUri     = $"https://www.amver.net/Photos/Countries/{trip.ToCountry.Name}/{trip.ToCountry.Name}_main.png",
                    UserImageUri = targetImages.Any() ? $"https://www.amver.net/Photos/Users/{trip.User.Login}/{Path.GetFileName(targetImages.First())}" : Path.Combine("https://www.amver.net", "images", "userAccountIcon.png")
                };
                switch (currentCulture)
                {
                case Cultures.Ru:
                    tripDto.FromCity    = trip.FromCity.ruRu;
                    tripDto.FromCountry = trip.FromCountry == null ? string.Empty : trip.FromCity.Country.ruRu;
                    tripDto.ToCity      = trip.ToCity == null ? string.Empty : trip.ToCity.ruRu;
                    tripDto.ToCountry   = trip.ToCountry.ruRu;
                    break;

                default:
                    tripDto.FromCity    = trip.FromCity.Name;
                    tripDto.FromCountry = trip.FromCountry == null ? string.Empty : trip.FromCity.Country.Name;
                    tripDto.ToCity      = trip.ToCity == null ? string.Empty : trip.ToCity.Name;
                    tripDto.ToCountry   = trip.ToCountry.Name;
                    break;
                }
                tripsForListDto.Add(tripDto);
            }

            var tripResponse = new TripResponse
            {
                Trips = tripsForListDto,
                Count = tripsForListDto.Count
            };

            return(tripResponse);
        }
Exemplo n.º 2
0
        public async Task <ActionResult <TripResponse> > GetListAsync(
            [FromBody, BindRequired] FilterTripRequest filterTripRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var currentCulture = _customRequestCultureProvider.DetermineProviderCultureResult(HttpContext);

            return(await _tripService.GetListAsync(filterTripRequest, currentCulture));
        }
Exemplo n.º 3
0
        private IQueryable <Trip> GetTripQuery(IQueryable <Trip> queryableTrip, FilterTripRequest filterTripRequest)
        {
            if (queryableTrip == null)
            {
                throw new ArgumentNullException(nameof(queryableTrip));
            }
            if (filterTripRequest == null)
            {
                throw new ArgumentNullException(nameof(filterTripRequest));
            }

            queryableTrip = queryableTrip.Include(x => x.ToCountry);
            queryableTrip = queryableTrip.Include(x => x.ToCity);
            queryableTrip = queryableTrip.Include(x => x.FromCity);
            queryableTrip = queryableTrip.Include(x => x.FromCountry);


            if (filterTripRequest.ToCountry != default)
            {
                queryableTrip = queryableTrip.Where(x => x.ToCountryId == filterTripRequest.ToCountry);
            }

            if (filterTripRequest.ToCity != default)
            {
                queryableTrip = queryableTrip.Where(x => x.ToCityId == filterTripRequest.ToCity);
            }

            if (filterTripRequest.FromCountry != default)
            {
                queryableTrip = queryableTrip.Where(x => x.FromCountryId == filterTripRequest.FromCountry);
            }

            if (filterTripRequest.FromCity != default)
            {
                queryableTrip = queryableTrip.Where(x => x.FromCityId == filterTripRequest.FromCity);
            }

            if (filterTripRequest.DateFrom != default)
            {
                queryableTrip = queryableTrip.Where(x => x.DateFrom >= filterTripRequest.DateFrom);
            }

            if (filterTripRequest.CompanionGender != default)
            {
                queryableTrip = queryableTrip.Where(x => x.User.GenderId == (int)filterTripRequest.CompanionGender);
            }

            return(queryableTrip);
        }
Exemplo n.º 4
0
        public async Task <IEnumerable <Trip> > GetListAsync(FilterTripRequest filterTripRequest)
        {
            if (filterTripRequest == null)
            {
                throw new ArgumentNullException(nameof(filterTripRequest));
            }

            using (var context = _contextFactory.CreateContext())
            {
                var queryableTrip = context.Trips.Include(x => x.User).AsQueryable();

                queryableTrip = GetTripQuery(queryableTrip, filterTripRequest);

                return(await queryableTrip.AsNoTracking().Where(x => !x.IsCompleted && !x.IsDeleted && !x.IsBanned && !x.User.IsBanned)
                       .OrderByDescending(x => x.CreatedDate).ToListAsync());
            }
        }
Exemplo n.º 5
0
        public async Task <ActionResult <TripResponse> > GetAuthorizedListAsync(
            [FromBody, BindRequired] FilterTripRequest filterTripRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var currentCulture = _customRequestCultureProvider.DetermineProviderCultureResult(HttpContext);

            var login    = HttpContext.User.Identity.Name;
            var userAuth = await _authService.GetActiveUserByLoginAsNoTrackingAsync(login);

            if (userAuth.ForceRelogin)
            {
                throw new UnauthorizedException(string.Empty);
            }
            return(await _tripService.GetAuthorizedListAsync(filterTripRequest, userAuth.UserId, currentCulture));
        }
Exemplo n.º 6
0
        public async Task <IEnumerable <Trip> > GetAuthorizedListAsync(FilterTripRequest filterTripRequest, int userId)
        {
            if (filterTripRequest == null)
            {
                throw new ArgumentNullException(nameof(filterTripRequest));
            }

            using (var context = _contextFactory.CreateContext())
            {
                var queryableTrip = context.Trips.Include(x => x.User).AsQueryable();

                queryableTrip = GetTripQuery(queryableTrip, filterTripRequest);

                var notAccessibleUserIds = context.UserToBlockedUsers.Where(x => x.BlockedUserId == userId)
                                           .Select(x => x.UserId);

                return(await queryableTrip.AsNoTracking().Where(x =>
                                                                !x.IsCompleted && !x.IsDeleted && !x.IsBanned && !x.User.IsBanned &&
                                                                !notAccessibleUserIds.Contains(x.UserId) && x.User.Id != userId)
                       .OrderByDescending(x => x.CreatedDate).ToListAsync());
            }
        }