// GET: Subscriptions public async Task <IActionResult> Index(SubscriptionSorts pSortSubscription = SubscriptionSorts.noSubscriptionOrder, SubscriptionFilters filter = SubscriptionFilters.NoFilter, decimal?filterInfo = 0, SubscriptionSearches search = SubscriptionSearches.NoSearch, decimal?searchInfo = 0) { IEnumerable <SubscriptionDto> listSubscriptions = null; string filterNameAsString = null; string searchNameAsString = null; if (filter != SubscriptionFilters.NoFilter) { filterNameAsString = "AmountTrigger"; } if (search != SubscriptionSearches.NoSearch) { searchNameAsString = "SearchingValue"; } using (var httpClient = new HttpClient()) { string url = $"http://localhost:50106/api/v1/subscriptions?OrderBy={pSortSubscription}&FilterBy={filter}&{filterNameAsString}={filterInfo}&SearchBy={search}&{searchNameAsString}={searchInfo}"; using (var response = await httpClient.GetAsync(url)) { string apiResponse = await response.Content.ReadAsStringAsync(); listSubscriptions = JsonConvert.DeserializeObject <List <SubscriptionDto> >(apiResponse); } } var subFilter = Enum.GetValues(typeof(SubscriptionFilters)) .Cast <SubscriptionFilters>() .Select(d => new SelectListItem { Text = d.ToString(), Value = ((int)d).ToString() }).ToList(); ViewData["subscriFilter"] = new SelectList(subFilter, "Value", "Text"); var subSearch = Enum.GetValues(typeof(SubscriptionSearches)) .Cast <SubscriptionSearches>() .Select(d => new SelectListItem { Text = d.ToString(), Value = ((int)d).ToString() }).ToList(); ViewData["subscriSearch"] = new SelectList(subSearch, "Value", "Text"); return(View(listSubscriptions)); }
public static IQueryable <Models.Subscription> SubscriptionSortBy(this IQueryable <Models.Subscription> subscriptions, SubscriptionSorts sortBy) { switch (sortBy) { case SubscriptionSorts.noSubscriptionOrder: return(subscriptions); case SubscriptionSorts.YearAsc: return(subscriptions.OrderBy(s => s.Year)); case SubscriptionSorts.YearDesc: return(subscriptions.OrderByDescending(s => s.Year)); case SubscriptionSorts.AmountAsc: return(subscriptions.OrderBy(s => s.SubscriptionAmount)); case SubscriptionSorts.AmountDesc: return(subscriptions.OrderByDescending(s => s.SubscriptionAmount)); case SubscriptionSorts.TotalAmount: return(subscriptions.OrderByDescending(s => s.SubscriptionPayments.Sum(sp => sp.Subscription.SubscriptionAmount))); case SubscriptionSorts.TotalPayments: return(subscriptions.OrderByDescending(s => s.SubscriptionPayments.Count())); default: throw new ArgumentOutOfRangeException(nameof(sortBy), sortBy, null); } ; }