protected void Page_Load(object sender, EventArgs e) { if (Request["TicketID"] == null) { EndResponse("Invalid Ticket"); } LoginUser loginUser = TSAuthentication.GetLoginUser(); int ticketID = int.Parse(Request["TicketID"]); Ticket ticket = Tickets.GetTicket(loginUser, ticketID); if (ticket == null) { EndResponse("Invalid Ticket"); } tipNumber.InnerText = "Ticket #" + ticket.TicketNumber.ToString(); tipNumber.Attributes.Add("onclick", "top.Ts.MainPage.openTicket(" + ticket.TicketNumber + "); return false;"); tipName.InnerHtml = ticket.Name; bool isStatusPaused = false; SlaTicket slaTicket = SlaTickets.GetSlaTicket(loginUser, ticket.TicketID); if (slaTicket != null) { SlaTrigger slaTrigger = SlaTriggers.GetSlaTrigger(loginUser, slaTicket.SlaTriggerId); if (slaTrigger != null) { isStatusPaused = ticket.IsSlaStatusPaused(); string slaName = new SlaLevels(TSAuthentication.GetLoginUser()).GetSlaveLevelName(slaTicket.SlaTriggerId); wslaName.InnerText = slaName; } else { ticket.SlaViolationInitialResponse = null; ticket.SlaViolationTimeClosed = null; ticket.SlaViolationLastAction = null; ticket.SlaWarningInitialResponse = null; ticket.SlaWarningTimeClosed = null; ticket.SlaWarningLastAction = null; ticket.Collection.Save(); } } if (isStatusPaused) { wClose.InnerText = "Paused"; vClose.InnerText = "Paused"; wLast.InnerText = "Paused"; vLast.InnerText = "Paused"; wInit.InnerText = "Paused"; vInit.InnerText = "Paused"; wNext.InnerText = "Paused"; vNext.InnerText = "Paused"; } else { DateTime?nextViolation = GetUtcDate(ticket, "SlaViolationInitialResponse"); nextViolation = GetMinDate(loginUser, nextViolation, GetUtcDate(ticket, "SlaViolationLastAction")); nextViolation = GetMinDate(loginUser, nextViolation, GetUtcDate(ticket, "SlaViolationTimeClosed")); DateTime?nextWarning = GetUtcDate(ticket, "SlaWarningInitialResponse"); nextWarning = GetMinDate(loginUser, nextWarning, GetUtcDate(ticket, "SlaWarningLastAction")); nextWarning = GetMinDate(loginUser, nextWarning, GetUtcDate(ticket, "SlaWarningTimeClosed")); if (nextViolation != null && nextViolation < DateTime.UtcNow) { tipSla.Attributes.Add("class", "ts-icon ts-icon-sla-bad"); } else if (nextWarning != null && nextWarning < DateTime.UtcNow) { tipSla.Attributes.Add("class", "ts-icon ts-icon-sla-warning"); } else { tipSla.Attributes.Add("class", "ts-icon ts-icon-sla-good"); } wClose.InnerText = GetDateString(loginUser, GetUtcDate(ticket, "SlaWarningTimeClosed")); vClose.InnerText = GetDateString(loginUser, GetUtcDate(ticket, "SlaViolationTimeClosed")); wLast.InnerText = GetDateString(loginUser, GetUtcDate(ticket, "SlaWarningLastAction")); vLast.InnerText = GetDateString(loginUser, GetUtcDate(ticket, "SlaViolationLastAction")); wInit.InnerText = GetDateString(loginUser, GetUtcDate(ticket, "SlaWarningInitialResponse")); vInit.InnerText = GetDateString(loginUser, GetUtcDate(ticket, "SlaViolationInitialResponse")); wNext.InnerText = GetDateString(loginUser, nextWarning); vNext.InnerText = GetDateString(loginUser, nextViolation); } }
private void ProcessTicket(TicketSlaInfo ticket) { UpdateHealth(); bool isPaused = false; bool isPending = false; int? slaTriggerId = null; Logs.WriteEvent("Getting SlaTicket record"); SlaTicket slaTicket = SlaTickets.GetSlaTicket(LoginUser, ticket.TicketId); if (slaTicket != null) { isPaused = ticket.IsSlaPaused(slaTicket.SlaTriggerId, ticket.OrganizationId); isPending = slaTicket.IsPending; slaTriggerId = slaTicket.SlaTriggerId; } Logs.WriteEventFormat("IsPaused: {0}; IsPending: {1}", isPaused.ToString(), isPending.ToString()); if (!isPaused && !isPending) { SlaTriggersView triggers = new SlaTriggersView(LoginUser); triggers.LoadByTicketId(ticket.TicketId); bool warnGroup = false; bool warnUser = false; bool vioGroup = false; bool vioUser = false; foreach (SlaTriggersViewItem item in triggers) { warnGroup = item.NotifyGroupOnWarning || warnGroup; warnUser = item.NotifyUserOnWarning || warnUser; vioGroup = item.NotifyGroupOnViolation || vioGroup; vioUser = item.NotifyUserOnViolation || vioUser; } SlaNotification notification = SlaNotifications.GetSlaNotification(LoginUser, ticket.TicketId); if (notification == null) { notification = (new SlaNotifications(LoginUser)).AddNewSlaNotification(); notification.TicketID = ticket.TicketId; } DateTime notifyTime; if (ticket.SlaViolationInitialResponse != null && ticket.SlaViolationInitialResponse <= DateTime.UtcNow) { notifyTime = (DateTime)ticket.SlaViolationInitialResponse; if (!IsTooOld(notifyTime)) { if (notification.InitialResponseViolationDate == null || Math.Abs(((DateTime)notification.InitialResponseViolationDateUtc - notifyTime).TotalMinutes) > 5) { NotifyViolation(ticket.TicketId, vioUser, vioGroup, false, SlaViolationType.InitialResponse, notification, slaTriggerId); notification.InitialResponseViolationDate = notifyTime; } } } else if (ticket.SlaWarningInitialResponse != null && ticket.SlaWarningInitialResponse <= DateTime.UtcNow) { notifyTime = (DateTime)ticket.SlaWarningInitialResponse; if (!IsTooOld(notifyTime)) { if (notification.InitialResponseWarningDate == null || Math.Abs(((DateTime)notification.InitialResponseWarningDateUtc - notifyTime).TotalMinutes) > 5) { NotifyViolation(ticket.TicketId, warnUser, warnGroup, true, SlaViolationType.InitialResponse, notification, slaTriggerId); notification.InitialResponseWarningDate = notifyTime; } } } if (ticket.SlaViolationLastAction != null && ticket.SlaViolationLastAction <= DateTime.UtcNow) { notifyTime = (DateTime)ticket.SlaViolationLastAction; if (!IsTooOld(notifyTime)) { if (notification.LastActionViolationDate == null || Math.Abs(((DateTime)notification.LastActionViolationDateUtc - notifyTime).TotalMinutes) > 5) { NotifyViolation(ticket.TicketId, vioUser, vioGroup, false, SlaViolationType.LastAction, notification, slaTriggerId); notification.LastActionViolationDate = notifyTime; } } } else if (ticket.SlaWarningLastAction != null && ticket.SlaWarningLastAction <= DateTime.UtcNow) { notifyTime = (DateTime)ticket.SlaWarningLastAction; if (!IsTooOld(notifyTime)) { if (notification.LastActionWarningDate == null || Math.Abs(((DateTime)notification.LastActionWarningDateUtc - notifyTime).TotalMinutes) > 5) { NotifyViolation(ticket.TicketId, warnUser, warnGroup, true, SlaViolationType.LastAction, notification, slaTriggerId); notification.LastActionWarningDate = notifyTime; } } } if (ticket.SlaViolationTimeClosed != null && ticket.SlaViolationTimeClosed <= DateTime.UtcNow) { notifyTime = (DateTime)ticket.SlaViolationTimeClosed; if (!IsTooOld(notifyTime)) { if (notification.TimeClosedViolationDate == null || Math.Abs(((DateTime)notification.TimeClosedViolationDateUtc - notifyTime).TotalMinutes) > 5) { NotifyViolation(ticket.TicketId, vioUser, vioGroup, false, SlaViolationType.TimeClosed, notification, slaTriggerId); notification.TimeClosedViolationDate = notifyTime; } } } else if (ticket.SlaWarningTimeClosed != null && ticket.SlaWarningTimeClosed <= DateTime.UtcNow) { notifyTime = (DateTime)ticket.SlaWarningTimeClosed; if (!IsTooOld(notifyTime)) { if (notification.TimeClosedWarningDate == null || Math.Abs(((DateTime)notification.TimeClosedWarningDateUtc - notifyTime).TotalMinutes) > 5) { NotifyViolation(ticket.TicketId, warnUser, warnGroup, true, SlaViolationType.TimeClosed, notification, slaTriggerId); notification.TimeClosedWarningDate = notifyTime; } } } notification.Collection.Save(); } }