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