Exemplo n.º 1
0
        private List <OpsStageAssignedModel> MapListToModel(IQueryable <OpsStageAssigned> data)
        {
            var stages      = catStageApi.GetAll().Result;
            var departments = catDepartmentApi.GetAll().Result;
            var users       = userRepository.Get();
            var results     = new List <OpsStageAssignedModel>();

            foreach (var item in data)
            {
                var stage        = stages?.FirstOrDefault(x => x.Id == item.StageId);
                var assignedItem = mapper.Map <OpsStageAssignedModel>(item);
                assignedItem.StageCode          = stage?.Code;
                assignedItem.StageNameEN        = stage?.StageNameEn;
                assignedItem.Status             = assignedItem.Status?.Trim();
                assignedItem.DepartmentName     = stage == null? null: departments?.FirstOrDefault(x => x.Id == stage.DepartmentId)?.DeptName;
                assignedItem.DoneDate           = item.Status?.Trim() == DataTypeEx.GetStageStatus(StageEnum.Done) ? item.DatetimeModified : null;
                assignedItem.Description        = assignedItem.Description ?? stages.FirstOrDefault(x => x.Id == item.StageId).DescriptionEn;
                assignedItem.MainPersonInCharge = assignedItem.MainPersonInCharge != null?users.FirstOrDefault(x => x.Id == assignedItem.MainPersonInCharge)?.Username : assignedItem.MainPersonInCharge;

                assignedItem.RealPersonInCharge = assignedItem.RealPersonInCharge != null?users.FirstOrDefault(x => x.Id == assignedItem.RealPersonInCharge)?.Username : assignedItem.RealPersonInCharge;

                results.Add(assignedItem);
            }
            return(results);
        }
Exemplo n.º 2
0
        public HandleState Update(OpsStageAssignedEditModel model)
        {
            var assigned = mapper.Map <OpsStageAssigned>(model);

            assigned.UserModified     = currentUser.UserID;
            assigned.DatetimeModified = DateTime.Now;
            var stageAssigneds   = DataContext.Get(x => x.JobId == model.JobId);
            var job              = opsTransRepository.First(x => x.Id == model.JobId);
            var jobCsTransaction = csTransactionReporsitory.First(x => x.Id == model.JobId);

            if (job == null)
            {
                if (jobCsTransaction.CurrentStatus != OperationConstants.Deleted && jobCsTransaction.CurrentStatus != OperationConstants.Finish)
                {
                    if (assigned.Status?.Trim() == DataTypeEx.GetStageStatus(StageEnum.Overdue))
                    {
                        jobCsTransaction.CurrentStatus = OperationConstants.Overdue;
                    }
                    if (assigned.Status.Contains(DataTypeEx.GetStageStatus(StageEnum.Done)))
                    {
                        var others = stageAssigneds.Where(x => x.Id != model.Id);
                        if (others.All(x => x.Status.Contains(OperationConstants.Done)))
                        {
                            jobCsTransaction.CurrentStatus = OperationConstants.Finish;
                        }
                    }
                    if (jobCsTransaction.CurrentStatus?.Trim() == OperationConstants.InSchedule && assigned.Status.Trim() == OperationConstants.Processing)
                    {
                        jobCsTransaction.CurrentStatus = OperationConstants.Processing;
                    }
                }
            }
            else
            {
                if (job.CurrentStatus != OperationConstants.Deleted && job.CurrentStatus != OperationConstants.Finish)
                {
                    if (assigned.Status?.Trim() == DataTypeEx.GetStageStatus(StageEnum.Overdue))
                    {
                        job.CurrentStatus = OperationConstants.Overdue;
                    }
                    if (assigned.Status.Contains(DataTypeEx.GetStageStatus(StageEnum.Done)))
                    {
                        var others = stageAssigneds.Where(x => x.Id != model.Id);
                        if (others.All(x => x.Status.Contains(OperationConstants.Done)))
                        {
                            job.CurrentStatus = OperationConstants.Finish;
                        }
                    }
                    if (job.CurrentStatus?.Trim() == OperationConstants.InSchedule && assigned.Status.Trim() == OperationConstants.Processing)
                    {
                        job.CurrentStatus = OperationConstants.Processing;
                    }
                }
            }
            var result = new HandleState();

            try
            {
                result = DataContext.Update(assigned, x => x.Id == assigned.Id, false);
                SubmitChanges();
                if (result.Success)
                {
                    if (job == null)
                    {
                        csTransactionReporsitory.Update(jobCsTransaction, x => x.Id == jobCsTransaction.Id);
                        csTransactionReporsitory.SubmitChanges();
                    }
                    else
                    {
                        opsTransRepository.Update(job, x => x.Id == job.Id);
                        opsTransRepository.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                result = new HandleState(ex.Message);
            }
            return(result);
        }