Esempio n. 1
0
        public static int RaiseNotificationEvent(Guid OrgID, int DeptID, int UserId, TicketEvent tktEvent, Ticket tkt, Ticket oldTkt, int ScheduledTicketId, DateTime RunTime, FileItem[] tktFiles)
        {
            XmlSerializer _serializer  = new XmlSerializer(typeof(Ticket));
            string        _objStateNew = string.Empty;

            if (tkt != null)
            {
                TextWriter _stream = new StringWriter();
                _serializer.Serialize(_stream, tkt);
                _objStateNew = _stream.ToString();
                _stream.Close();
            }
            string _objStateOld = string.Empty;

            if (oldTkt != null)
            {
                TextWriter _stream = new StringWriter();
                _serializer.Serialize(_stream, oldTkt);
                _objStateOld = _stream.ToString();
                _stream.Close();
            }
            return(NotificationEventsQueue.InsertEvent(OrgID, DeptID, UserId, tktEvent, _objStateNew, _objStateOld, tktFiles, ScheduledTicketId, RunTime));
        }
Esempio n. 2
0
        public string Commit(UseSendMailEngine mail_engine, bool IsBodyHtml)
        {
            string _result = string.Empty;

            try
            {
                switch (mail_engine)
                {
                case UseSendMailEngine.SystemWebMail:
                    Functions.SendEmail(_from, string.Empty, _to, string.Empty, null, _subject, _body, _files, IsBodyHtml);
                    break;

                case UseSendMailEngine.NotificationService:
                    XmlSerializer _serializer = new XmlSerializer(typeof(MailNotification));
                    TextWriter    _stream     = new StringWriter();
                    _serializer.Serialize(_stream, this);
                    string _object_state = _stream.ToString();
                    _stream.Close();
                    NotificationRules.TicketEvent _event = IsBodyHtml ? NotificationRules.TicketEvent.DirectMailAsHTML : NotificationRules.TicketEvent.DirectMail;
                    int _operation_result = NotificationEventsQueue.InsertEvent(_org_id, _department_id, _user_id, _event, _object_state, _files);
                    if (_operation_result <= 0)
                    {
                        _result = "Can't add mass mailes to NotificationEventsQueue.";
                    }

                    break;
                }
                ;
            }
            catch (Exception ex)
            {
                _result = ex.Message;
            };

            return(_result);
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
 public static int RaiseNotificationEvent(int DeptID, int UserId, int ScheduledTicketId, DateTime RunTime, FileItem[] tktFiles)
 {
     NotificationEventsQueue.DeleteEvents(Guid.Empty, DeptID, ScheduledTicketId);
     return(RaiseNotificationEvent(Guid.Empty, DeptID, UserId, TicketEvent.NewTicket, null, null, ScheduledTicketId, RunTime, tktFiles));
 }