private string GetCancelingReason(JobStatusLog jobStatusLog) { if (!jobStatusLog.CancellingId.HasValue) { return(null); } var cancelingTemplate = cancelingTemplatesService.GetById(jobStatusLog.CancellingId.Value); return(cancelingTemplate?.Text); }
private void WriteToLog(string message) { Application.Current.Dispatcher.Invoke(() => { if (!string.IsNullOrEmpty(JobStatusLog.Text)) { JobStatusLog.AppendText("\n"); } JobStatusLog.AppendText(GetCurrentTimestamp() + " " + message); JobStatusLog.ScrollToEnd(); }); }
public IJobStatusLogModel GetLatestJobStatusLog(Guid dayAssignId) { IEnumerable <JobStatusLog> jobStatusLogList = jobStatusLogRepository.Query.Where(js => js.DayAssignId == dayAssignId); JobStatusLog jobStatusLog = jobStatusLogList.OrderByDescending(js => js.Date).FirstOrDefault(); if (jobStatusLog == null) { return(null); } var result = jobStatusLog.Map <IJobStatusLogModel>(); result.CancelingReason = GetCancelingReason(jobStatusLog); return(result); }
public void Save(Guid dayAssignId, JobStatus statusId, string comment, List <IMemberSpentTimeModel> timeLogList, Guid?cancelingReasonId, Guid[] uploadedFileIds, Guid?creatorId) { IMemberModel currentUser = creatorId == null?memberService.GetCurrentUser() : memberService.GetById(creatorId.Value); IJobStatusLogModel previousStatusLog = GetLatestJobStatusLog(dayAssignId); JobStatusLog jobStatusLog = new JobStatusLog { DayAssignId = dayAssignId, MemberId = currentUser.MemberId, StatusId = statusId, Date = DateTime.Now, Comment = comment, PreviousStatusId = previousStatusLog?.Id ?? Guid.Empty, TimeLogList = timeLogList?.Select(GetMemberTimeModel) ?? new List <TimeLog>(), CancellingId = cancelingReasonId, UploadedFileIds = uploadedFileIds }; jobStatusLogRepository.Save(jobStatusLog); }
public IJobStatusLogModel GetLatestChangeStatusDataAndSummarizedSpentTime(Guid dayAssignId) { IEnumerable <JobStatusLog> jobStatusLogList = jobStatusLogRepository.Query.Where(js => js.DayAssignId == dayAssignId); IEnumerable <TimeLog> allSpentTimeForUsers = jobStatusLogList.SelectMany(js => js.TimeLogList).ToList(); JobStatusLog jobStatusLog = jobStatusLogList.OrderByDescending(js => js.Date).FirstOrDefault(); if (jobStatusLog == null) { return(null); } jobStatusLog.TimeLogList = allSpentTimeForUsers; var result = jobStatusLog.Map <IJobStatusLogModel>(); result.CancelingReason = GetCancelingReason(jobStatusLog); return(result); }
public IEnumerable <IJobStatusLogModel> GetStatusLogModelList(IEnumerable <Guid> dayAssignIds, bool showLastCompletedOrCanceledStatus) { var dayAssignIdList = dayAssignIds.AsList(); if (!dayAssignIdList.HasValue()) { return(Enumerable.Empty <IJobStatusLogModel>()); } var jobStatusLogModelList = new ConcurrentBag <IJobStatusLogModel>(); List <JobStatusLog> jobStatusLogList = GetJobStatusLogList(dayAssignIdList); List <IGrouping <Guid, JobStatusLog> > jobStatuses = jobStatusLogList.GroupBy(i => i.DayAssignId).ToList(); IEnumerable <Guid> cancelReasonIds = jobStatusLogList.Where(i => i.CancellingId.HasValue).Select(i => i.CancellingId.Value); List <ICancelingTemplateModel> cancelReasons = cancelingTemplatesService.GetByIds(cancelReasonIds).ToList(); Parallel.ForEach(jobStatuses, dayAssignStatuses => { JobStatusLog jobStatusLog = GetJobStatusLog(dayAssignStatuses, showLastCompletedOrCanceledStatus); if (jobStatusLog == null) { return; } jobStatusLog.TimeLogList = dayAssignStatuses.SelectMany(js => js.TimeLogList).ToList(); var model = jobStatusLog.Map <IJobStatusLogModel>(); model.IsCommentExistInAnyStatus = dayAssignStatuses.Any(y => y.Comment.IsNotNullOrEmpty()); if (jobStatusLog.CancellingId.HasValue) { model.CancelingReason = cancelReasons.FirstOrDefault(i => i.Id == jobStatusLog.CancellingId)?.Text; } jobStatusLogModelList.Add(model); }); return(jobStatusLogModelList); }