示例#1
0
        public async Task <int> CreateAsync(IssueViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            var issue = Issue.Create(_userContext.UserName);

            issue.Title       = model.Title;
            issue.Description = model.Description;
            if (!string.IsNullOrWhiteSpace(model.Assignee))
            {
                issue.Assignee = model.Assignee;
            }

            this._context.Issues.Add(issue);

            await this._context.SaveChangesAsync();

            // await this._messageBus.PublishAsync(WorkItemMessage.Create(
            //   IssueTrackingWorkflow.ASSIGN_TRIGGER,
            //   issue.Id,
            //   issue.Type
            // ));

            return(issue.Id);
        }
示例#2
0
        private IssueViewModel ToViewModel(Issue issue)
        {
            var viewModel = new IssueViewModel
            {
                Id          = issue.Id,
                Trigger     = string.Empty,
                Assignee    = issue.Assignee,
                Title       = issue.Title,
                Description = issue.Description
            };

            return(viewModel);
        }
示例#3
0
        public async Task <IWorkflowResult <AssigneeWorkflowResult> > ProcessAsync(IssueViewModel model)
        {
            var issue = await FindOrCreate(model.Id);

            var triggerParam = new TriggerParam(model.Trigger, issue)
                               .AddVariableWithKey <IssueViewModel>(model);

            var triggerResult = await this._workflowEngine.TriggerAsync(triggerParam);

            var info = await this._workflowEngine.ToWorkflowTriggerInfo(issue, triggerResult);

            var viewModel = new AssigneeWorkflowResult(issue.Assignee);

            return(new WorkflowResult <Issue, AssigneeWorkflowResult>(info, issue, viewModel));
        }
示例#4
0
        public async Task <IWorkflowResult <IssueViewModel> > NewAsync()
        {
            var issue        = Issue.Create(_userContext.UserName);
            var triggerParam = new TriggerParam(IssueTrackingWorkflow.ASSIGN_TRIGGER, issue);

            var triggerResult = await this._workflowEngine.CanTriggerAsync(triggerParam);

            var info = await this._workflowEngine.ToWorkflowTriggerInfo(issue, triggerResult);

            var viewModel = new IssueViewModel();

            var result = new WorkflowResult <Issue, IssueViewModel>(info, issue, viewModel);

            return(await Task.FromResult <IWorkflowResult <IssueViewModel> >(result));
        }
示例#5
0
        public async Task <IActionResult> Process([FromBody] IssueViewModel model)
        {
            if (model == null)
            {
                return(BadRequest());
            }
            if (!this.ModelState.IsValid)
            {
                return(BadRequest(this.ModelState));
            }

            var result = await this._service.ProcessAsync(model);

            return(Ok(result));
        }
示例#6
0
        public async Task <IActionResult> Post([FromBody] IssueViewModel model)
        {
            if (model == null)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _service.CreateAsync(model);

            return(Created($"api/issue/{result}", result));
        }
示例#7
0
        public async Task <int> CreateAsync(IssueViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            var issue = Issue.Create(_userContext.UserName);

            issue.Title       = model.Title;
            issue.Description = model.Description;

            this._context.Issues.Add(issue);

            await this._context.SaveChangesAsync();

            // WorkItem wi = WorkItem.Create(IssueTrackingWorkflow.ASSIGN_TRIGGER, issue.Id, issue.Type);
            // await this._messageBus.PublishAsync(wi);

            return(issue.Id);
        }