예제 #1
0
        public static JobLog MakeLogEntryForCategory(Job jobNew, Job jobOld)
        {
            string note   = "Job Category was changed from " + jobOld.Category.ToString() + " to " + jobNew.Category.ToString() + ".";
            JobLog jobLog = new JobLog()
            {
                JobNum          = jobOld.JobNum,
                UserNumChanged  = Security.CurUser.UserNum,
                UserNumExpert   = jobOld.UserNumExpert,
                UserNumEngineer = jobOld.UserNumEngineer,
                Title           = jobOld.Title,
                Description     = note,
                TimeEstimate    = TimeSpan.FromHours(jobNew.HoursEstimate)
            };

            JobLogs.Insert(jobLog);
            JobNotifications.UpsertAllNotifications(jobNew, Security.CurUser.UserNum, JobNotificationChanges.CategoryChange);
            return(JobLogs.GetOne(jobLog.JobLogNum));           //to get new timestamp.
        }
예제 #2
0
        public static JobLog MakeLogEntryForProject(Job jobNew, Job jobOld)
        {
            string note   = $@"Job Project was manually changed from {jobOld.PatternReviewProject.ToString()} to {jobNew.PatternReviewProject.ToString()}.";
            JobLog jobLog = new JobLog()
            {
                JobNum          = jobOld.JobNum,
                UserNumChanged  = Security.CurUser.UserNum,
                UserNumExpert   = jobOld.UserNumExpert,
                UserNumEngineer = jobOld.UserNumEngineer,
                Title           = jobOld.Title,
                Description     = note,
                TimeEstimate    = TimeSpan.FromHours(jobNew.HoursEstimate)
            };

            JobLogs.Insert(jobLog);
            JobNotifications.UpsertAllNotifications(jobNew, Security.CurUser.UserNum, JobNotificationChanges.PhaseChange);
            return(JobLogs.GetOne(jobLog.JobLogNum));           //to get new timestamp.
        }
예제 #3
0
        /// <summary>Inserts log entry to DB and returns the resulting JobLog.  Returns null if no log was needed.</summary>
        public static JobLog MakeLogEntry(Job jobNew, Job jobOld, bool isManualLog = false)
        {
            if (jobNew == null)
            {
                return(null);
            }
            JobNotificationChanges changes = new JobNotificationChanges();
            JobLog jobLog = new JobLog()
            {
                JobNum          = jobNew.JobNum,
                UserNumChanged  = Security.CurUser.UserNum,
                UserNumExpert   = jobNew.UserNumExpert,
                UserNumEngineer = jobNew.UserNumEngineer,
                Description     = "",
                TimeEstimate    = TimeSpan.FromHours(jobNew.HoursEstimate)
            };

            if (isManualLog)
            {
                jobLog.Description = "Manual \"last worked on\" update";
                JobLogs.Insert(jobLog);
                return(JobLogs.GetOne(jobLog.JobLogNum));               //to get new timestamp.
            }
            List <string> logDescriptions = new List <string>();

            if (jobOld.IsApprovalNeeded && !jobNew.IsApprovalNeeded)
            {
                if (jobOld.PhaseCur == JobPhase.Concept && (jobNew.PhaseCur == JobPhase.Definition || jobNew.PhaseCur == JobPhase.Development))
                {
                    logDescriptions.Add("Concept approved.");
                    jobLog.MainRTF          = jobNew.Implementation;
                    jobLog.RequirementsRTF += jobNew.Requirements;
                    changes = changes | JobNotificationChanges.ApprovalChange;
                }
                if ((jobOld.PhaseCur == JobPhase.Concept || jobOld.PhaseCur == JobPhase.Definition) && jobNew.PhaseCur == JobPhase.Development)
                {
                    logDescriptions.Add("Job approved.");
                    jobLog.MainRTF          = jobNew.Implementation;
                    jobLog.RequirementsRTF += jobNew.Requirements;
                    changes = changes | JobNotificationChanges.ApprovalChange;
                }
                if (jobOld.PhaseCur == JobPhase.Development && jobNew.PhaseCur == JobPhase.Development)
                {
                    logDescriptions.Add("Changes approved.");
                    jobLog.MainRTF          = jobNew.Implementation;
                    jobLog.RequirementsRTF += jobNew.Requirements;
                    changes = changes | JobNotificationChanges.ApprovalChange;
                }
            }
            else if (jobNew.PhaseCur.In(JobPhase.Documentation, JobPhase.Complete) && !jobOld.PhaseCur.In(JobPhase.Documentation, JobPhase.Complete))
            {
                logDescriptions.Add("Job implemented.");
                jobLog.MainRTF         += jobNew.Implementation;
                jobLog.RequirementsRTF += jobNew.Requirements;
            }
            if (jobOld.PhaseCur > jobNew.PhaseCur && jobOld.PhaseCur != JobPhase.Cancelled)
            {
                logDescriptions.Add("Job Unapproved.");                //may be a chance for a false positive when using override permission.
            }
            if (jobOld.PhaseCur != JobPhase.Cancelled && jobNew.PhaseCur == JobPhase.Cancelled)
            {
                logDescriptions.Add("Job Cancelled.");                //may be a chance for a false positive when using override permission.
            }
            if (jobNew.UserNumExpert != jobOld.UserNumExpert)
            {
                logDescriptions.Add("Expert changed.");
                changes = changes | JobNotificationChanges.ExpertChange;
            }
            if (jobNew.UserNumEngineer != jobOld.UserNumEngineer)
            {
                logDescriptions.Add("Engineer changed.");
                changes = changes | JobNotificationChanges.EngineerChange;
            }
            if (jobOld.Requirements != jobNew.Requirements)
            {
                logDescriptions.Add("Job Requirements Changed.");
                jobLog.RequirementsRTF += jobNew.Requirements;
                changes = changes | JobNotificationChanges.ConceptChange;
            }
            if (jobOld.Implementation != jobNew.Implementation)
            {
                logDescriptions.Add("Job Implementation Changed.");
                jobLog.MainRTF += jobNew.Implementation;
                changes         = changes | JobNotificationChanges.WriteupChange;
            }
            //Do not log RequirementsJSON changes here.
            //if(jobOld.RequirementsJSON!=jobNew.RequirementsJSON) {
            //	logDescriptions.Add("Job Requirements List Changed.");
            //	changes=changes|JobNotificationChanges.ConceptChange;
            //}
            if (jobOld.Title != jobNew.Title)
            {
                logDescriptions.Add("Job Title Changed.");
            }
            if (jobOld.HoursEstimate != jobNew.HoursEstimate)
            {
                logDescriptions.Add("Job Estimate Changed from " + jobOld.HoursEstimate.ToString() + " hour(s) to " + jobNew.HoursEstimate.ToString() + " hour(s).");
            }
            jobLog.Title       = jobNew.Title;
            jobLog.Description = string.Join("\r\n", logDescriptions);
            if (string.IsNullOrEmpty(jobLog.Description))
            {
                return(null);
            }
            JobLogs.Insert(jobLog);
            JobNotifications.UpsertAllNotifications(jobNew, Security.CurUser.UserNum, changes);
            return(JobLogs.GetOne(jobLog.JobLogNum));           //to get new timestamp.
        }