public static string GetSlaNotification(RestCommand command, int ticketID) { SlaNotification slaNotification = SlaNotifications.GetSlaNotification(command.LoginUser, ticketID); if (slaNotification.OrganizationID != command.Organization.OrganizationID) { throw new RestException(HttpStatusCode.Unauthorized); } return(slaNotification.GetXml("SlaNotification", true)); }
public static string GetSlaNotifications(RestCommand command) { SlaNotifications slaNotifications = new SlaNotifications(command.LoginUser); slaNotifications.LoadByOrganizationID(command.Organization.OrganizationID); if (command.Format == RestFormat.XML) { return(slaNotifications.GetXml("SlaNotifications", "SlaNotification", true, command.Filters)); } else { throw new RestException(HttpStatusCode.BadRequest, "Invalid data format"); } }
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(); } }