public ActionResult LogEntries() { var logHandler = new LogHandler(); var model = new LogEntriesViewModel { LogEntries = logHandler.ReadLatestLogEntries(100) }; return(View(model)); }
public async Task <ActionResult> LogEntries(int?Page, string Start = "", string End = "", LogType Type = LogType.All, string Country = "Recent Countries") { _utilityService.SetViewCookie(HttpContext, "Log Entries View", "LogEntriesView", LogType.Information); var tzoffset = 0; if (Request.Cookies != null && Request.Cookies.Count > 0) { if (Request.Cookies["tzoffset"] != null) { tzoffset = Int32.Parse(Request.Cookies["tzoffset"]); } } DateTime startdate; DateTime enddate; if (Start.Length == 0 || !IsDatePicker(Start)) { startdate = DateTime.UtcNow; var smin = startdate.Minute % 15; smin *= -1; startdate = startdate.AddDays(-7).AddMinutes(smin); Start = startdate.ToUniversalTime().ToString("yyyy-MM-dd HH:mm zzz"); } else { startdate = DateTime.ParseExact(Start, "yyyy-MM-dd HH:mm zzz", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToUniversalTime(); } if (End.Length == 0 || !IsDatePicker(End)) { enddate = DateTime.UtcNow; var emin = 15 - enddate.Minute % 15; // + 30; enddate = enddate.AddMinutes(emin); End = enddate.ToUniversalTime().ToString("yyyy-MM-dd HH:mm zzz"); } else { enddate = DateTime.ParseExact(End, "yyyy-MM-dd HH:mm zzz", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToUniversalTime(); } var itemsPerPage = 10; var pageNumber = Page ?? 1; var alltypes = Enum.GetValues(typeof(LogType)).Cast <LogType>().ToArray(); var typelist = from value in alltypes select new SelectListItem() { Value = ((int)value).ToString(), Text = value.ToString() }; var selectlist = new List <SelectListItem>(typelist); var v = new LogEntriesViewModel(); try { var entries = _logcontext.LogEntries.Where(e => e.CreateDate > startdate && e.CreateDate < enddate).AsQueryable(); if (Type != LogType.All) { entries = entries.Where(e => e.LogType == Type); } entries = entries.OrderByDescending(e => e.CreateDate).Take(1000).AsQueryable(); v.TZoffset = tzoffset; v.PageIndex = pageNumber; v.RowIndex = itemsPerPage * pageNumber - itemsPerPage + 1; var count = await entries.CountAsync(); v.EntryCount = count; v.TotalPages = (int)Math.Ceiling(count / (double)itemsPerPage); v.StartDate = Start; v.EndDate = End; v.Type = Type; v.Country = Country; v.Types = selectlist; v.Entries = await entries.AsNoTracking().Skip((pageNumber - 1) * itemsPerPage).Take(itemsPerPage).ToListAsync(); } catch (Exception ex) { _utilityService.InsertLogEntry(HttpContext, "LogDbContext Error", "LogEntries threw an exception.", LogType.Critical, true, ex); throw; } return(View(v)); }