public async Task <ActionResult> AdvanceStep([FromRoute] int id, string comments)
        {
            var workflowId = Context.Ticket.Where(t => t.Id == id && t.WorkflowId.HasValue)
                             .Select(t => t.WorkflowId.Value)
                             .FirstOrDefault();

            var workflowDetails = await WorkflowService.GetWorkflowDetailsAsync(workflowId);

            // TODO: Resolve this problem
            if (workflowDetails?.StatusId != (int)WorkflowStatuses.WaitingSettlement)
            {
                return(BadRequest());
            }

            await WorkflowService.ApproveAsync(workflowId, User.Identity.Name, comments ?? "");

            return(Ok());
        }
        public async Task <ActionResult> Approve([FromServices] EventBus eventBus, int id, string comments)
        {
            var workflowId = Context.Ticket.Where(t => t.Id == id && t.WorkflowId.HasValue)
                             .Select(t => t.WorkflowId.Value)
                             .FirstOrDefault();

            var previousStatus = await WorkflowService.GetWorkflowDetailsAsync(workflowId);

            var isFinished = await WorkflowService.ApproveAsync(workflowId, User.Identity.Name, comments);

            eventBus.Dispatch(new TicketStatusChangedEvent(id,
                                                           isApproved: true,
                                                           previousStatus: previousStatus.StatusDescription,
                                                           comments: comments,
                                                           user: User.Identity.Name));

            return(Ok());
        }