public void then_dispatch_templates_updated_are_found_using_ef()
            {
                List <long> templateIds = _insertedTemplates.Select(x => x.DispatchTemplateId).ToList();
                List <DispatchTemplateLong> actualList = DbContext.DispatchTemplates
                                                         .Where(x => templateIds.Contains(x.DispatchTemplateId))
                                                         .OrderBy(x => x.EventSettingsId)
                                                         .ThenBy(x => x.DispatchTemplateId)
                                                         .ToList();

                actualList.Should().NotBeEmpty();
                actualList.Count.Should().Be(_insertedTemplates.Count);


                INotificationsMapperFactory mapperFactory = Mocker.GetServiceInstance <INotificationsMapperFactory>();
                IMapper mapper = mapperFactory.GetMapper();

                for (int i = 0; i < _insertedSettings.Count; i++)
                {
                    DispatchTemplateLong    actualItem       = actualList[i];
                    DispatchTemplate <long> mappedActualItem = mapper.Map <DispatchTemplate <long> >(actualItem);
                    DispatchTemplate <long> expectedItem     = _insertedTemplates[i];

                    mappedActualItem.Should().BeEquivalentTo(expectedItem);
                }
            }
            public void then_dispatch_templates_inserted_are_found_using_ef()
            {
                INotificationsMapperFactory mapperFactory = Mocker.GetServiceInstance <INotificationsMapperFactory>();
                IMapper mapper = mapperFactory.GetMapper();

                List <DispatchTemplateLong> actual = DbContext.DispatchTemplates
                                                     .OrderBy(x => x.EventSettingsId)
                                                     .ThenBy(x => x.DispatchTemplateId)
                                                     .ToList();

                List <DispatchTemplate <long> > expected = _insertedData
                                                           .SelectMany(x => x.Templates)
                                                           .ToList();

                actual.Should().NotBeEmpty();
                int expectedCount = _insertedData.Sum(x => x.Templates.Count);

                actual.Count.Should().Be(expectedCount);

                for (int i = 0; i < _insertedData.Count; i++)
                {
                    DispatchTemplateLong    actualItem       = actual[i];
                    DispatchTemplate <long> mappedActualItem = mapper.Map <DispatchTemplate <long> >(actualItem);
                    DispatchTemplate <long> expectedItem     = expected[i];

                    expectedItem.EventSettingsId    = mappedActualItem.EventSettingsId;
                    expectedItem.DispatchTemplateId = mappedActualItem.DispatchTemplateId;

                    mappedActualItem.Should().BeEquivalentTo(expectedItem);
                }
            }
        public virtual async Task <DispatchTemplate <TKey> > Select(TKey dispatchTemplatesId)
        {
            TotalResult <List <DispatchTemplate <TKey> > > allItems = await GetFromCacheOrFetch().ConfigureAwait(false);

            DispatchTemplate <TKey> item = allItems.Data.FirstOrDefault(
                x => EqualityComparer <TKey> .Default.Equals(x.DispatchTemplateId, dispatchTemplatesId));

            return(item);
        }
コード例 #4
0
        //methods
        public virtual bool Execute(SignalWrapper <SignalDispatch <TKey> > item)
        {
            if (item.Signal.EventSettingsId == null)
            {
                //SignalDispatch can be provided by ISignalProver without EventSettingsId
                return(true);
            }

            EventSettings <TKey> eventSettings = _eventSettingsQueries.Select(item.Signal.EventSettingsId.Value).Result;

            if (eventSettings == null)
            {
                _logger.LogError(SenderInternalMessages.Common_NoServiceWithKeyFound,
                                 typeof(EventSettings <TKey>), nameof(EventSettings <TKey> .EventSettingsId), item.Signal.EventSettingsId.Value);
                _dispatchQueue.ApplyResult(item, ProcessingResult.NoHandlerFound);
                return(false);
            }

            bool shouldConsolidate = ValidateRequiredProperties(item.Signal, eventSettings);

            if (!shouldConsolidate)
            {
                //Continue processing dispatch without consolidation
                return(true);
            }

            ITemplateDataConsolidator consolidator = MatchConsolidator(item.Signal, eventSettings.ConsolidatorId.Value);

            if (consolidator == null)
            {
                _dispatchQueue.ApplyResult(item, ProcessingResult.NoHandlerFound);
                return(false);
            }

            DispatchTemplate <TKey> dispatchTemplate = eventSettings.Templates == null
                ? null
                : eventSettings.Templates.FirstOrDefault(x => EqualityComparer <TKey> .Default.Equals(x.DispatchTemplateId, item.Signal.DispatchTemplateId.Value));

            if (dispatchTemplate == null)
            {
                _logger.LogError(SenderInternalMessages.Common_NoServiceWithKeyFound,
                                 typeof(DispatchTemplate <TKey>), nameof(DispatchTemplate <TKey> .DispatchTemplateId), item.Signal.DispatchTemplateId.Value);
                _dispatchQueue.ApplyResult(item, ProcessingResult.NoHandlerFound);
                return(false);
            }

            IEnumerable <TemplateData[]> batches = GetTemplateDataBatches(item, consolidator.BatchSize);
            TemplateData consolidatedData        = consolidator.Consolidate(batches);

            dispatchTemplate.Update(item.Signal, consolidatedData);
            item.IsUpdated = true;
            item.IsConsolidationCompleted = true;

            return(true);
        }
