示例#1
0
 /// <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);
 }
示例#2
0
        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;
                }
            }
        }