public static void PickUp(ApiUser User, int TktId, string NoteText) { var _tktOld = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId); if (_tktOld.TechnicianType == Logins.UserType.Queue) //Queue PickUp { UpdateTechnician(User.OrganizationId, User.DepartmentId, TktId, User.UserId, false); InsertLogMessage(User.OrganizationId, User.DepartmentId, TktId, User.UserId, "Queue Pickup", NoteText, "Picked Up from " + _tktOld.TechnicianFirstName + " " + _tktOld.TechnicianLastName + " by " + User.FullName); var _tktNew = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId, true); NotificationRules.RaiseNotificationEvent(User.OrganizationId, User.DepartmentId, User.UserId, NotificationRules.TicketEvent.PickUpTicket, _tktNew, _tktOld, 0, DateTime.MinValue, null); } else { Ticket.UpdateTechnician(User.OrganizationId, User.DepartmentId, TktId, User.UserId, true); if (_tktOld.TicketStatus == Status.OnHold) { Ticket.UpdateStatus(User.OrganizationId, User.DepartmentId, TktId, Ticket.Status.Open); } CustomNames _cNames = CustomNames.GetCustomNames(User.OrganizationId, User.DepartmentId); string sysGeneratedText = User.FullName + " picked up this " + _cNames.Ticket.FullSingular + " from " + _tktOld.TechnicianFirstName + " " + _tktOld.TechnicianLastName; sysGeneratedText += "<br>This " + _cNames.Ticket.FullSingular + " was transferred by choosing route by " + _cNames.Technician.FullSingular + "."; if (_tktOld.TicketStatus == Status.OnHold) { sysGeneratedText += "<br>This " + _cNames.Ticket.FullSingular + " was set back to \"Open\" staus from \"On Hold\" status."; } InsertLogMessage(User.OrganizationId, User.DepartmentId, TktId, User.UserId, "Transfer", NoteText, sysGeneratedText); var _tktNew = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId, true); NotificationRules.RaiseNotificationEvent(User.OrganizationId, User.DepartmentId, User.UserId, NotificationRules.TicketEvent.TransferTicket, _tktNew, _tktOld, 0, DateTime.MinValue, null); } }
// // Constructors // public Names(CustomNames customname) { ticket = new Name(customname.Ticket); account = new Name(customname.Account); tech = new Name(customname.Technician); location = new Name(customname.Location); user = new Name(customname.EndUser); }
public static void UpdateCustomName(int DepartmentId, string TermNodeName, int TermVariantId) { UpdateData(DepartmentId, "sp_UpdateCustomName", new SqlParameter[] { new SqlParameter("@DId", DepartmentId), new SqlParameter("@TermNodeName", TermNodeName), new SqlParameter("@TermVariantId", TermVariantId) }); CustomNames.ClearCache(Guid.Empty, DepartmentId); }
public object Post(Ticket request) { ApiUser hdUser = ApiUser.getUser(base.Request); int _newTktId = Ticket.CreateNew(hdUser, request); if (_newTktId > 0) { if (request.Users != null) { foreach (TicketAssignee _ta in request.Users) { Ticket.AttachAlternateUser(hdUser, _newTktId, _ta.UserId); } } if (request.Technicians != null) { foreach (TicketAssignee _ta in request.Technicians) { Ticket.AttachAlternateTechnician(hdUser, _newTktId, _ta.UserId); } } return(new HttpResult(new Ticket(hdUser.OrganizationId, hdUser.DepartmentId, _newTktId, hdUser.InstanceId)) { StatusCode = HttpStatusCode.Created }); } CustomNames _cNames = CustomNames.GetCustomNames(hdUser.OrganizationId, hdUser.DepartmentId); string errMsg = "Ticket Not Saved. "; switch (_newTktId) { case -1: errMsg += "Input level is not setup for this class."; break; case -2: errMsg += "No routing options are enabled. No route found. Must choose " + _cNames.Technician.AbbreviatedSingular + " specifically."; break; case -3: errMsg += "No Route Found. Routing configuration must be modified."; break; case -4: errMsg += "Level does not exists."; break; case -5: errMsg += "Route found but " + _cNames.Technician.AbbreviatedSingular + " could not be returned. Please check routing order for errors."; break; } throw new HttpError(HttpStatusCode.NotFound, new ArgumentException(errMsg)); }
protected override AzurePipelinesJob GetJob( ExecutableTarget executableTarget, LookupTable <ExecutableTarget, AzurePipelinesJob> jobs, IReadOnlyCollection <ExecutableTarget> relevantTargets) { var job = base.GetJob(executableTarget, jobs, relevantTargets); var symbol = CustomNames.GetValueOrDefault(job.Name).NotNull("symbol != null"); job.DisplayName = job.Parallel == 0 ? $"{symbol} {job.DisplayName}" : $"{symbol} {job.DisplayName} 🧩"; return(job); }
public static void OnHold(ApiUser User, int TktId, string NoteText) { Config _cfg = new Config(User.OrganizationId, User.DepartmentId); CustomNames _cNames = CustomNames.GetCustomNames(User.OrganizationId, User.DepartmentId); if (!_cfg.OnHoldStatus) { throw new HttpError("On Hold " + _cNames.Ticket.fullSingular + " statuses are not enabled for this instance."); } var _tktOld = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId); InsertResponse(User.OrganizationId, User.DepartmentId, TktId, User.UserId, false, false, true, NoteText, string.Empty, 0, string.Empty, false); NotificationRules.RaiseNotificationEvent(User.OrganizationId, User.DepartmentId, User.UserId, NotificationRules.TicketEvent.PlaceOnHoldTicket, new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId, true), _tktOld, 0, DateTime.MinValue, null); }
protected override IEnumerable <TeamCityBuildType> GetBuildTypes( NukeBuild build, ExecutableTarget executableTarget, TeamCityVcsRoot vcsRoot, LookupTable <ExecutableTarget, TeamCityBuildType> buildTypes, IReadOnlyCollection <ExecutableTarget> relevantTargets) { return(base.GetBuildTypes(build, executableTarget, vcsRoot, buildTypes, relevantTargets) .ForEachLazy(x => { var symbol = CustomNames.GetValueOrDefault(x.InvokedTargets.Last()); x.Name = (x.Partition == null ? $"{symbol} {x.Name}" : $"{symbol} {x.InvokedTargets.Last()} 🧩 {x.Partition}").Trim(); })); }
/// <summary> /// <para>Creates a new <see cref="CustomName"/> with the specified <paramref name="id"/>, <paramref name="type"/> and <paramref name="info"/>.</para> /// </summary> public static CustomName CreateCustomName(string id, string type, CustomNameInfo info) { CustomName customName = GetCustomName(id, type); if (customName != null) { string message = string.Concat("A CustomName with Id \"", id, "\" and Type \"", type, "\" already exists!"); Logger.LogError(message); throw new ArgumentException(message, nameof(id)); } CustomNames.Add(customName = new CustomName(id, type, info)); Logger.LogDebug(string.Concat("A CustomName with Id \"", id, "\" and Type \"", type, "\" was created.")); return(customName); }
public static void TransferToTech(ApiUser User, int TktId, int TechId, string NoteText, bool KeepTechAttached) { DataRow _row = Logins.SelectUserDetails(User.OrganizationId, User.DepartmentId, TechId); if (_row == null) { throw new HttpError("The user account Id=" + TechId.ToString() + " is not associated with this Department."); } string techFullName = _row["FirstName"].ToString() + " " + _row["LastName"].ToString(); CustomNames _cNames = CustomNames.GetCustomNames(User.OrganizationId, User.DepartmentId); if ((int)_row["UserType_Id"] != 2 && (int)_row["UserType_Id"] != 3) { throw new HttpError("User " + techFullName + " is not " + _cNames.Technician.FullSingular + " or Administrator."); } var _tktOld = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId); UpdateTechnician(User.OrganizationId, User.DepartmentId, TktId, TechId, KeepTechAttached); if (_tktOld.TicketStatus == Status.OnHold) { UpdateStatus(User.OrganizationId, User.DepartmentId, TktId, Status.Open); } string sysGeneratedText = User.FullName; if (TechId == User.UserId) { sysGeneratedText += " picked up this " + _cNames.Ticket.FullSingular + " from " + _tktOld.TechnicianFirstName + " " + _tktOld.TechnicianLastName; } else { sysGeneratedText += " transfered this " + _cNames.Ticket.FullSingular + " to " + techFullName + "."; } sysGeneratedText += "<br>This " + _cNames.Ticket.FullSingular + " was transferred by choosing route by " + _cNames.Technician.FullSingular + "."; if (_tktOld.TicketStatus == Status.OnHold) { sysGeneratedText += "<br>This " + _cNames.Ticket.FullSingular + " was set back to \"Open\" staus from \"On Hold\" status."; } InsertLogMessage(User.OrganizationId, User.DepartmentId, TktId, User.UserId, "Transfer", NoteText, sysGeneratedText); var _tktNew = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId, true); NotificationRules.RaiseNotificationEvent(User.OrganizationId, User.DepartmentId, User.UserId, NotificationRules.TicketEvent.TransferTicket, _tktNew, _tktOld, 0, DateTime.MinValue, null); }
void InitDepartment(Guid OrgID, int DeptID) { m_DeptID = DeptID; DataRow _row = Companies.SelectOne(OrgID, DeptID); if (_row == null) { return; } m_Name = _row["company_name"].ToString().Trim(' ', '.'); m_DeptGuid = Guid.Parse(_row["company_guid"].ToString()); Micajah.Common.Bll.Instance _inst = OrgID != Guid.Empty ? Micajah.Common.Bll.Providers.InstanceProvider.GetInstance(m_DeptGuid, OrgID) : Micajah.Common.Bll.Providers.InstanceProvider.GetInstance(m_DeptGuid); m_PseudoDeptID = _inst.PseudoId; m_InstanceName = _inst.Name; m_OrgID = _inst.OrganizationId; m_PseudoOrgID = _inst.Organization.PseudoId; m_OrganizationName = _inst.Organization.Name; m_Config = new Config(OrgID, m_DeptGuid, DeptID); m_CustomNames = CustomNames.GetCustomNames(m_OrgID, DeptID); }
public static void ReOpen(ApiUser User, int TktId, string NoteText) { CustomNames _cNames = CustomNames.GetCustomNames(User.OrganizationId, User.DepartmentId); Ticket _tktOld = new Ticket(User.OrganizationId, User.DepartmentId, TktId, User.InstanceId); if (_tktOld.TicketStatus != Ticket.Status.Closed) { throw new HttpError(_cNames.Ticket.FullSingular + " is not Closed now to ReOpen it."); } InsertResponse(User.OrganizationId, User.DepartmentId, TktId, User.UserId, false, _tktOld.UserId == User.UserId, false, NoteText, string.Empty, 0, string.Empty, true); var _tktNew = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId, true); foreach (TicketAssignee _ta in _tktNew.Users) { _ta.SendResponse = true; } foreach (TicketAssignee _ta in _tktNew.Technicians) { _ta.SendResponse = true; } NotificationRules.RaiseNotificationEvent(User.OrganizationId, User.DepartmentId, User.UserId, NotificationRules.TicketEvent.ReOpenTicket, _tktNew, null, 0, DateTime.MinValue, null); }
public static void Close(ApiUser User, int TktId, string NoteText, bool SendNotifications, bool resolved, bool confirmed, string confirm_note) { Config _cfg = new Config(User.OrganizationId, User.DepartmentId); CustomNames _cNames = CustomNames.GetCustomNames(User.OrganizationId, User.DepartmentId); var _tktOld = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId); if (_cfg.ResolutionTracking) { UpdateResolution(User.OrganizationId, User.DepartmentId, TktId, 0, resolved); if (_cfg.ConfirmationTracking && confirmed) { UpdateConfirmation(User.OrganizationId, User.DepartmentId, TktId, User.UserId, true, confirm_note); } } string sysGeneratedText = _cNames.Ticket.FullSingular + " was CLOSED by " + User.FullName + "."; CloseTicket(User.OrganizationId, User.DepartmentId, TktId, User.UserId, NoteText, sysGeneratedText, DateTime.UtcNow, string.Empty); if (SendNotifications) { var _tktNew = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId, true) { IsSendNotificationEmail = true }; foreach (TicketAssignee _ta in _tktNew.Users) { _ta.SendResponse = true; } foreach (TicketAssignee _ta in _tktNew.Technicians) { _ta.SendResponse = true; } NotificationRules.RaiseNotificationEvent(User.OrganizationId, User.DepartmentId, User.UserId, NotificationRules.TicketEvent.CloseTicket, _tktNew, _tktOld, 0, DateTime.MinValue, null); } }
public static string PostProjectTime(ApiUser User, int AccountId, int ProjectId, int TechId, int TaskTypeId, DateTime?start_date, DateTime?stop_date, decimal Hours, int HoursOffset, string NoteText, bool is_billable, DateTime?date, int projectTimeID, int?contract_id, string toDoItemId, string ticket_key) { string response = ""; if (ProjectId > 0 && bigWebApps.bigWebDesk.Data.Project.SelectDetail(User.OrganizationId, User.DepartmentId, ProjectId) == null) { throw new HttpError(System.Net.HttpStatusCode.NotFound, "Wrong Project Id"); } DateTime dateTimeLog = DateTime.UtcNow; if (date.HasValue && date > DateTime.MinValue) { dateTimeLog = (DateTime)date; } string contractName = Contracts.CheckAccountContract(User, AccountId, contract_id ?? 0, dateTimeLog, 0, projectTimeID, ProjectId); string _taskTypeName = string.Empty; DataRow _rowTaskType = bigWebApps.bigWebDesk.Data.TaskType.SelectTaskType(User.OrganizationId, User.DepartmentId, TaskTypeId); if (_rowTaskType == null) { throw new HttpError(System.Net.HttpStatusCode.NotFound, "No Task Types found for TaskTypeId=" + TaskTypeId.ToString() + "."); } _taskTypeName = _rowTaskType["TaskTypeName"].ToString(); if ((Hours > 999) || (Hours < -999)) { throw new HttpError("Hours value should be between -999 and 999."); } DateTime startDate = DateTime.MinValue; DateTime stopDate = DateTime.MinValue; if (start_date.HasValue && start_date > DateTime.MinValue) { startDate = start_date.Value;//.AddHours(HoursOffset); } if (stop_date.HasValue && stop_date > DateTime.MinValue) { stopDate = stop_date.Value;//.AddHours(HoursOffset); } else if (startDate != DateTime.MinValue) { stopDate = startDate.AddHours((double)Hours); } if (Hours == 0 && startDate > DateTime.MinValue && stopDate > DateTime.MinValue) { Hours = Convert.ToDecimal((stopDate - startDate).TotalHours); } if (projectTimeID > 0) { EditProjectTime(User, AccountId, ProjectId, TechId, TaskTypeId, start_date, stop_date, Hours, HoursOffset, NoteText + "", is_billable, date, projectTimeID, contract_id); if (!string.IsNullOrEmpty(ticket_key) && ticket_key != "0") { int tktId = Ticket.GetId(User.OrganizationId, User.DepartmentId, ticket_key); if (tktId > 0) { int _timeLogId = bigWebApps.bigWebDesk.Data.Project.MoveProjectTimeToTicket(User.OrganizationId, User.DepartmentId, projectTimeID, tktId); response = _timeLogId.ToString(); string _hoursFull = ""; if (Hours >= 1) { _hoursFull = ((int)Hours).ToString(); if ((int)Hours == 1) { _hoursFull += " hour "; } else { _hoursFull += " hours "; } } string _minutes = string.Format("{0:00}", Hours * 60 % 60).TrimStart('0'); if (!string.IsNullOrEmpty(_minutes)) { _hoursFull += _minutes; if (_minutes == "1") { _hoursFull += " minute"; } else { _hoursFull += " minutes"; } } if (!string.IsNullOrEmpty(_hoursFull)) { _hoursFull = "(" + _hoursFull.Trim() + ")"; } string sysGeneratedText = User.FullName + " logged " + Hours.ToString("0.00") + " hours " + _hoursFull + " as " + _taskTypeName + " task type"; if (contract_id > 0) { sysGeneratedText += " on " + contractName + " contract"; } sysGeneratedText += "."; CustomNames _cNames = CustomNames.GetCustomNames(User.OrganizationId, User.DepartmentId); bigWebApps.bigWebDesk.Data.Ticket _tkt = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, tktId, true); bigWebApps.bigWebDesk.Data.Ticket.InsertLogMessage(User.OrganizationId, User.DepartmentId, tktId, TechId, "Log Entry", NoteText, sysGeneratedText, string.Empty, string.Empty, string.Empty, _timeLogId); if (NoteText.Length > 0) { sysGeneratedText = NoteText + "<br><br>" + sysGeneratedText; } _tkt.TicketLogs.Insert(0, new bigWebApps.bigWebDesk.Data.Ticket.LogEntry(TechId, User.LoginEmail, User.FirstName, User.LastName, DateTime.UtcNow, _cNames.Technician.FullSingular + " Costs", sysGeneratedText)); foreach (bigWebApps.bigWebDesk.Data.Ticket.TicketAssignee ta in _tkt.Technicians) { ta.SendResponse = true; } foreach (bigWebApps.bigWebDesk.Data.Ticket.TicketAssignee ta in _tkt.Users) { ta.SendResponse = true; } bigWebApps.bigWebDesk.Data.NotificationRules.RaiseNotificationEvent(User.OrganizationId, User.DepartmentId, TechId, bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.EnterLaborCosts, _tkt, null, null); } } return(response); } bigWebApps.bigWebDesk.Data.Project.InsertTimeRecord(User.OrganizationId, User.DepartmentId, ProjectId, TechId, TaskTypeId, dateTimeLog, Hours, NoteText + "", startDate, stopDate, DateTime.UtcNow, TechId, HoursOffset, bigWebApps.bigWebDesk.Data.Logins.SelectTechHourlyRate(User.OrganizationId, User.DepartmentId, TechId, TaskTypeId), ProjectId == -1 ? AccountId : -1, is_billable, contract_id ?? 0, toDoItemId); return(response); }
public static void InputTime(ApiUser User, int TktId, int TaskTypeId, decimal Hours, int HoursOffset, string NoteText) { Config _cfg = new Config(User.OrganizationId, User.DepartmentId); CustomNames _cNames = CustomNames.GetCustomNames(User.OrganizationId, User.DepartmentId); if (!_cfg.TimeTracking) { throw new HttpError("Time Tracking is not enabled for this instance."); } int _taskTypeId = 0; string _taskTypeName = string.Empty; if (TaskTypeId == 0) { DataTable _dtTaskTypes = bigWebApps.bigWebDesk.Data.TaskType.SelectTicketAssignedTaskTypes(User.OrganizationId, User.DepartmentId, User.UserId, TktId); if (_dtTaskTypes.Rows.Count == 0) { throw new HttpError("No Assigned Task Types found for this " + _cNames.Ticket.fullSingular + "."); } _taskTypeId = (int)_dtTaskTypes.Rows[0]["ttID"]; _taskTypeName = _dtTaskTypes.Rows[0]["TaskTypeName"].ToString(); } else { _taskTypeId = TaskTypeId; DataRow _rowTaskType = bigWebApps.bigWebDesk.Data.TaskType.SelectTaskType(User.OrganizationId, User.DepartmentId, _taskTypeId); if (_rowTaskType == null) { throw new HttpError("No Task Types found for TaskTypeId=" + _taskTypeId.ToString() + "."); } _taskTypeName = _rowTaskType["TaskTypeName"].ToString(); } string _hoursFull = ""; if (Hours >= 1) { _hoursFull = ((int)Hours).ToString(); if ((int)Hours == 1) { _hoursFull += " hour "; } else { _hoursFull += " hours "; } } string _minutes = string.Format("{0:00}", Hours * 60 % 60).TrimStart('0'); if (!string.IsNullOrEmpty(_minutes)) { _hoursFull += _minutes; if (_minutes == "1") { _hoursFull += " minute"; } else { _hoursFull += " minutes"; } } if (!string.IsNullOrEmpty(_hoursFull)) { _hoursFull = "(" + _hoursFull.Trim() + ")"; } var _tktOld = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId); string sysGeneratedText = User.FullName; int _timeLogId = 0; if (Hours > 0) { sysGeneratedText = " logged " + Hours.ToString("0.00") + " hours " + _hoursFull + " as " + _taskTypeName + " task type."; decimal _hRate = Logins.SelectTechHourlyRate(User.OrganizationId, User.DepartmentId, User.UserId, _taskTypeId); _timeLogId = bigWebApps.bigWebDesk.Data.Tickets.InsertTime(User.OrganizationId, User.DepartmentId, TktId, User.UserId, DateTime.UtcNow, Hours, NoteText, _hRate, DateTime.UtcNow.AddHours(-(double)Hours), DateTime.UtcNow, _taskTypeId, 0, DateTime.UtcNow, User.UserId, HoursOffset, true); } InsertResponse(User.OrganizationId, User.DepartmentId, TktId, User.UserId, false, _tktOld.UserId == User.UserId, false, NoteText, sysGeneratedText, _timeLogId, string.Empty, false); var _tktNew = new bigWebApps.bigWebDesk.Data.Ticket(User.OrganizationId, User.DepartmentId, TktId, true); foreach (TicketAssignee _ta in _tktNew.Users) { _ta.SendResponse = true; } foreach (TicketAssignee _ta in _tktNew.Technicians) { _ta.SendResponse = true; } NotificationRules.RaiseNotificationEvent(User.OrganizationId, User.DepartmentId, User.UserId, NotificationRules.TicketEvent.TicketResponse, _tktNew, _tktOld, 0, DateTime.MinValue, null); }
void InitDepartment(Guid OrgID, int DeptID) { m_DeptID = DeptID; DataRow _row = Companies.SelectOne(OrgID, DeptID); if (_row == null) return; m_Name = _row["company_name"].ToString().Trim(' ', '.'); m_DeptGuid = Guid.Parse(_row["company_guid"].ToString()); Micajah.Common.Bll.Instance _inst = OrgID != Guid.Empty ? Micajah.Common.Bll.Providers.InstanceProvider.GetInstance(m_DeptGuid, OrgID) : Micajah.Common.Bll.Providers.InstanceProvider.GetInstance(m_DeptGuid); m_PseudoDeptID = _inst.PseudoId; m_InstanceName = _inst.Name; m_OrgID = _inst.OrganizationId; m_PseudoOrgID = _inst.Organization.PseudoId; m_OrganizationName = _inst.Organization.Name; m_Config = new Config(OrgID, m_DeptGuid, DeptID); m_CustomNames = CustomNames.GetCustomNames(m_OrgID, DeptID); }
/// <summary> /// Forces creation of new ticket from Scheduled ticket /// </summary> /// <returns>Id of the created ticket</returns> public static int RunScheduledTicket(int DepartmentId, int ScheduledTicketId, bool IsManualLaunch, out int initialPostId) { int error = 0; initialPostId = 0; CustomNames customNames = CustomNames.GetCustomNames(DepartmentId); DataRow rScheduledTicket = SelectOne(DepartmentId, ScheduledTicketId); int ownerId = 0; int userId = 0; int technicianId = 0; int locationId = 0; int classId = 0; int priorityId = 0; int levelId = 0; int creationCategoryId = 0; string assetSerial = ""; string idMethod = ""; string customXML = ""; DateTime now = DateTime.UtcNow; string rTicketSubjsect = ""; string rTicketText = ""; byte rTicketEndCount = 0; bool rTicketEnabled = false; DateTime rTicketNext = DateTime.MinValue; string rTicketRecurringOn = ""; int rTicketRecurringFrequency = 0; string rTicketEndMethod = ""; DateTime rTicketStop = DateTime.MinValue; int rTicketAccountId = 0; int rTicketAccountLocationId = 0; int rProjectId = 0; int rFolderId = 0; if (rScheduledTicket["intOwnerId"] != DBNull.Value) { ownerId = (int)rScheduledTicket["intOwnerId"]; } if (rScheduledTicket["intUserId"] != DBNull.Value) { userId = (int)rScheduledTicket["intUserId"]; } if (rScheduledTicket["intTechId"] != DBNull.Value) { technicianId = (int)rScheduledTicket["intTechId"]; } if (rScheduledTicket["LocationId"] != DBNull.Value) { locationId = (int)rScheduledTicket["LocationId"]; } if (rScheduledTicket["intClassId"] != DBNull.Value) { classId = (int)rScheduledTicket["intClassId"]; } if (rScheduledTicket["intPriorityId"] != DBNull.Value) { priorityId = (int)rScheduledTicket["intPriorityId"]; } if (rScheduledTicket["tintLevel"] != DBNull.Value) { levelId = (byte)rScheduledTicket["tintLevel"]; } if (rScheduledTicket["CreationCatsId"] != DBNull.Value) { creationCategoryId = (int)rScheduledTicket["CreationCatsId"]; } if (rScheduledTicket["vchAssetSerial"] != DBNull.Value) { assetSerial = (string)rScheduledTicket["vchAssetSerial"]; } if (rScheduledTicket["vchIdMethod"] != DBNull.Value) { idMethod = (string)rScheduledTicket["vchIdMethod"]; } if (rScheduledTicket["CustomXML"] != DBNull.Value) { customXML = (string)rScheduledTicket["CustomXML"]; } if (rScheduledTicket["vchSubject"] != DBNull.Value) { rTicketSubjsect = (string)rScheduledTicket["vchSubject"]; } if (rScheduledTicket["vchText"] != DBNull.Value) { rTicketText = (string)rScheduledTicket["vchText"]; } rTicketText += "<br><br>This " + customNames.Ticket.FullSingular + " was created via Scheduled " + customNames.Ticket.FullPlural + "."; if (rScheduledTicket["tintEndCount"] != DBNull.Value) { rTicketEndCount = (byte)rScheduledTicket["tintEndCount"]; } if (rScheduledTicket["btEnabled"] != DBNull.Value) { rTicketEnabled = (bool)rScheduledTicket["btEnabled"]; } if (rScheduledTicket["dtNext"] != DBNull.Value) { rTicketNext = (DateTime)rScheduledTicket["dtNext"]; } if (rScheduledTicket["vchRecurringOn"] != DBNull.Value) { rTicketRecurringOn = (string)rScheduledTicket["vchRecurringOn"]; } if (rScheduledTicket["tintRecurringFeq"] != DBNull.Value) { rTicketRecurringFrequency = (byte)rScheduledTicket["tintRecurringFeq"]; } if (rScheduledTicket["vchEndMethod"] != DBNull.Value) { rTicketEndMethod = (string)rScheduledTicket["vchEndMethod"]; } if (rScheduledTicket["dtStop"] != DBNull.Value) { rTicketStop = (DateTime)rScheduledTicket["dtStop"]; } if (rScheduledTicket["IntAcctId"] != DBNull.Value) { rTicketAccountId = (int)rScheduledTicket["IntAcctId"]; } if (rScheduledTicket["AccountLocationId"] != DBNull.Value) { rTicketAccountLocationId = (int)rScheduledTicket["AccountLocationId"]; } if (!rScheduledTicket.IsNull("ProjectID")) { rProjectId = (int)rScheduledTicket["ProjectID"]; } if (!rScheduledTicket.IsNull("FolderID")) { rFolderId = (int)rScheduledTicket["FolderID"]; } switch (rTicketEndMethod) { case "Date": if (IsManualLaunch && rTicketStop < rTicketNext) { error = -1; } else if (!IsManualLaunch && rTicketStop < now) { error = -1; } break; case "Times": if (rTicketEndCount > 0) { rTicketEndCount--; } else { error = -2; } rTicketEnabled = rTicketEndCount > 0; break; } if (rTicketRecurringOn != "no") { string daysOfWeek = rTicketRecurringOn.Substring(1); int totalDifference = daysOfWeek.Length > 0 ? Functions.GetWeekdayIndex(rTicketNext) - int.Parse(daysOfWeek[0].ToString()) : 0; if (IsManualLaunch) { switch (rTicketRecurringOn[0]) { case 'd': rTicketNext = rTicketNext.AddDays(rTicketRecurringFrequency); break; case 'w': int differenceToNextDay = DifferenceToNextDayOfWeek(daysOfWeek, Functions.GetWeekdayIndex(rTicketNext)); if (differenceToNextDay == -1) { rTicketNext = rTicketNext.AddDays(rTicketRecurringFrequency * 7 - totalDifference); totalDifference = 0; } else { rTicketNext = rTicketNext.AddDays(differenceToNextDay); totalDifference += differenceToNextDay; } break; case 'm': rTicketNext = rTicketNext.AddMonths(rTicketRecurringFrequency); break; default: error = -3; rTicketEnabled = false; break; } } else { while (rTicketNext <= now) { switch (rTicketRecurringOn[0]) { case 'd': rTicketNext = rTicketNext.AddDays(rTicketRecurringFrequency); break; case 'w': int differenceToNextDay = DifferenceToNextDayOfWeek(daysOfWeek, Functions.GetWeekdayIndex(rTicketNext)); if (differenceToNextDay == -1) { rTicketNext = rTicketNext.AddDays(rTicketRecurringFrequency * 7 - totalDifference); totalDifference = 0; } else { rTicketNext = rTicketNext.AddDays(differenceToNextDay); totalDifference += differenceToNextDay; } break; case 'm': rTicketNext = rTicketNext.AddMonths(rTicketRecurringFrequency); break; default: error = -3; rTicketEnabled = false; break; } } } } else { rTicketEnabled = false; } rTicketEnabled = error == 0; if (error < 0) { UpdateDates(DepartmentId, ScheduledTicketId, rTicketEnabled, rTicketNext, rTicketEndCount); if (!IsManualLaunch && !rTicketEnabled) { Data.NotificationEventsQueue.DeleteEvents(DepartmentId, ScheduledTicketId); } return(error); } int newTicketId = Data.Tickets.CreateNew(Guid.Empty, DepartmentId, ownerId, technicianId, userId, DateTime.MinValue, rTicketAccountId, rTicketAccountLocationId, false, locationId, classId, levelId, "Scheduled/Recurring Ticket", false, creationCategoryId, true, priorityId, DateTime.MinValue, "", assetSerial, SelectTicketAssets(DepartmentId, ScheduledTicketId), idMethod, customXML, rTicketSubjsect, rTicketText, null, "Open", out initialPostId, rProjectId, rFolderId, ScheduledTicketId, -1); if (newTicketId > 0) { UpdateDates(DepartmentId, ScheduledTicketId, rTicketEnabled, rTicketNext, rTicketEndCount); if (!IsManualLaunch) { FileItem[] fileItems = NotificationEventsQueue.SelectNotificationEventFilesToArray(DepartmentId, ScheduledTicketId); if (rTicketEnabled) { NotificationRules.RaiseNotificationEvent(DepartmentId, userId, ScheduledTicketId, rTicketNext, fileItems); } else { NotificationEventsQueue.DeleteEvents(DepartmentId, ScheduledTicketId); } } } return(newTicketId); }
/// <summary> /// <para>Finds an existing <see cref="CustomName"/> by its <paramref name="id"/> and <paramref name="type"/>.</para> /// </summary> public static CustomName GetCustomName(string id, string type) => CustomNames.Find(n => n.Id == id && n.Type == type);