public async Task <IActionResult> Index(string sorting_order, int?pageNumber)
        {
            ViewData["CurrentSort"] = sorting_order;
            //if the sort parameter is null or empty then we are initializing the value as descending name
            ViewBag.SortByName = string.IsNullOrEmpty(sorting_order) ? "descending Name" : "";
            //if the sort value is gender then we are initializing the value as descending gender
            ViewBag.SortById = sorting_order == "Id" ? "descending Id" : "Id";


            IQueryable <ProductViewModel> ProductList = await _productPageService.GetAllProducts();

            switch (sorting_order)
            {
            case "descending Name":
                ProductList = ProductList.OrderByDescending(x => x.Name);
                break;

            case "descending Id":
                ProductList = ProductList.OrderByDescending(x => x.Id);
                break;

            case "Id":
                ProductList = ProductList.OrderBy(x => x.Id);
                break;

            default:
                ProductList = ProductList.OrderBy(x => x.Name);
                break;
            }


            int pageSize = 3;



            return(View(await PaginatedList <ProductViewModel> .CreateAsync(ProductList.AsNoTracking(), pageNumber ?? 1, pageSize)));
        }