Exemplo n.º 1
0
        public ActionInitialising InitialiseAction <T>(
            WorkflowAction workflowAction,
            DateTime?expiryDate,
            DateTime?executeOnDate = null) where T : Workflow
        {
            var workflowType = typeof(T);
            var workflowName = workflowType.Name;

            var actionType = workflowAction.GetType();
            var actionName = actionType.Name;

            if (expiryDate < DateTime.UtcNow || expiryDate is null)
            {
                expiryDate = DateTime.UtcNow.AddDays(1);
            }

            var workflow = StateflowDbContext
                           .Queries
                           .FetchWorkflowByName(this, workflowName);

            var actionData = workflowAction.GetData();

            var output = JsonConvert.SerializeObject(actionData);

            var actionEntity = new WorkflowActionEntity
            {
                Uuid          = Guid.NewGuid(),
                WorkflowUuid  = workflow.Uuid,
                Retries       = 0,
                ActionBody    = output,
                ActionName    = actionName,
                ActionEvent   = string.Empty,
                IsComplete    = false,
                DateToExecute = executeOnDate,
                DateExpires   = expiryDate,
                DateCreated   = DateTime.UtcNow,
                DateModified  = DateTime.UtcNow,
                DateProcessed = null
            };

            return(new ActionInitialising(actionEntity, this));
        }