/**********************************************************************************/
        /// <summary>
        /// Convert crate to DTO
        /// </summary>
        /// <param name="crate"></param>
        /// <returns></returns>
        public CrateDTO ConvertToDto(Crate crate)
        {
            if (crate == null)
            {
                return(null);
            }

            IManifestSerializer serializer = GetSerializer(crate.ManifestType);
            CrateDTO            crateDto   = new CrateDTO
            {
                Id               = crate.Id,
                Label            = crate.Label,
                ManifestId       = crate.ManifestType.Id,
                ManifestType     = crate.ManifestType.Type,
                SourceActivityId = crate.SourceActivityId
            };

            if (serializer != null)
            {
                crateDto.Contents = serializer.Serialize(crate.Get <object>());
            }
            else
            {
                crateDto.Contents = crate.GetRaw();
            }

            return(crateDto);
        }
        public async Task Events_NotStandardEventReport_ThrowsException()
        {
            var crateDTO = new CrateDTO();
            var result   = await _eventController.Post(crateDTO);

            Assert.IsTrue(result is BadRequestErrorMessageResult, "Post method was expected to return BadRequest (code 400) for empty payload");
        }
        /**********************************************************************************/
        /// <summary>
        /// Convert DTO to Crate instance
        /// </summary>
        /// <param name="proxy"></param>
        /// <returns></returns>
        public Crate ConvertFromDto(CrateDTO proxy)
        {
            if (proxy == null)
            {
                return(null);
            }

            var manifestType = new CrateManifestType(proxy.ManifestType, proxy.ManifestId);
            IManifestSerializer serializer = GetSerializer(manifestType);
            Crate crate;

            if (serializer != null)
            {
                var content = proxy.Contents != null?serializer.Deserialize(proxy.Contents) : null;

                if (content != null)
                {
                    crate = Crate.FromContent(content, proxy.Id);
                }
                else
                {
                    crate = new Crate(manifestType, proxy.Id);
                }
            }
            else
            {
                crate = Crate.FromJson(manifestType, proxy.Id, proxy.Contents);
            }

            crate.Label            = proxy.Label;
            crate.SourceActivityId = proxy.SourceActivityId;
            return(crate);
        }
        public async Task <IHttpActionResult> Post(CrateDTO raw)
        {
            if (raw == null)
            {
                return(BadRequest("Crate object is not specified"));
            }
            var curCrateStandardEventReport = _crate.FromDto(raw);

            if (!curCrateStandardEventReport.IsOfType <EventReportCM>())
            {
                return(BadRequest("Crate object doesn't contain EventReportCM manifest"));
            }
            if (curCrateStandardEventReport.Get() == null)
            {
                return(BadRequest("Crate content is empty"));
            }
            var eventReportMS = curCrateStandardEventReport.Get <EventReportCM>();

            Logger.GetLogger().Info($"Crate {raw.Id} with incoming event '{eventReportMS.EventNames}' is received for external account '{eventReportMS.ExternalAccountId}'");
            if (eventReportMS.EventPayload == null)
            {
                return(BadRequest("EventReport can't have a null payload"));
            }
            if (string.IsNullOrEmpty(eventReportMS.ExternalAccountId) && string.IsNullOrEmpty(eventReportMS.ExternalDomainId))
            {
                return(BadRequest("EventReport can't have both ExternalAccountId and ExternalDomainId empty"));
            }
            _jobDispatcher.Enqueue(() => ProcessEventsInternal(raw));
            return(Ok());
        }
Пример #5
0
        public async Task RunPlan(Guid planId, IEnumerable <Crate> payload)
        {
            var url       = $"{GetHubUrlWithApiVersion()}/plans/run?planId=" + planId;
            var uri       = new Uri(url);
            var cratesDto = new CrateDTO[0];

            if (payload != null)
            {
                cratesDto = payload.Select(x => CrateStorageSerializer.Default.ConvertToDto(x)).ToArray();
            }

            await _restfulServiceClient.PostAsync(uri, cratesDto);
        }
        public static ProcessTemplateDO TestProcessTemplateWithSubscribeEvent()
        {
            ProcessTemplateDO processTemplateDO;

            using (var uow = ObjectFactory.GetInstance <IUnitOfWork>())
            {
                DockyardAccountDO testUser = TestDockyardAccount1();
                uow.UserRepository.Add(testUser);

                processTemplateDO = new ProcessTemplateDO()
                {
                    Id                   = 23,
                    Description          = "HealthDemo Integration Test",
                    Name                 = "StandardEventTesting",
                    ProcessTemplateState = ProcessTemplateState.Active,
                    DockyardAccount      = testUser
                };
                uow.ProcessTemplateRepository.Add(processTemplateDO);

                var actionTemplate = ActionTemplate();

                var processDo = new ContainerDO()
                {
                    Id                = 1,
                    CrateStorage      = EnvelopeIdCrateJson(),
                    ProcessTemplateId = processTemplateDO.Id,
                    ContainerState    = 1
                };
                uow.ContainerRepository.Add(processDo);



                ProcessNodeTemplateDO processNodeTemplateDO = new ProcessNodeTemplateDO()
                {
                    ParentActivity = processTemplateDO,
                    StartingProcessNodeTemplate = true
                };
                uow.ProcessNodeTemplateRepository.Add(processNodeTemplateDO);
                processTemplateDO.Activities = new List <ActivityDO> {
                    processNodeTemplateDO
                };
                processTemplateDO.StartingProcessNodeTemplate = processNodeTemplateDO;


                var actionDo = new ActionDO()
                {
                    ParentActivity   = processTemplateDO,
                    ParentActivityId = processTemplateDO.Id,
                    ActionState      = ActionState.Unstarted,
                    Name             = "testaction",

                    Id = 1,
                    ActivityTemplateId = actionTemplate.Id,
                    ActivityTemplate   = actionTemplate,
                    Ordering           = 1
                };
                ICrate crate = ObjectFactory.GetInstance <ICrate>();

                var serializer = new JsonSerializer();
                EventSubscriptionCM eventSubscriptionMS = new EventSubscriptionCM();
                eventSubscriptionMS.Subscriptions = new List <string>();
                eventSubscriptionMS.Subscriptions.Add("DocuSign Envelope Sent");
                eventSubscriptionMS.Subscriptions.Add("Write to SQL AZure");

                var eventReportJSON = serializer.Serialize(eventSubscriptionMS);

                CrateDTO crateDTO = crate.Create("Standard Event Subscriptions", eventReportJSON, "Standard Event Subscriptions");
                actionDo.UpdateCrateStorageDTO(new List <CrateDTO>()
                {
                    crateDTO
                });

                uow.ActionRepository.Add(actionDo);
                processNodeTemplateDO.Activities.Add(actionDo);

                uow.SaveChanges();
            }

            return(processTemplateDO);
        }
Пример #7
0
 public Crate FromDto(CrateDTO crate)
 {
     return(crate != null?CrateStorageSerializer.Default.ConvertFromDto(crate) : null);
 }
        public static Task ProcessEventsInternal(CrateDTO raw)
        {
            var curCrateStandardEventReport = ObjectFactory.GetInstance <ICrateManager>().FromDto(raw);

            return(ObjectFactory.GetInstance <IEvent>().ProcessInboundEvents(curCrateStandardEventReport));
        }