public void SendActivityStateDetails(string activityId, ActivityStateDetails stateDetails) { new SendActivityStateDetailsOperation( this.AgreementRepository, this.ActivityRepository, this.ExeScriptBatchQueues) .Run(activityId, stateDetails); }
public void Run(string activityId, ActivityStateDetails details) { var activity = this.ActivityRepository.GetActivity(activityId); if (activity == null) { throw new Exception($"Activity {activityId} does not exist..."); } this.EnsureActivityStateQueueExists(activityId); var requestorEvent = new ActivityRequestorEvent() { ActivityId = activityId, EventType = ActivityRequestorEvent.ActivityRequestorEventType.StateDetails, Details = details }; this.ActivityStateQueues[activityId].Add(requestorEvent); }
public virtual IActionResult PutActivityStateDetails([FromRoute][Required] string activityId, [FromBody] ActivityStateDetails state) { var clientContext = this.HttpContext.Items["ClientContext"] as GolemClientMockAPI.Entities.ClientContext; try { var activity = this.ActivityRepository.GetActivity(activityId); if (activity == null) { return(this.StatusCode(404)); // Activity not found } if (activity.ProviderNodeId != clientContext.NodeId) { return(this.StatusCode(403)); // Not entitled to act on the activity } var stateDetailsEntity = new GolemClientMockAPI.Entities.ActivityStateDetails() { CurrentCommand = "", State = (GolemClientMockAPI.Entities.ActivityState)state.State, UsageVector = state.CurrentUsage?.Select(item => (decimal)item).ToArray() }; this.ActivityProcessor.SendActivityStateDetails(activityId, stateDetailsEntity); return(this.Ok()); } catch (Exception exc) { return(this.StatusCode(500, new DestroyActivityError() { Message = exc.Message })); } throw new NotImplementedException(); }