public int Save(DecisionExecutionDTO obj, string currentUserId)
        {
            DecisionExecution DecisionExecution;

            try
            {
                _unitOfWork.BeginTransaction();
                DecisionExecution = _repository.Find(obj.Id);
                Mapper.Map <DecisionExecutionDTO, DecisionExecution>(obj, DecisionExecution);
                DecisionExecution.LastUpdateDate = DateTime.Now;
                DecisionExecution.LastUpdateBy   = currentUserId;
                base.Update(DecisionExecution);
                _unitOfWork.SaveChanges();


                var decision = _DecisionRepository.Query().Include(c => c.DecisionExecutions).SelectQueryable().Where(c => c.Id == obj.DecisionId).FirstOrDefault();
                decision.DecisionStatus = decision.DecisionExecutions.OrderBy(c => c.DecisionStatus).FirstOrDefault().DecisionStatus;
                decision.LastUpdateDate = DateTime.Now;
                decision.LastUpdateBy   = currentUserId;
                _DecisionRepository.Update(decision);
                _unitOfWork.SaveChanges();
                _unitOfWork.Commit();
                return(DecisionExecution.Id);
            }
            catch (Exception)
            {
                throw;
            }
        }
 public IHttpActionResult ExecuteDecision(DecisionExecutionDTO decisionExecution)
 {
     if (ModelState.IsValid)
     {
         decisionExecution.Id = _decisionBLL.ExecuteDecision(decisionExecution, _appicationContext.GetUserId());
         return(Ok());
     }
     else
     {
         return(BadRequest(ModelState));
     }
 }
 public DecisionExecutionDTO GetById(int decisionId, string userId)
 {
     try
     {
         DecisionExecutionDTO decisionExecution = new DecisionExecutionDTO();
         var departmentId = _departmentResponsibleRepository.Query().SelectQueryable().Where(c => c.UserId == userId).FirstOrDefault().DepartmentId;
         Mapper.Map <DecisionExecution, DecisionExecutionDTO>(_repository
                                                              .Query()
                                                              .Include(c => c.Decision)
                                                              .Include(c => c.Department)
                                                              .SelectQueryable()
                                                              .Where(c => (c.DecisionId == decisionId && c.DepartmentId == departmentId)).FirstOrDefault(), decisionExecution);
         return(decisionExecution);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Beispiel #4
0
        public int ExecuteDecision(DecisionExecutionDTO decisionExecutionDTO, string currentuserId)
        {
            DecisionExecution decisionExecution = new DecisionExecution();

            try
            {
                _unitOfWork.BeginTransaction();
                decisionExecution = _decisionExecutionRepository
                                    .Query()
                                    .SelectQueryable().Where(c => c.Id == decisionExecutionDTO.Id).FirstOrDefault();

                decisionExecution.ExecutionDate  = DateTime.Now;
                decisionExecution.ExecutionNotes = decisionExecutionDTO.ExecutionNotes;
                decisionExecution.DecisionStatus = (int)EnumDecisionStatus.Executed;

                if (_unitOfWork.SaveChanges() > 0)
                {
                    ///decision File

                    string fileToCopy = String.Format("{0}//{1}//{2}", ConfigurationManager.AppSettings["TempDecisionExecutionPath"], currentuserId, decisionExecutionDTO.AttachementName.Replace("\"", ""));
                    if (File.Exists(fileToCopy))
                    {
                        var decisionPath = ConfigurationManager.AppSettings["DecisionPath"] + "//" + decisionExecution.DecisionId + "//DecisionExecution";
                        if (!Directory.Exists(decisionPath))
                        {
                            Directory.CreateDirectory(decisionPath);
                        }
                        if (!Directory.Exists(decisionPath + "//" + decisionExecutionDTO.Id.ToString()))
                        {
                            Directory.CreateDirectory(decisionPath + "//" + decisionExecutionDTO.Id.ToString());
                        }
                        File.Copy(fileToCopy, decisionPath + "//" + decisionExecutionDTO.Id.ToString() + "//" + Path.GetFileName(fileToCopy));
                        decisionExecution.AttachementName = String.Format("{0}//{1}", decisionExecution.DecisionId + "//DecisionExecution//" + decisionExecutionDTO.Id.ToString(), Path.GetFileName(fileToCopy));
                    }
                }
                _decisionExecutionRepository.Update(decisionExecution);
                _unitOfWork.SaveChanges();
                int decisStatus      = (int)EnumDecisionStatus.NotStrated;
                var listofExecutores = _decisionExecutionRepository.Query().SelectQueryable().Where(c => c.DecisionId == decisionExecution.DecisionId).ToList();
                if (listofExecutores.Where(c => c.DecisionStatus == (int)EnumDecisionStatus.Executed).Count() == listofExecutores.Count())
                {
                    decisStatus = (int)EnumDecisionStatus.Executed;
                }
                else if (listofExecutores.Where(c => c.DecisionStatus == (int)EnumDecisionStatus.Executed).Count() < listofExecutores.Count() && listofExecutores.Where(c => c.DecisionStatus == (int)EnumDecisionStatus.Executed).Count() > 0)
                {
                    decisStatus = (int)EnumDecisionStatus.UnderExecution;
                }
                var decObject = _repository.Find(decisionExecution.DecisionId);
                decObject.DecisionStatus = decisStatus;
                decObject.TrackingState  = TrackableEntities.TrackingState.Modified;
                _repository.Update(decObject);
                _unitOfWork.SaveChanges();
                var notification = _notificationBLL.Query().SelectQueryable().Where(c => c.UserId == currentuserId && c.DecisionId == decisionExecution.DecisionId).FirstOrDefault();
                notification.IsOpen        = true;
                notification.TrackingState = TrackableEntities.TrackingState.Modified;
                _notificationBLL.Update(notification);
                _unitOfWork.SaveChanges();
                _unitOfWork.Commit();
                return(decisionExecution.Id);
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }