/// <summary> /// Add/enable manager validation for this document /// </summary> /// <param name="user"></param> protected void SetTypeDocumentValidation(TakeDocModel.Document document, string workflowType, int step) { if (document.DocumentCurrentVersionId.Value == Guid.Empty || document.DocumentCurrentVersionId.Value == null) { throw new Exception("Version can't be empty."); } TakeDocModel.Workflow workflow = new TakeDocModel.Workflow(); workflow.WorkflowId = Guid.NewGuid(); workflow.EntityId = document.EntityId; workflow.WorkflowVersionId = document.DocumentCurrentVersionId.Value; workflow.WorkflowIndex = step; workflow.WorkflowAnswerId = null; workflow.WorkflowTypeId = daoWorkflowType.GetBy(x => x.WorkflowTypeReference == workflowType).First().WorkflowTypeId; workflow.WorkflowTypeDocumentId = document.DocumentTypeId; workflow.WorkflowStatusDocumentId = document.DocumentStatusId; workflow.EtatDeleteData = false; workflow.DateCreateData = System.DateTimeOffset.UtcNow; daoWorkflow.Add(workflow); }
public void SetAnswer(Guid workflowId, Guid versionId, Guid userId, Guid answerId, string comment) { using (TransactionScope transaction = new TransactionScope()) { try { TakeDocModel.Document document = daoDoc.GetBy(x => x.DocumentCurrentVersionId == versionId).First(); ICollection <TakeDocModel.Workflow> workflows = daoWf.GetBy(x => x.WorkflowVersionId == versionId, x => x.WorkflowAnswer); TakeDocModel.Workflow workflow = workflows.Where(x => x.WorkflowId == workflowId && x.WorkflowDateRealize == null && x.WorkflowAnswerId == null).First(); daoWf.SetAnswer(workflow, answerId, userId, comment); TakeDocModel.WorkflowAnswer answer = daoAnswer.GetBy(x => x.WorkflowAnswerId == answerId).First(); if (answer.WorkflowAnswerGoOn == false) { daoWf.CancelWorkflowStep(document.DocumentCurrentVersionId.Value); servStatus.SetStatus(document.DocumentId, TakeDocModel.Status_Document.Refuse, userId, true); } else { bool isAllApprove = !workflows.Any(x => x.WorkflowAnswer == null); if (isAllApprove) { isAllApprove = !workflows.Any(x => x.WorkflowAnswer.WorkflowAnswerGoOn != true); } if (isAllApprove) { servStatus.SetStatus(document.DocumentId, TakeDocModel.Status_Document.Approve, userId, true); } } transaction.Complete(); } catch (Exception ex) { base.Logger.Error("Answer.Answer", ex); throw ex; } } }