// GET: Sites
        public async Task <IActionResult> Index(SitesSorts pSiteSort, SitesFilters filter, string filterInfo, SitesSearchingBy search, string searchInfo)
        {
            IEnumerable <SiteDto> listSites = null;
            string textToSort   = "";
            string textToSearch = "";

            if (filter == SitesFilters.Orientation)
            {
                textToSort = "Orientation";
            }
            if (filter == SitesFilters.Altitude)
            {
                textToSort = "AltitudeTakeOff";
            }

            if (search == SitesSearchingBy.Name)
            {
                textToSearch = "SiteName";
            }
            if (search == SitesSearchingBy.ApproachManeuver)
            {
                textToSearch = "SiteApproach";
            }
            using (var httpClient = new HttpClient())
            {
                using (var response = await httpClient.GetAsync($"http://localhost:50106/api/v1/sites?SortBy={pSiteSort}&FilterBy={filter}&{textToSort}={filterInfo}&SearchBy={search}&{textToSearch}={searchInfo}"))
                {
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        string apiResponse = await response.Content.ReadAsStringAsync();

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

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

            ViewData["siteFilterItems"] = new SelectList(siteFilters, "Value", "Text");

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

            ViewData["siteSearchItems"] = new SelectList(siteSearch, "Value", "Text");

            return(View(listSites));
        }
        public static IQueryable <Models.Site> FilterSitesBy(this IQueryable <Models.Site> sites, SitesFilters filterBy, string pOrientation, int pAltitude)
        {
            switch (filterBy)
            {
            case SitesFilters.NoFilter:
                return(sites);

            case SitesFilters.NotActive:
                return(sites.Where(s => s.IsActive == false).IgnoreQueryFilters());

            case SitesFilters.Orientation:
                return(sites.Where(so => so.Orientation.Contains(pOrientation)));

            case SitesFilters.Altitude:
                return(sites.Where(sa => sa.AltitudeTakeOff >= pAltitude));

            case SitesFilters.TakeOffSite:
                return(sites.Where(s => s.SiteType == (Models.Enumeration.Enm_SiteType.TakeOff)));

            case SitesFilters.LandingSite:
                return(sites.Where(s => s.SiteType == Models.Enumeration.Enm_SiteType.Landing));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }