예제 #1
0
        public void SetTimeZone(TaskEmailPost taskEmailPost)
        {
            LoginUser.TimeZoneInfo = null;
            Organization organization = Users.GetTSOrganization(LoginUser, taskEmailPost.CreatorID);

            if (organization != null)
            {
                try
                {
                    LoginUser.TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(organization.TimeZoneID);
                    Logs.WriteEvent("TimeZoneID: " + organization.TimeZoneID);
                }
                catch (Exception)
                {
                    LoginUser.TimeZoneInfo = null;
                }

                try
                {
                    LoginUser.OrganizationCulture = new CultureInfo(organization.CultureName);
                    Logs.WriteEvent("Culture: " + organization.CultureName);
                }
                catch (Exception)
                {
                    LoginUser.OrganizationCulture = new CultureInfo("en-US");
                }
            }

            if (LoginUser.TimeZoneInfo == null)
            {
                LoginUser.TimeZoneInfo = TimeZoneInfo.Utc;
            }
        }
예제 #2
0
        public void ProcessEmail(TaskEmailPost taskEmailPost)
        {
            _currentTaskEmailPostID = taskEmailPost.TaskEmailPostID;
            Logs.WriteEvent("TaskEmailPostType: " + taskEmailPost.TaskEmailPostType.ToString());

            switch ((TaskEmailPostType)taskEmailPost.TaskEmailPostType)
            {
            case TaskEmailPostType.Modified:
                ProcessTaskModified(taskEmailPost.TaskID, taskEmailPost.CreatorID);
                break;

            case TaskEmailPostType.Assigned:
                ProcessTaskAssigned(taskEmailPost.TaskID, taskEmailPost.CreatorID);
                break;

            case TaskEmailPostType.Complete:
                ProcessTaskComplete(taskEmailPost.TaskID, taskEmailPost.CreatorID);
                break;

            case TaskEmailPostType.OldUser:
                ProcessOldUser(taskEmailPost.TaskID, taskEmailPost.CreatorID, (int)taskEmailPost.OldUserID);
                break;

            default:
                break;
            }
        }
예제 #3
0
        public static string GetTaskEmailPost(RestCommand command, int taskEmailPostID)
        {
            TaskEmailPost taskEmailPost = TaskEmailPosts.GetTaskEmailPost(command.LoginUser, taskEmailPostID);

            if (taskEmailPost.OrganizationID != command.Organization.OrganizationID)
            {
                throw new RestException(HttpStatusCode.Unauthorized);
            }
            return(taskEmailPost.GetXml("TaskEmailPost", true));
        }
예제 #4
0
        public override void Run()
        {
            TaskEmailPosts.UnlockThread(LoginUser, (int)_threadPosition);
            while (!IsStopped)
            {
                TaskEmailPost taskEmailPost = GetNextTaskEmailPost(LoginUser.ConnectionString, (int)_threadPosition, _isDebug);
                if (taskEmailPost == null)
                {
                    System.Threading.Thread.Sleep(10000);
                    continue;
                }

                try
                {
                    try
                    {
                        if (taskEmailPost.CreatorID != -5)
                        {
                            _isDebug    = Settings.ReadBool("Debug", false);
                            _logEnabled = Settings.ReadInt("LoggingEnabled", 0) == 1;

                            Logs.WriteLine();
                            Logs.WriteEvent("***********************************************************************************");
                            Logs.WriteEvent("Processing Task Email Post  TaskEmailPostID: " + taskEmailPost.TaskEmailPostID.ToString());
                            Logs.WriteData(taskEmailPost.Row);
                            Logs.WriteEvent("***********************************************************************************");
                            SetTimeZone(taskEmailPost);
                            ProcessEmail(taskEmailPost);
                        }
                    }
                    catch (Exception ex)
                    {
                        ExceptionLogs.LogException(LoginUser, ex, "Email", taskEmailPost.Row);
                    }
                    finally
                    {
                        Logs.WriteEvent("Deleting from DB");
                        taskEmailPost.Collection.DeleteFromDB(taskEmailPost.TaskEmailPostID);
                    }

                    Logs.WriteEvent("Updating Health");
                    UpdateHealth();
                }
                catch (Exception ex)
                {
                    ExceptionLogs.LogException(LoginUser, ex, "Email", taskEmailPost.Row);
                }
            }
        }
예제 #5
0
        private void SendCompletedNotification(int creatorID, int taskID)
        {
            TaskEmailPosts existingPosts = new TaskEmailPosts(TSAuthentication.GetLoginUser());

            existingPosts.LoadByTaskID(taskID);
            if (existingPosts.Count == 0)
            {
                TaskEmailPosts posts = new TaskEmailPosts(TSAuthentication.GetLoginUser());
                TaskEmailPost  post  = posts.AddNewTaskEmailPost();
                post.TaskEmailPostType = (int)TaskEmailPostType.Complete;
                post.HoldTime          = 120;

                post.CreatorID = creatorID;
                post.TaskID    = taskID;
                posts.Save();
            }
        }