Exemple #1
0
 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);
        }
Exemple #3
0
        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();
        }