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 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); }