public async Task Handle(UserCreatedWorkItemMessage message, IMessageHandlerContext context) { log.Info($"MESSAGE: {nameof(UserCreatedWorkItemMessage)}; HANDLED BY: {nameof(WorkItemSaga)}; JID:{message.JobId}; WID:{message.WorkItemId}"); Data.TotalRequests = message.HttpRequests.Count(); await context.SendLocal(new WorkItemCreatedMessage { JobId = message.JobId, WorkItemId = message.WorkItemId, HttpRequests = message.HttpRequests, CreateDate = message.DateActionTaken, }); foreach (var item in message.HttpRequests) { await context.Send(new ExecuteHttpRequestMessage { JobId = message.JobId, WorkItemId = message.WorkItemId, HttpRequest = item, CreateDate = DateTime.UtcNow }); } }
public async Task <ActionResult> Post(string jobId, [FromBody] NewWorkItemModel newWorkItem) { Guid workItemId = Guid.NewGuid(); newWorkItem.JobId = Guid.Parse(jobId); UserCreatedWorkItemMessage message = new UserCreatedWorkItemMessage { JobId = newWorkItem.JobId, WorkItemId = workItemId, HttpRequests = newWorkItem.HttpRequests.Select(i => new UserHttpRequest { AuthenticationConfig = i.AuthenticationConfig, Content = i.Content, UserAgent = i.UserAgent, ContentHeaders = i.ContentHeaders, ContentType = i.ContentType, HttpRequestId = Guid.NewGuid(), Method = i.Method, RequestHeaders = i.RequestHeaders, Url = i.Url, }).ToList(), DateActionTaken = DateTimeOffset.UtcNow }; await messageSession.Send(message); return(Created($"/api/automaton/job/{newWorkItem.JobId}/workitem/{workItemId}", new WorkItemCreatedModel { JobId = message.JobId, WorkItemId = message.WorkItemId, HttpRequests = message.HttpRequests.Select(i => new CreatedHttpRequestModel { HttpRequestId = i.HttpRequestId, AuthenticationConfig = i.AuthenticationConfig, Content = i.Content, UserAgent = i.UserAgent, ContentHeaders = i.ContentHeaders, ContentType = i.ContentType, Method = i.Method, RequestHeaders = i.RequestHeaders, Url = i.Url, HttpRequestStatus = HttpRequestStatusType.Queued, }), WorkItemStatus = WorkItemStatusType.Queued })); }