protected virtual List <SpecsDeliveryTypeSettings> GenerateDeliveryTypes( GeneratorContext genContext, SubscriberWithMissingData subscriber) { int[] deliveryTypes = new[] { 101, 102 }; subscriber.DeliveryTypes = deliveryTypes .Select((deliveryType, i) => new SpecsDeliveryTypeSettings { SubscriberDeliveryTypeSettingsId = ObjectId.GenerateNewId(), SubscriberId = subscriber.SubscriberId, DeliveryType = deliveryType, Address = subscriber.HasAddress ? $"subscriber{genContext.CurrentCount + i}@mail.mail" : null, IsEnabled = subscriber.HasDeliveryTypeSettings, Language = "en", TimeZoneId = "+3", LastVisitUtc = subscriber.HasVisitDateFuture ? (DateTime?)DateTime.UtcNow : null }) .ToList(); if (subscriber.HasVisitDatePast) { subscriber.DeliveryTypes.ForEach(x => x.LastVisitUtc = DateTime.UtcNow.AddDays(-1)); } return(subscriber.DeliveryTypes); }
//generators protected override List <SpecsDeliveryTypeSettings> GenerateDeliveryTypes( GeneratorContext genContext, SubscriberWithMissingData subscriber) { List <SpecsDeliveryTypeSettings> deliveryTypes = base.GenerateDeliveryTypes(genContext, subscriber); deliveryTypes.ForEach(dt => { dt.SubscriberCategorySettings = GenerateCategories(genContext, dt, subscriber); }); return(deliveryTypes); }
//generators protected override List <SubscriberTopicSettings <ObjectId> > GenerateTopics(GeneratorContext genContext, SubscriberCategorySettings <ObjectId> category, SubscriberWithMissingData subscriber) { EntityContext subscriberContext = genContext.EntityContexts[typeof(SubscriberWithMissingData)]; long subscriberNumber = subscriberContext.EntityProgress.CurrentCount; int subscribersPerTopic = 1000; long subscribersTopicGroup = subscriberNumber / subscribersPerTopic; string[] topics = new[] { "3011" + subscribersTopicGroup, "3012" + subscribersTopicGroup }; var categoryTopics = topics .Select((topic, i) => new SubscriberTopicSettings <ObjectId> { SubscriberTopicSettingsId = ObjectId.GenerateNewId(), SubscriberId = category.SubscriberId, DeliveryType = category.DeliveryType, CategoryId = category.CategoryId, TopicId = topic, IsEnabled = subscriber.HasTopicsSettingsEnabled, AddDateUtc = DateTime.UtcNow, LastSendDateUtc = subscriber.HasTopicLastSendDate ? (DateTime?)DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(5)) : null }) .ToList(); subscriber.Topics = subscriber.Topics ?? new List <SubscriberTopicSettings <ObjectId> >(); subscriber.Topics.AddRange(categoryTopics); return(categoryTopics); }
protected virtual List <SubscriberTopicSettings <ObjectId> > GenerateTopicsForDeliveryTypeSettings(GeneratorContext genContext, SpecsDeliveryTypeSettings dt, SubscriberWithMissingData subscriber) { string[] topics = new[] { "301a", "302a" }; var categoryTopics = dt.SubscriberCategorySettings.SelectMany(category => topics.Select((topic, i) => new SubscriberTopicSettings <ObjectId> { SubscriberTopicSettingsId = ObjectId.GenerateNewId(), SubscriberId = dt.SubscriberId, DeliveryType = dt.DeliveryType, CategoryId = category.CategoryId, TopicId = topic, IsEnabled = subscriber.HasTopicsSettingsEnabled, AddDateUtc = DateTime.UtcNow, LastSendDateUtc = subscriber.HasTopicLastSendDate ? (DateTime?)DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(5)) : null }) ).ToList(); subscriber.Topics = subscriber.Topics ?? new List <SubscriberTopicSettings <ObjectId> >(); subscriber.Topics.AddRange(categoryTopics); return(categoryTopics); }
protected virtual List <SubscriberCategorySettings <ObjectId> > GenerateCategories(GeneratorContext genContext, SpecsDeliveryTypeSettings deliverySettings, SubscriberWithMissingData subscriber) { int[] categories = new[] { 201, 202 }; var deliveryTypeCategories = categories .Select((category, i) => new SubscriberCategorySettings <ObjectId> { SubscriberCategorySettingsId = ObjectId.GenerateNewId(), SubscriberId = deliverySettings.SubscriberId, DeliveryType = deliverySettings.DeliveryType, CategoryId = category, IsEnabled = subscriber.HasCategorySettingsEnabled }) .ToList(); subscriber.Categories = subscriber.Categories ?? new List <SubscriberCategorySettings <ObjectId> >(); subscriber.Categories.AddRange(deliveryTypeCategories); deliverySettings.SubscriberCategorySettings = deliveryTypeCategories; return(deliveryTypeCategories); }