예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }