Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        //
        // 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);
        }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 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();
     }));
 }
Ejemplo n.º 8
0
        /// <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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
            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);
            }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
            }
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
 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);
 }
Ejemplo n.º 16
0
        /// <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);
        }
Ejemplo n.º 17
0
 /// <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);