private void SetAdvertisementsListKind(Intent intent = null) { //sytuacja gdy activity jest wywo³ywane z serwisu sprawdzaj¹cego nowosci if (this.advertisementsSearchModel == null) { this.advertisementsSearchModel = new AdvertisementsSearchModel(); } string kindExtra; if (intent != null) { kindExtra = intent.GetStringExtra(ExtrasKeys.NEW_ADVERTISEMENT_KIND); } else { kindExtra = Intent.GetStringExtra(ExtrasKeys.NEW_ADVERTISEMENT_KIND); } if (kindExtra != null) { this.advertisementsSearchModel.AdvertisementsKind = JsonConvert.DeserializeObject <AdvertisementsKind>(kindExtra); this.advertisementsSearchModel.SortingBy = SortingBy.sortByNewest; ChangeFabOpenFilterOptionsDependsOnSelectedOptions(); } if (this.advertisementsSearchModel.AdvertisementsKind == default(AdvertisementsKind)) { this.advertisementsSearchModel.AdvertisementsKind = AdvertisementsKind.AdvertisementsAroundUserCurrentLocation; } }
public AdvertisementsSearchModel RestorePreviousValues() { var searchModel = new AdvertisementsSearchModel(); searchModel.TransactionKind = TransactionKind; searchModel.ExpiredAdvertisements = ExpiredAdvertisements; searchModel.SortingBy = SortingBy; searchModel.Sizes.AddRange(Sizes); foreach (var cat in CategoriesModel) { CategoriesModel.Add(cat); } searchModel.AdvertisementsKind = AdvertisementsKind; searchModel.CoordinatesModel.Latitude = CoordinatesModel.Latitude; searchModel.CoordinatesModel.LocationAddress = CoordinatesModel.LocationAddress; searchModel.CoordinatesModel.Longitude = CoordinatesModel.Longitude; searchModel.CoordinatesModel.MaxDistance = CoordinatesModel.MaxDistance; searchModel.Page = Page; if (UserInfo != null) { searchModel.UserInfo = new UserInfoModel(); searchModel.UserInfo.Id = UserInfo.Id; searchModel.UserInfo.UserName = UserInfo.UserName; } return(searchModel); }
public async Task <IEnumerable <AdvertisementItemShort> > GetAdvertisements(AdvertisementsSearchModel searchModel, string userId) { IQueryable <AdvertisementItem> queryAdvertisements = default(IQueryable <AdvertisementItem>); switch (searchModel.AdvertisementsKind) { case AdvertisementsKind.AdvertisementsAroundUserCurrentLocation: case AdvertisementsKind.AdvertisementsArounUserHomeLocation: queryAdvertisements = this.advertisementItemDbService.GetAdvertisements(); break; case AdvertisementsKind.AdvertisementsCreatedByUser: queryAdvertisements = this.advertisementItemDbService.GetUserAdvertisements(userId); break; case AdvertisementsKind.FavouritesAdvertisements: queryAdvertisements = this.advertisementItemDbService.GetUserFavouritesAdvertisements(userId).ToList().Select(a => a.AdvertisementItem).AsQueryable(); break; default: break; } queryAdvertisements = FilterResultBySearchModelOptions(searchModel, queryAdvertisements); IEnumerable <AdvertisementItemShort> advertisementsViewModels = await MapDbModelsToShortViewModels(queryAdvertisements.ToList(), searchModel.CoordinatesModel); UpdateUserCheckingList(searchModel, userId); return(advertisementsViewModels); }
private void UpdateUserCheckingList(AdvertisementsSearchModel searchModel, string userId) { if (searchModel.AdvertisementsKind == AdvertisementsKind.AdvertisementsAroundUserCurrentLocation || searchModel.AdvertisementsKind == AdvertisementsKind.AdvertisementsArounUserHomeLocation) { this.lastUsersChecksCacheService.UpdateLastTimeUserCheckDate(userId, searchModel.AdvertisementsKind == AdvertisementsKind.AdvertisementsAroundUserCurrentLocation); } }
private IQueryable <AdvertisementItem> FilterResultBySearchModelOptions(AdvertisementsSearchModel searchModel, IQueryable <AdvertisementItem> queryAdvertisements) { //---------ExpiredStatus------------------- if (searchModel.ExpiredAdvertisements) { queryAdvertisements = queryAdvertisements.Where(a => a.ExpirationDate <= DateTime.Now); } else { queryAdvertisements = queryAdvertisements.Where(a => a.ExpirationDate >= DateTime.Now); } //---------TransactionKind----------- if (searchModel.TransactionKind == TransactionKind.OnlyWithChange) { queryAdvertisements = queryAdvertisements.Where(a => !a.IsOnlyForSell); } else if (searchModel.TransactionKind == TransactionKind.OnlyWithSell) { queryAdvertisements = queryAdvertisements.Where(a => a.IsOnlyForSell); } //---------Categories----------- if (searchModel.CategoriesModel.Count > 0) { var categoriesIds = searchModel.CategoriesModel.Select(c => c.Key).ToList(); queryAdvertisements = queryAdvertisements.Where(a => categoriesIds.Contains(a.CategoryId)); } //---------Sizes----------- if (searchModel.Sizes.Count > 0) { queryAdvertisements = queryAdvertisements.Where(a => searchModel.Sizes.Contains(a.Size)); } //---------SelectedUser----------- if (searchModel.UserInfo != null) { queryAdvertisements = queryAdvertisements.Where(a => a.UserId == searchModel.UserInfo.Id); } //---------Coordinates----------- if (searchModel.CoordinatesModel.MaxDistance < ValueConsts.MAX_DISTANCE_VALUE) { var coordinatesForSearchModel = coordinatesCalculator.GetCoordinatesForSearchingAdvertisements(searchModel.CoordinatesModel.Latitude, searchModel.CoordinatesModel.Longitude, searchModel.CoordinatesModel.MaxDistance); queryAdvertisements = queryAdvertisements.Where(a => a.Latitude >= coordinatesForSearchModel.LatitudeStart && a.Latitude <= coordinatesForSearchModel.LatitudeEnd && a.Longitude >= coordinatesForSearchModel.LongitudeStart && a.Longitude <= coordinatesForSearchModel.LongitudeEnd); } //---------SortingBy----------- queryAdvertisements = SortQuery(queryAdvertisements, searchModel); queryAdvertisements = queryAdvertisements.Skip(ITEMS_PER_REQUEST * searchModel.Page).Take(ITEMS_PER_REQUEST); return(queryAdvertisements); }
public async Task <IActionResult> GetAdvertisements([FromBody] AdvertisementsSearchModel searchModel) { try { var userId = this.identityService.GetUserId(User.Identity); var advertisements = await this.advertisementItemService.GetAdvertisements(searchModel, userId); return(Json(advertisements)); } catch (Exception exc) { Response.StatusCode = (int)HttpStatusCode.InternalServerError; logger.LogError("Wystąpił wyjątek w trakcie pobierania ogłoszeń: " + exc); return(null); } }
public AdvertisementSearchModelCopier(AdvertisementsSearchModel searchModel) { this.originalSearchModel = searchModel; TransactionKind = searchModel.TransactionKind; ExpiredAdvertisements = searchModel.ExpiredAdvertisements; SortingBy = searchModel.SortingBy; Sizes.AddRange(searchModel.Sizes); foreach (var cat in searchModel.CategoriesModel) { CategoriesModel.Add(cat); } AdvertisementsKind = searchModel.AdvertisementsKind; CoordinatesModel.Latitude = searchModel.CoordinatesModel.Latitude; CoordinatesModel.LocationAddress = searchModel.CoordinatesModel.LocationAddress; CoordinatesModel.Longitude = searchModel.CoordinatesModel.Longitude; CoordinatesModel.MaxDistance = searchModel.CoordinatesModel.MaxDistance; Page = searchModel.Page; if (searchModel.UserInfo != null) { UserInfo.Id = searchModel.UserInfo.Id; UserInfo.UserName = searchModel.UserInfo.UserName; } }
public override void OnBackPressed() { if (IsDrawerOpen()) { base.OnBackPressed(); } else if (sortingOptionsLayout.Visibility != ViewStates.Visible) { if (this.advertisementsSearchModel.AdvertisementsKind != AdvertisementsKind.AdvertisementsAroundUserCurrentLocation) { ShowAdvertisementList(AdvertisementsKind.AdvertisementsAroundUserCurrentLocation); } else { base.OnBackPressed(); } } else { Action actionOnConfirm = ApplyFilterOptions; Action actionOnDismiss = () => { this.advertisementsSearchModel = searchModelCopier.RestorePreviousValues(); SetupSortingViews(); ChangeFabOpenFilterOptionsDependsOnSelectedOptions(); TogleLayouts(); }; if (searchModelCopier.IsSearchModelChanged()) { AlertsService.ShowConfirmDialog(this, "Czy uwzglêdniæ dokonane zmiany w filtrach?", actionOnConfirm, actionOnDismiss); } else { TogleLayouts(); } } }
public async Task <List <AdvertisementItemShort> > GetAdvertisements(AdvertisementsSearchModel searchModel) { var stringContent = new StringContent(JsonConvert.SerializeObject(searchModel), Encoding.UTF8, "application/json"); HttpResponseMessage response; try { response = await client.PostAsync(WebApiConsts.ADVERTISEMENT_CONTROLLER + "GetAdvertisements", stringContent); } catch { response = new HttpResponseMessage(System.Net.HttpStatusCode.InternalServerError); } if (response.StatusCode != System.Net.HttpStatusCode.OK) { return(new List <AdvertisementItemShort>()); } var responseContentString = await response.Content.ReadAsStringAsync(); var advertisementList = JsonConvert.DeserializeObject <List <AdvertisementItemShort> >(responseContentString); return(advertisementList); }
private IQueryable <AdvertisementItem> SortQuery(IQueryable <AdvertisementItem> queryAdvertisements, AdvertisementsSearchModel searchModel) { switch (searchModel.SortingBy) { case SortingBy.sortByNearest: return(queryAdvertisements.OrderBy(a => this.coordinatesCalculator.GetDistanceBetweenTwoLocalizations(searchModel.CoordinatesModel.Latitude, searchModel.CoordinatesModel.Longitude, a.Latitude, a.Longitude))); case SortingBy.sortByFarthest: return(queryAdvertisements.OrderByDescending(a => this.coordinatesCalculator.GetDistanceBetweenTwoLocalizations(searchModel.CoordinatesModel.Latitude, searchModel.CoordinatesModel.Longitude, a.Latitude, a.Longitude))); case SortingBy.sortByLowestPrice: return(queryAdvertisements.OrderBy(a => a.Price)); case SortingBy.sortByHighestPrice: return(queryAdvertisements.OrderByDescending(a => a.Price)); case SortingBy.sortByNewest: return(queryAdvertisements.OrderByDescending(a => a.CreationDate)); default: return(queryAdvertisements); } }