Пример #1
0
        // 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"));
            }
        }