public ActionResult Index() { try { List <UserTicketGeneration> userTicketGeneration = new List <UserTicketGeneration>(); List <AssigneeTicket> assigneeTicket = new List <AssigneeTicket>(); userTicketGeneration = _db.UserTicketGeneration.ToList(); assigneeTicket = (from u in userTicketGeneration join at in _db.AssigneeTicket.AsNoTracking() on u.Id equals at.UserTicketGenerationId select at).ToList(); var ticketsGrid = (from u in userTicketGeneration join at in _db.AssigneeTicket.AsNoTracking() on u.Id equals at.UserTicketGenerationId select new { ticketId = u.Id, ticketSubject = at.ticketSubject, ticketType = at.ticketType, ticketAssignee = HelperExtensions.GetUserNamebyID(u.UserId), ticketStatus = at.Status?.statusName, createdDate = u.createdDate, openTime = DateTimeExtension.ConvertDateIntoString(u.createdDate), resolveTime = DateTimeExtension.ConvertDateIntoString(at.closesCreatedDate), inProgressTime = DateTimeExtension.ConvertDateIntoString(at.inProgressCreatedDate), priority = at.ticketPriority, createdBy = HelperExtensions.GetUserNamebyID(u.createdBy) }.ToExpando()); var nonactivetickets = _db.UserTicketGeneration.Where(p => p.Status.statusName == ETicketStatus.OPEN).Select(p => p).ToList(); ViewBag.pendingactive = nonactivetickets; // Dough Chart ViewBag.OpenTickets = userTicketGeneration.Where(x => x.Status?.statusName == ETicketStatus.OPEN).Count(); ViewBag.totalInProgressTickets = userTicketGeneration.Where(x => x.Status?.statusName == ETicketStatus.IN_PROGRESS).Count(); ViewBag.totalResolveTickets = userTicketGeneration.Where(x => x.Status?.statusName == ETicketStatus.RESOLVED).Count(); ViewBag.totalUnResovleTickets = userTicketGeneration.Where(x => x.Status?.statusName == ETicketStatus.UNRESOLVED).Count(); // All Tickets ViewBag.ticketGrid = ticketsGrid; ViewBag.UserTicketGeneration = userTicketGeneration; ViewBag.totalUserTicketGeneration = userTicketGeneration.Count(); ViewBag.assigneeTicket = assigneeTicket; ViewBag.totalAssigneeTicket = assigneeTicket.Count(); // Charts Data ViewBag.totalgenratedticketsbyweek = GetTotalgeneratedTickets(userTicketGeneration); ViewBag.totalResoloveticketsbyweek = GetTotalResoloveTickets(userTicketGeneration); ViewBag.totalOverDueticketsbyweek = GetTotalOverDueTickets(userTicketGeneration); ViewBag.TotalOpenTickets = GetTotalOpenTickets(_db.UserTicketGeneration.ToList()); ViewBag.TotalActiveTickets = GetTotalActiveTickets(userTicketGeneration); //Tickets ViewBag.CardOpenTickets = userTicketGeneration.Where(x => x.Status?.statusName == ETicketStatus.OPEN).Select(p => p); ViewBag.CardInProgressTickets = userTicketGeneration.Where(x => x.Status?.statusName == ETicketStatus.IN_PROGRESS).Select(p => p); ViewBag.CardResolveTickets = userTicketGeneration.Where(x => x.Status?.statusName == ETicketStatus.RESOLVED).Select(p => p); //Highest time to resolve ticket var resolvetimeDouble = _db.AssigneeTicket.ToList().Count() > 0 ? _db.AssigneeTicket.ToList().Select(p => p.closeResoloutionTime): null; var highest = resolvetimeDouble != null?resolvetimeDouble.Max() : 0; TimeSpan highestTime = TimeSpan.FromMinutes(highest); int?hdd = highestTime != null ? highestTime.Days : (int?)null; int?hhh = highestTime != null ? highestTime.Hours : (int?)null; int?hmm = highestTime != null ? highestTime.Minutes : (int?)null; int?hss = highestTime != null ? highestTime.Seconds : (int?)null; ViewBag.hdays = hdd; ViewBag.hhours = hhh; ViewBag.hminutes = hmm; ViewBag.hseconds = hss; //Average Time to resolve a ticket var avgminutesdouble = resolvetimeDouble != null?resolvetimeDouble.Average(p => p) : 0; TimeSpan averagetime = TimeSpan.FromMinutes(avgminutesdouble); int? avgdd = averagetime != null ? averagetime.Days : (int?)null; int? avghh = averagetime != null ? averagetime.Hours : (int?)null; int? avgmm = averagetime != null ? averagetime.Minutes : (int?)null; int? avgss = averagetime != null ? averagetime.Seconds : (int?)null; ViewBag.avgdays = avgdd; ViewBag.avghours = avghh; ViewBag.avgminutes = avgmm; ViewBag.avgseconds = avgss; //Average time in Progress var Progress = _db.AssigneeTicket.ToList().Count() > 0 ? _db.AssigneeTicket.ToList().Select(p => p.inProgressWaitTime):null; var AvginProgressdoubles = Progress != null?Progress.Average(p => p) : 0; TimeSpan averageinprogresstime = TimeSpan.FromMinutes(AvginProgressdoubles); int? pavgdd = averageinprogresstime != null ? averageinprogresstime.Days : (int?)null; int? pavghh = averageinprogresstime != null ? averageinprogresstime.Hours : (int?)null; int? pavgmm = averageinprogresstime != null ? averageinprogresstime.Minutes : (int?)null; int? pavgss = averageinprogresstime != null ? averageinprogresstime.Seconds : (int?)null; ViewBag.waitingavgdays = pavgdd; ViewBag.waitingavghours = pavghh; ViewBag.waitingavgminutes = pavgmm; ViewBag.waitingavgseconds = pavgss; //highest time in Progress var HighProgressdoubles = Progress != null?Progress.Max() : 0; TimeSpan Highinprogresstime = TimeSpan.FromMinutes(HighProgressdoubles); int? hwdd = Highinprogresstime != null ? Highinprogresstime.Days : (int?)null; int? hwhh = Highinprogresstime != null ? Highinprogresstime.Hours : (int?)null; int? hwmm = Highinprogresstime != null ? Highinprogresstime.Minutes : (int?)null; int? hwss = Highinprogresstime != null ? Highinprogresstime.Seconds : (int?)null; ViewBag.waitinghdays = hwdd; ViewBag.waitinghhours = hwhh; ViewBag.waitinghminutes = hwmm; ViewBag.waitinghseconds = hwss; // all tickets generated with Subject var subjectlabels = _db.TicketGeneration.Select(p => p).ToList(); List <SubjectsViewModel> s = new List <SubjectsViewModel>(); foreach (var item in subjectlabels) { var res = _db.UserTicketGeneration.Where(p => p.TicketGeneration.subjectName == item.subjectName).Count(); SubjectsViewModel c = new SubjectsViewModel(); c.SubjectName = item.subjectName; c.Count = res; s.Add(c); } ViewBag.subjects = s; List <SubjectsViewModel> s1 = new List <SubjectsViewModel>(); // all tickets generated with Resolution var resolutionlabels = _db.ticketResolution.Select(p => p).ToList(); foreach (var item in resolutionlabels) { var res = _db.AssigneeTicket.Where(p => p.TicketResolutionId == item.id).Count(); SubjectsViewModel c = new SubjectsViewModel(); c.SubjectName = item.resolutionName; c.Count = res; s1.Add(c); } ViewBag.resolution = s1; } catch (Exception ex) { TempData.Remove("AlertMessage"); TempData.Add("AlertMessage", new AlertModel(ex.Message + "---------" + ex.StackTrace, AlertType.Error)); AlertModel ar = (AlertModel)TempData["AlertMessage"]; Session.Add("Alert", ar); HelperExtensions.LogError(User.Identity.GetUserName(), User.Identity.GetUserId(), ex.Message, ex.StackTrace); return(RedirectToAction("exception", "Error")); } return(View()); }