Exemplo n.º 1
0
        // GET: Case
        //public ActionResult Index()
        //{
        //    JackmanService.SigvardtServiceClient client = new SigvardtServiceClient();
        //    Case[] cases = client.GetCasesForCustomer(new Customer { Id = 1 });

        //    return View(cases);
        //}

        public ActionResult Index(string sortOrder, string filter)
        {
            IEnumerable <Case> cases = new ServiceController().GetClient(client).GetCasesForCustomer().ToList();

            if (!string.IsNullOrEmpty(filter))
            {
                cases = cases.Where(c =>
                                    c.Customer.Name.Contains(filter) ||
                                    c.OperatingSystem.Contains(filter) ||
                                    c.Status.Name.Contains(filter) ||
                                    c.Description.Contains(filter) ||
                                    c.Category.Name.Contains(filter) ||
                                    c.Subcategory.Name.Contains(filter) ||
                                    c.Id.ToString().Contains(filter) ||
                                    c.Priority.ToString().Contains(filter));
            }

            sortOrder = sortOrder == null ? "" : sortOrder.ToLower();

            ViewBag.IdSort = String.IsNullOrEmpty(sortOrder) ? "id_desc" : "";
            //                      IF                          THEN        ELSE
            ViewBag.CreatedDateSort     = sortOrder == "date" ? "date_desc" : "date";
            ViewBag.DescriptionSort     = sortOrder == "description" ? "description_desc" : "description";
            ViewBag.OperatingSystemSort = sortOrder == "operatingsystem" ? "operatingsystem_desc" : "operatingsystem";
            ViewBag.PrioritySort        = sortOrder == "priority" ? "priority_desc" : "priority";
            ViewBag.SupporterSort       = sortOrder == "supporter" ? "supporter_desc" : "supporter";
            ViewBag.StatusSort          = sortOrder == "status" ? "status_desc" : "status";
            ViewBag.CategorySort        = sortOrder == "category" ? "category_desc" : "category";
            ViewBag.SubcategorySort     = sortOrder == "subcategory" ? "subcategory_desc" : "subcategory";

            Func <Case, object> sorting = c => c.Id;

            switch (sortOrder.Split('_')[0])
            {
            case "priority":
                sorting = c => c.Priority;
                break;

            case "description":
                sorting = c => c.Description;
                break;

            case "category":
                sorting = c => c.Category.Name;
                break;

            case "subcategory":
                sorting = c => c.Subcategory.Name;
                break;

            case "status":
                sorting = c => c.Status.Name;
                break;

            case "operatingsystem":
                sorting = c => c.OperatingSystem;
                break;

            case "createddate":
                sorting = c => c.CreatedDate;
                break;
            }

            var sortedCases = sortOrder.EndsWith("_desc") ? cases.OrderByDescending(sorting) : cases.OrderBy(sorting);

            return(View(sortedCases));
        }