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