public ActionResult ListCustomerOrders(int id,int? page, int? itemsPerPage, string sortOrder, string currentFilter)
        {
             if (!isAdmin())
                return RedirectToAction("LogIn", "Main");

             ViewBag.CurrentSort = sortOrder;
             ViewBag.IDSortParm = String.IsNullOrEmpty(sortOrder) ? "id_desc" : "";
             ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
             ViewBag.CIDSortParm = sortOrder == "CID" ? "cid_desc" : "CID";
             ViewBag.CFNameSortParm = sortOrder == "CFName" ? "cfname_desc" : "CFName";
             ViewBag.CLNameSortParm = sortOrder == "CLName" ? "clname_desc" : "CLName";
             ViewBag.AmountSortParm = sortOrder == "Amount" ? "amount_desc" : "Amount";
             ViewBag.TotalSortParm = sortOrder == "Total" ? "total_desc" : "Total"; 

            

            IOrderBLL _orderbll = new OrderBLL();
           List<Order> orders =  _customerbll.getAllOrdersbyCust(id);
           
            List<OrderViewModel> list = new List<OrderViewModel>();

             foreach (var item in orders)
             {
                list.Add(new OrderViewModel()
                {
                    id = item.id,
                    orderdate = item.orderdate,
                    customerid = item.customerid,
                    customer = item.customer,
                    quantity = _orderbll.getNumItems(item),
                    sum = _orderbll.getSum(item)
                });
            }
             switch (sortOrder)
             {
                 case "id_desc":
                     list = list.OrderByDescending(s => s.id).ToList();
                     break;
                 case "Date":
                     list = list.OrderBy(s => s.orderdate).ToList();
                     break;
                 case "date_desc":
                     list = list.OrderByDescending(s => s.orderdate).ToList();
                     break;
                 case "CID":
                     list = list.OrderBy(s => s.customerid).ToList();
                     break;
                 case "cid_desc":
                     list = list.OrderByDescending(s => s.customerid).ToList();
                     break;
                 case "CFName":
                     list = list.OrderBy(s => s.customer.firstname).ToList();
                     break;
                 case "cfname_desc":
                     list = list.OrderByDescending(s => s.customer.firstname).ToList();
                     break;
                 case "CLName":
                     list = list.OrderBy(s => s.customer.lastname).ToList();
                     break;
                 case "clname_desc":
                     list = list.OrderByDescending(s => s.customer.lastname).ToList();
                     break;
                 case "Amount":
                     list = list.OrderBy(s => s.quantity).ToList();
                     break;
                 case "amount_desc":
                     list = list.OrderByDescending(s => s.quantity).ToList();
                     break;
                 case "Total":
                     list = list.OrderBy(s => s.sum).ToList();
                     break;
                 case "total_desc":
                     list = list.OrderByDescending(s => s.sum).ToList();
                     break;
                 default:
                     list = list.OrderBy(s => s.id).ToList();
                     break;
             }
             ViewBag.CurrentItemsPerPage = itemsPerPage;
             return View(list.ToPagedList(pageNumber: page ?? 1, pageSize: itemsPerPage ?? 15));
        }
        public ActionResult ListCustomersOrderLines(int id, int? page, int? itemsPerPage, string sortOrder, string currentFilter)
        {

            if (!isAdmin())
                return RedirectToAction("LogIn", "Main");
            ViewBag.CurrentSort = sortOrder;
            ViewBag.IDSortParm = String.IsNullOrEmpty(sortOrder) ? "id_desc" : "";
            ViewBag.PIDSortParm = sortOrder == "PID" ? "pid_desc" : "PID";
            ViewBag.PNameSortParm = sortOrder == "PName" ? "pname_desc" : "PName";
            ViewBag.AmountSortParm = sortOrder == "Amount" ? "amount_desc" : "Amount";
            ViewBag.PriceSortParm = sortOrder == "Price" ? "price_desc" : "Price";
            ViewBag.TotalSortParm = sortOrder == "Total" ? "total_desc" : "Total"; 

            IOrderBLL _orderbll = new OrderBLL();
            List<OrderLineViewModel> list = new List<OrderLineViewModel>();

            List<Order> allOrders = _orderbll.getAllOrders(id);
            int linje = 1;
            foreach (var item in allOrders)
            {

                foreach (var olItem in item.orderLine)
                {

                    list.Add(new OrderLineViewModel()
                    {
                        id = linje,
                        customer = item.customer,
                        orderdate = item.orderdate,
                        orderId = item.id,
                        order = item,
                        product = olItem.product,
                        quantity = olItem.quantity,
                        orderlineSum = (olItem.quantity * olItem.product.price),
                        customerid = item.customerid,
                        price = olItem.product.price.ToString(),
                        productid = olItem.productid.ToString(),
                        productname = olItem.product.name

                    });
                    linje++;
                }
            }
                switch (sortOrder)
                {
                    case "id_desc":
                        list = list.OrderByDescending(s => s.id).ToList();
                        break;
                    case "PID":
                        list = list.OrderBy(s => s.product.itemnumber).ToList();
                        break;
                    case "pid_desc":
                        list = list.OrderByDescending(s => s.product.itemnumber).ToList();
                        break;
                    case "PName":
                        list = list.OrderBy(s => s.product.name).ToList();
                        break;
                    case "pname_desc":
                        list = list.OrderByDescending(s => s.product.name).ToList();
                        break;
                    case "Amount":
                        list = list.OrderBy(s => s.quantity).ToList();
                        break;
                    case "amount_desc":
                        list = list.OrderByDescending(s => s.quantity).ToList();
                        break;
                    case "Price":
                        list = list.OrderBy(s => s.product.price).ToList();
                        break;
                    case "price_desc":
                        list = list.OrderByDescending(s => s.product.price).ToList();
                        break;
                    case "Total":
                        list = list.OrderBy(s => s.orderlineSum).ToList();
                        break;
                    case "total_desc":
                        list = list.OrderByDescending(s => s.orderlineSum).ToList();
                        break;
                    default:
                        list = list.OrderBy(s => s.id).ToList();
                        break;
                }

                ViewBag.CurrentItemsPerPage = itemsPerPage;
                ViewBag.contoller = "customer";
                return View(list.ToPagedList(pageNumber: page ?? 1, pageSize: itemsPerPage ?? 15));
           
        }
 public OrderController(OrderBLL stud)
 {
     _orderbll = stud;
 }