private WorkflowItem AddWorkflowItem(Document document, User user, WorkflowDecisions workflowDecision, string message)
        {
            WorkflowItem workflowItem = new WorkflowItem();
            workflowItem.Decision = (int)workflowDecision;
            workflowItem.DecisionDate = DateTime.Now;
            workflowItem.Document = document;
            workflowItem.Message = message;
            workflowItem.User = user;

            return workflowItem;
        }
 public void MakeWorkflowDecision(User user, Document document, WorkflowDecisions decision, string message)
 {
     var workflowItem = AddWorkflowItem(document, user, decision, message);
     ClearDocumentReviewQueue(document);
     switch (decision)
     {
         case WorkflowDecisions.Accept:
             document.ApprovedBy = user;
             document.ApprovalDate = DateTime.Now;
             document.State = DocumentState.Finalized;
             break;
         case WorkflowDecisions.Reject:
             document.State = DocumentState.Working;
             break;
         case WorkflowDecisions.SendToSuperior:
             document.State = DocumentState.InReview;
             AddDocumentReviewQueueItem(user, document, workflowItem);
             break;
     }
     SaveDocument(document);
 }