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