Exemplo n.º 1
0
        // GET: ModelParaglidings
        public async Task <IActionResult> Index(ParagliderModelsSorts pParagliderModelSort,
                                                PargliderModelFilters filter, string filterInfo,
                                                ParagliderModelSearch search, string searchInfo)
        {
            IEnumerable <ParagliderModelDto> listParagliderModels = null;
            string textToSort   = "";
            string textToSearch = "";

            if (filter == PargliderModelFilters.Heavyweight)
            {
                textToSort = "Heavyweight";
            }

            if (filter == PargliderModelFilters.Pilotweight)
            {
                textToSort = "Pilotweight";
            }

            if (search == ParagliderModelSearch.ApprovalNumber)
            {
                textToSearch = "ApprovalNumber";
            }
            if (search == ParagliderModelSearch.Size)
            {
                textToSearch = "Size";
            }
            using (var httpClient = new HttpClient())
            {
                string FulApiUrl = $"http://localhost:50106/api/v1/paragliderModels?SortBy={pParagliderModelSort}&FilterBy={filter}&{textToSort}={filterInfo}&SearchBy={search}&{textToSearch}={searchInfo}";
                using (var response = await httpClient.GetAsync(FulApiUrl))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        string apiResponse = await response.Content.ReadAsStringAsync();

                        listParagliderModels = JsonConvert.DeserializeObject <List <ParagliderModelDto> >(apiResponse);
                    }
                    else
                    {
                        listParagliderModels = Enumerable.Empty <ParagliderModelDto>();
                    }
                }
            }

            var paraglidermodelFilters = Enum.GetValues(typeof(PargliderModelFilters))
                                         .Cast <PargliderModelFilters>()
                                         .Select(d => new SelectListItem
            {
                Text  = d.ToString(),
                Value = ((int)d).ToString()
            }).ToList();

            ViewData["paraglidermodelFilterItems"] = new SelectList(paraglidermodelFilters, "Value", "Text");

            var paraglidermodelSearch = Enum.GetValues(typeof(ParagliderModelSearch))
                                        .Cast <ParagliderModelSearch>()
                                        .Select(d => new SelectListItem
            {
                Text  = d.ToString(),
                Value = ((int)d).ToString()
            }).ToList();

            ViewData["paraglidermodelSearchItems"] = new SelectList(paraglidermodelSearch, "Value", "Text");

            return(View(listParagliderModels));
        }
        public static IQueryable <Models.ParagliderModel> ParagliderModelsSortsBy(this IQueryable <Models.ParagliderModel> paragliderModels, ParagliderModelsSorts sortBy)
        {
            switch (sortBy)
            {
            case ParagliderModelsSorts.NoSort:
                return(paragliderModels);

            case ParagliderModelsSorts.Heavyweight:
                return(paragliderModels
                       .OrderBy(pa => pa.MaxWeightPilot)
                       .ThenBy(pa => pa.Size));

            case ParagliderModelsSorts.Thinweight:
                return(paragliderModels.OrderByDescending(pa => pa.MinWeightPilot)
                       .ThenBy(pa => pa.Size));

            case ParagliderModelsSorts.Pilotweight:
                return(paragliderModels.OrderBy(pa => pa.MinWeightPilot & pa.MaxWeightPilot));

            default:
                throw new ArgumentOutOfRangeException
                          (nameof(sortBy), sortBy, null);
            }
        }