// GET: ReportsController public ActionResult Index(string sortOrder, string searchString, string notify, DateTime datetime, int?pageNumber) { try { //authentication if (TempData.Peek("userEmail") == null) { return(RedirectToAction("Login", "Home")); } ViewBag.IdSortParm = String.IsNullOrEmpty(sortOrder) ? "id_desc" : ""; ViewBag.PidSortParm = sortOrder == "pid_inc" ? "pid_desc" : "pid_inc"; ViewBag.CidSortParm = sortOrder == "cid_inc" ? "cid_desc" : "cid_inc"; ViewBag.Notify = notify; var ReportsList = ReportRepository.GetReports().ToList(); if (!String.IsNullOrEmpty(searchString)) { pageNumber = 0; ViewBag.Notify = null; ReportsList = ReportsList.Where(r => r.Id.ToString().Contains(searchString, StringComparison.OrdinalIgnoreCase) || r.ProductId.Contains(searchString, StringComparison.OrdinalIgnoreCase) || r.CompanyId.Contains(searchString, StringComparison.OrdinalIgnoreCase)).ToList(); } switch (sortOrder) { case "id_desc": ReportsList = ReportsList.OrderByDescending(r => r.Id).ToList(); break; case "pid_desc": ReportsList.Sort((n1, n2) => Int32.Parse(n1.ProductId.Substring(1)).CompareTo(Int32.Parse(n2.ProductId.Substring(1)))); break; case "cid_desc": ReportsList.Sort((n1, n2) => Int32.Parse(n1.CompanyId.Substring(2)).CompareTo(Int32.Parse(n2.CompanyId.Substring(2)))); break; case "pid_inc": ReportsList.Sort((n1, n2) => Int32.Parse(n2.ProductId.Substring(1)).CompareTo(Int32.Parse(n1.ProductId.Substring(1)))); break; case "cid_inc": ReportsList.Sort((n1, n2) => Int32.Parse(n2.CompanyId.Substring(2)).CompareTo(Int32.Parse(n1.CompanyId.Substring(2)))); break; default: ReportsList = ReportsList.OrderBy(r => r.Id).ToList(); break; } //Dashboard statistic if (datetime.Year > 2000) { pageNumber = 0; ViewBag.Notify = null; var filterdReports = ReportRepository.GetReportsByCreatedDate(datetime); ReportsList = filterdReports.ToList(); } ViewData["DashboardStatistic"] = ReportRepository.DashboardStatistic(); //Paging var pageIndex = pageNumber ?? 0; if (pageIndex == 0) { ViewBag.PreDisabled = "disabled"; } if ((pageIndex * 10 + 10) < ReportsList.Count()) { ReportsList = ReportsList.GetRange(pageIndex * 10, 10); } else { ViewBag.NextDisabled = "disabled"; ReportsList = ReportsList.GetRange((pageIndex) * 10, ReportsList.Count() - (pageIndex) * 10); } ViewBag.PageIndex = pageIndex; return(View(ReportsList)); } catch (Exception ex) { TempData["msg"] = "Something went wrong! Logged out! Error: " + ex.Message;; return(RedirectToAction("Logout", "Home")); } }