示例#1
0
        public PaginatedEventIndex(EventIndexData source, int pageIndex, int pageSize)
        {
            PageIndex  = pageIndex;
            PageSize   = pageSize;
            TotalCount = source.Events.Count();
            TotalPages = (int)Math.Ceiling(TotalCount / (double)pageSize);


            var Events = source.Events.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();

            this.Events = Events;
            /* EF will filter Acknowledgemnts for us!? */
            //this.Acknowledgements = source.Acknowledgements.Where(a => Events.All(e => e.ID == a.EventID));
        }
示例#2
0
        // GET: Events
        //startdate_desc, startdate_asce, creation_desc, creation_asce
        public async Task <IActionResult> Index(string sort, string eventid, string subject, string searchrange, string searchday, string host, string project, string team, string refid, string searchdatefrom, string searchdateto, int?page, int?pgsize)
        {
            ViewBag.SortParm    = String.IsNullOrEmpty(sort) ? "" : sort;
            ViewBag.SubjectParm = String.IsNullOrEmpty(subject) ? "" : subject;
            ViewBag.HostParm    = String.IsNullOrEmpty(host) ? "" : host;
            ViewBag.ProjParm    = String.IsNullOrEmpty(project) ? "" : project;
            ViewBag.TeamParm    = String.IsNullOrEmpty(team) ? "" : team;
            ViewBag.RefParm     = String.IsNullOrEmpty(refid) ? "" : refid;
            ViewBag.RangeParm   = searchrange;
            ViewBag.DayParm     = searchday;
            ViewBag.EventParm   = String.IsNullOrEmpty(eventid) ? "" : eventid;
            ViewBag.FromParm    = String.IsNullOrEmpty(searchdatefrom) ? "" : searchdatefrom;
            ViewBag.ToParm      = String.IsNullOrEmpty(searchdateto) ? "" : searchdateto;

            if (String.IsNullOrEmpty(eventid) && String.IsNullOrEmpty(subject) &&
                String.IsNullOrEmpty(host) && String.IsNullOrEmpty(project) &&
                String.IsNullOrEmpty(team) && String.IsNullOrEmpty(refid) &&
                (String.IsNullOrEmpty(searchday) || searchday.Equals("ND")))
            {
                ViewBag.SearchOn = "";
            }
            else
            {
                ViewBag.SearchOn = "in";
            }

            var events = from e in _context.Event
                         select e;

            int n_eventid;

            if (!String.IsNullOrEmpty(eventid) && Int32.TryParse(eventid, out n_eventid))
            {
                events = events.Where(e => e.ID.Equals(n_eventid));
            }

            if (!String.IsNullOrEmpty(subject))
            {
                events = events.Where(e => e.Subject.Contains(subject));
            }
            if (!String.IsNullOrEmpty(host))
            {
                events = events.Where(e => e.AffectedHosts.Contains(host));
            }
            if (!String.IsNullOrEmpty(project))
            {
                events = events.Where(e => e.AffectedProjects.Contains(project));
            }
            if (!String.IsNullOrEmpty(team))
            {
                events = events.Where(e => e.AffectedTeams.Contains(team));
            }
            if (!String.IsNullOrEmpty(refid))
            {
                events = events.Where(e => e.Reference.Contains(refid));
            }

            DateTime datetimefrom;
            DateTime datetimeto;

            if (!String.IsNullOrEmpty(searchdatefrom) || !String.IsNullOrEmpty(searchdateto))
            {
                if (searchday.Equals("SD"))
                {
                    if (!String.IsNullOrEmpty(searchdatefrom) && DateTime.TryParse(searchdatefrom, out datetimefrom))
                    {
                        events = events.Where(e => e.StartDateTime >= datetimefrom);
                    }
                    if (!String.IsNullOrEmpty(searchdateto) && DateTime.TryParse(searchdateto, out datetimeto))
                    {
                        events = events.Where(e => e.EndDateTime <= datetimeto);
                    }
                }
                else if (searchday.Equals("CD"))
                {
                    if (!String.IsNullOrEmpty(searchdatefrom) && DateTime.TryParse(searchdatefrom, out datetimefrom))
                    {
                        events = events.Where(e => e.CreatedDate >= datetimefrom);
                    }
                    if (!String.IsNullOrEmpty(searchdateto) && DateTime.TryParse(searchdateto, out datetimeto))
                    {
                        events = events.Where(e => e.CreatedDate <= datetimeto);
                    }
                }
                else
                {
                    if (!String.IsNullOrEmpty(searchdatefrom) && DateTime.TryParse(searchdatefrom, out datetimefrom))
                    {
                        events = events.Where(e => e.UpdatedDate >= datetimefrom);
                    }
                    if (!String.IsNullOrEmpty(searchdateto) && DateTime.TryParse(searchdateto, out datetimeto))
                    {
                        events = events.Where(e => e.UpdatedDate <= datetimeto);
                    }
                }
            }
            else
            {
                switch (searchrange)
                {
                case "S1":
                    events = events.Where(e => e.StartDateTime.Date >= DateTime.Now.Date && e.StartDateTime.Date <= (DateTime.Now.AddDays(1).Date));
                    break;

                case "S2":
                    events = events.Where(e => e.StartDateTime.Date >= DateTime.Now.Date && e.StartDateTime.Date <= (DateTime.Now.AddDays(7).Date));
                    break;

                case "S3":
                    events = events.Where(e => e.StartDateTime.Date >= DateTime.Now.Date && e.StartDateTime.Date <= (DateTime.Now.AddDays(30).Date));
                    break;

                case "S4":
                    events = events.Where(e => e.StartDateTime.Date >= DateTime.Now.Date && e.StartDateTime.Date <= (DateTime.Now.AddDays(90).Date));
                    break;

                case "C1":
                    events = events.Where(e => e.CreatedDate.Date >= DateTime.Now.Date && e.CreatedDate.Date <= (DateTime.Now.AddDays(1).Date));
                    break;

                case "C2":
                    events = events.Where(e => e.CreatedDate.Date >= (DateTime.Now.AddDays(-7).Date) && e.CreatedDate.Date <= DateTime.Now.Date);
                    break;

                case "C3":
                    events = events.Where(e => e.CreatedDate.Date >= (DateTime.Now.AddDays(-30).Date) && e.CreatedDate.Date <= DateTime.Now.Date);
                    break;

                case "C4":
                    events = events.Where(e => e.CreatedDate.Date >= (DateTime.Now.AddDays(-90).Date) && e.CreatedDate.Date <= DateTime.Now.Date);
                    break;

                case "U1":
                    events = events.Where(e => e.UpdatedDate.Date >= DateTime.Now.Date && e.UpdatedDate.Date <= (DateTime.Now.AddDays(1).Date));
                    break;

                case "U2":
                    events = events.Where(e => e.UpdatedDate.Date >= (DateTime.Now.AddDays(-7).Date) && e.UpdatedDate.Date <= DateTime.Now.Date);
                    break;

                case "U3":
                    events = events.Where(e => e.UpdatedDate.Date >= (DateTime.Now.AddDays(-30).Date) && e.UpdatedDate.Date <= DateTime.Now.Date);
                    break;

                case "U4":
                    events = events.Where(e => e.UpdatedDate.Date >= (DateTime.Now.AddDays(-90).Date) && e.UpdatedDate.Date <= DateTime.Now.Date);
                    break;

                default:
                    break;
                }
            }

            switch (sort)
            {
            case "cd_a":
                events = events.OrderBy(e => e.CreatedDate);
                break;

            case "cd_d":
                events = events.OrderByDescending(e => e.CreatedDate);
                break;

            case "ud_a":
                events = events.OrderBy(e => e.UpdatedDate);
                break;

            case "ud_d":
                events = events.OrderByDescending(e => e.UpdatedDate);
                break;

            case "sd_a":
                events = events.OrderBy(e => e.StartDateTime);
                break;

            default:       // sd_d
                events = events.OrderByDescending(e => e.StartDateTime);
                break;
            }

            var viewModel = new EventIndexData();

            viewModel.Events = events
                               .Include(e => e.Acknowledgements)
                               .AsNoTracking();

            return(View(new PaginatedEventIndex(viewModel, page ?? 1, pgsize ?? 30)));

            //return View(await PaginatedList<Event>.CreateAsync(events.AsNoTracking(), page ?? 1, pgsize ?? 30));

            //return View(await events.AsNoTracking().ToListAsync());
            //return View(await _context.Event.OrderByDescending(m => m.StartDateTime).ToListAsync());
        }