コード例 #5
0
        protected virtual void Configure(IMapperConfigurationExpression configuration)
        {
            configuration.CreateMap <SignalBounce <long>, SignalBounceLong>();
            configuration.CreateMap <SignalEvent <long>, SignalEventLong>();
            configuration.CreateMap <StoredNotification <long>, StoredNotificationLong>();
            configuration.CreateMap <SubscriberDeliveryTypeSettings <long>, SubscriberDeliveryTypeSettingsLong>();
            configuration.CreateMap <SubscriberCategorySettings <long>, SubscriberCategorySettingsLong>();
            configuration.CreateMap <SubscriberTopicSettings <long>, SubscriberTopicSettingsLong>();
            configuration.CreateMap <SubscriberScheduleSettings <long>, SubscriberScheduleSettingsLong>();
            configuration.CreateMap <EventSettings <long>, EventSettingsLong>();

            configuration.CreateMap <SignalBounceLong, SignalBounce <long> >();
            configuration.CreateMap <SignalEventLong, SignalEvent <long> >();
            configuration.CreateMap <StoredNotificationLong, StoredNotification <long> >();
            configuration.CreateMap <SubscriberDeliveryTypeSettingsLong, SubscriberDeliveryTypeSettings <long> >();
            configuration.CreateMap <SubscriberCategorySettingsLong, SubscriberCategorySettings <long> >();
            configuration.CreateMap <SubscriberTopicSettingsLong, SubscriberTopicSettings <long> >();
            configuration.CreateMap <SubscriberScheduleSettingsLong, SubscriberScheduleSettings <long> >();
            configuration.CreateMap <EventSettingsLong, EventSettings <long> >();

            //Dispatch template
            configuration.CreateMap <DispatchTemplate <long>, DispatchTemplateLong>()
            .ForMember(d => d.DerivedEntityData, o => o.MapFrom <ToJsonValueResolver <DispatchTemplate <long>, DispatchTemplateLong> >());
            configuration.CreateMap <DispatchTemplateLong, DispatchTemplate <long> >()
            .ConstructUsing((serialized, generic) =>
            {
                DispatchTemplate <long> derivedInstance = (DispatchTemplate <long>)JsonConvert.DeserializeObject(
                    serialized.DerivedEntityData, new JsonSerializerSettings
                {
                    TypeNameHandling = TypeNameHandling.Objects
                });
                return(derivedInstance);
            });

            //Dispatch
            configuration.CreateMap <SignalDispatch <long>, SignalDispatchLong>()
            .ForMember(d => d.DerivedEntityData, o => o.MapFrom <ToJsonValueResolver <SignalDispatch <long>, SignalDispatchLong> >());
            configuration.CreateMap <SignalDispatchLong, SignalDispatch <long> >()
            .ConstructUsing((serialized, generic) =>
            {
                SignalDispatch <long> derivedInstance = (SignalDispatch <long>)JsonConvert.DeserializeObject(
                    serialized.DerivedEntityData, new JsonSerializerSettings
                {
                    TypeNameHandling = TypeNameHandling.Objects
                });
                return(derivedInstance);
            });
        }
コード例 #6
0
        public virtual async Task <DispatchTemplate <long> > Select(long dispatchTemplatesId)
        {
            DispatchTemplateLong item = null;

            using (SenderDbContext context = _dbContextFactory.GetDbContext())
            {
                item = await context.DispatchTemplates
                       .FirstOrDefaultAsync(x => x.DispatchTemplateId == dispatchTemplatesId)
                       .ConfigureAwait(false);
            }

            DispatchTemplate <long> mappedItem = item == null
                ? null
                : _mapper.Map <DispatchTemplate <long> >(item);

            return(mappedItem);
        }
コード例 #7
0
        public async Task <DispatchTemplate <ObjectId> > Select(ObjectId dispatchTemplatesId)
        {
            var filter = Builders <DispatchTemplate <ObjectId> > .Filter
                         .Where(p => p.DispatchTemplateId == dispatchTemplatesId);

            var options = new FindOptions()
            {
                AllowPartialResults = false
            };

            DispatchTemplate <ObjectId> dispatchTemplate = await _collectionFactory
                                                           .GetCollection <DispatchTemplate <ObjectId> >()
                                                           .Find(filter, options)
                                                           .FirstOrDefaultAsync()
                                                           .ConfigureAwait(false);

            return(dispatchTemplate);
        }
コード例 #8
0
 protected virtual List <SignalDispatch <TKey> > BuildTemplate(EventSettings <TKey> settings, SignalEvent <TKey> signalEvent
                                                               , DispatchTemplate <TKey> template, List <Subscriber <TKey> > subscribers, List <TemplateData> templateData)
 {
     return(template.Build(settings, signalEvent, subscribers, templateData));
 }