/// <summary>
        /// Return a list of users to complete table
        /// </summary>
        /// <param name="draw">Draw order. Client send a draw id in request to keep track of asyncron response</param>
        /// <param name="start">Start from this item</param>
        /// <param name="length">Take a list with "lenght" (if exists) objects inside.</param>
        /// <returns>Returns json for datatable with users</returns>
#warning "sortColumn and sortDirection will not work";
        public JsonResult JsonTableCustomerFill(int draw, int start, int length, [FromQuery] string sortColumn = "-1", [FromQuery] string sortDirection = "asc")
        {
            const int TOTAL_ROWS = 999;

            if (length == -1)
            {
                length = TOTAL_ROWS;
            }

            string           curentUser = User.Identity.Name;
            List <OrderInfo> orders     = Orders(Search, curentUser);

            //order list
            switch (int.Parse(sortColumn))
            {
            case -1:     //sort by first column
                goto OrderID;

            case 0:     //OrderID column
OrderID:
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.OrderID).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.OrderID).ToList();
                }
                break;

            case 1:     //OrderDate column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.OrderDate).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.OrderDate).ToList();
                }
                break;

            case 2:     // CompanyName column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.CompanyName).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.CompanyName).ToList();
                }
                break;

            case 3:    // ShipperName column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.ShipperName).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.ShipperName).ToList();
                }
                break;
            }
            //objet that whill be sent to client
            JsonDataTableOrderList dataTableData = new JsonDataTableOrderList()
            {
                draw            = draw,
                recordsTotal    = db.Customers.Where(c => c.ContactName == curentUser).Count(),
                data            = new List <OrderInfo>(),
                recordsFiltered = orders.Count(), //need to be below data(ref recordsFiltered)
                //aLengthMenu = length,
            };

            foreach (var itemOderInfo in orders.Skip(start).Take(length))
            {
                OrderInfo orderInfo = new OrderInfo
                {
                    OrderID     = itemOderInfo.OrderID,
                    OrderDate   = itemOderInfo.OrderDate,
                    CompanyName = itemOderInfo.CompanyName,
                    ShipperName = itemOderInfo.ShipperName
                };
                dataTableData.data.Add(orderInfo);
            }
            //return Json(dataTableData, JsonRequestBehavior.AllowGet);
            return(Json(dataTableData));
        }
        /// <summary>
        /// Return a list of users to complete table
        /// </summary>
        /// <param name="draw">Draw order. Client send a draw id in request to keep track of asyncron response</param>
        /// <param name="start">Start from this item</param>
        /// <param name="length">Take a list with "lenght" (if exists) objects inside.</param>
        /// <returns>Returns json for datatable with users</returns>
        public JsonResult JsonTableAdminFill(int draw, int start, int length)
        {
            const int TOTAL_ROWS = 999;

            int    sortColumn    = -1;
            string sortDirection = "asc";

            if (length == -1)
            {
                length = TOTAL_ROWS;
            }
            string search = Request.QueryString["search[value]"] ?? "";

            // note: we only sort one column at a time
            if (Request.QueryString["order[0][column]"] != null)
            {
                sortColumn = int.Parse(Request.QueryString["order[0][column]"]);
            }
            if (Request.QueryString["order[0][dir]"] != null)
            {
                sortDirection = Request.QueryString["order[0][dir]"];
            }



            List <OrderInfo> orders = Orders(Search);



            //order list
            switch (sortColumn)
            {
            case -1:     //sort by first column
                goto OrderID;

            case 0:     //OrderID column
OrderID:
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.OrderID).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.OrderID).ToList();
                }
                break;

            case 1:     //OrderDate column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.OrderDate).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.OrderDate).ToList();
                }
                break;

            case 2:     // CompanyName column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.CompanyName).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.CompanyName).ToList();
                }
                break;

            case 3:    // ShipperName column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.ShipperName).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.ShipperName).ToList();
                }
                break;
            }
            //objet that whill be sent to client
            JsonDataTableOrderList dataTableData = new JsonDataTableOrderList()
            {
                draw            = draw,
                recordsTotal    = db.Orders.Count(),
                data            = new List <OrderInfo>(),
                recordsFiltered = orders.Count(), //need to be below data(ref recordsFiltered)
                //aLengthMenu = length,
            };

            foreach (var itemOderInfo in orders.Skip(start).Take(length))
            {
                OrderInfo orderInfo = new OrderInfo();
                orderInfo.OrderID     = itemOderInfo.OrderID;
                orderInfo.OrderDate   = itemOderInfo.OrderDate;
                orderInfo.CompanyName = itemOderInfo.CompanyName;
                orderInfo.ShipperName = itemOderInfo.ShipperName;
                dataTableData.data.Add(orderInfo);
            }
            return(Json(dataTableData, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// Return a list of users to complete table
        /// </summary>
        /// <param name="draw">Draw order. Client send a draw id in request to keep track of asyncron response</param>
        /// <param name="start">Start from this item</param>
        /// <param name="length">Take a list with "lenght" (if exists) objects inside.</param>
        /// <returns>Returns json for datatable with users</returns>
#warning "sortColumn and sortDirection will not work";
        public JsonResult JsonTableFill(int draw, int start, int length, [FromQuery] string sortColumn = "-1", [FromQuery] string sortDirection = "asc")
        {
            const int TOTAL_ROWS = 999;

            //int sortColumn = -1;
            //string sortDirection = "asc";

            if (length == -1)
            {
                length = TOTAL_ROWS;
            }

            string curentUser  = User.Identity.Name;
            int    employeerId = db.Employees.Where(e => e.FirstName + e.LastName == curentUser).Select(e => e.EmployeeID).FirstOrDefault();

            List <OrderInfo> orders = Orders(Search, employeerId);



            //order list
            switch (int.Parse(sortColumn))
            {
            case -1:     //sort by first column
                goto OrderID;

            case 0:     //OrderID column
OrderID:
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.OrderID).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.OrderID).ToList();
                }
                break;

            case 1:     //OrderDate column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.OrderDate).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.OrderDate).ToList();
                }
                break;

            case 2:     // CompanyName column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.CompanyName).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.CompanyName).ToList();
                }
                break;

            case 3:    // ShipperName column
                if (sortDirection == "asc")
                {
                    orders = orders.OrderBy(x => x.ShipperName).ToList();
                }
                else
                {
                    orders = orders.OrderByDescending(x => x.ShipperName).ToList();
                }
                break;
            }
            //object that will be sent to client
            JsonDataTableOrderList dataTableData = new JsonDataTableOrderList()
            {
                draw            = draw,
                recordsTotal    = db.Orders.Where(o => o.EmployeeID == employeerId).Count(),
                data            = new List <OrderInfo>(),
                recordsFiltered = orders.Count(), //need to be below data(ref recordsFiltered)
                //aLengthMenu = length,
            };

            foreach (var itemOderInfo in orders.Skip(start).Take(length))
            {
                OrderInfo orderInfo = new OrderInfo
                {
                    OrderID     = itemOderInfo.OrderID,
                    OrderDate   = itemOderInfo.OrderDate,
                    CompanyName = itemOderInfo.CompanyName,
                    ShipperName = itemOderInfo.ShipperName
                };
                dataTableData.data.Add(orderInfo);
            }
            return(Json(dataTableData));
        }