private DCTemplateModel GetDcTemplateModel(Guid bulkEmailId, DCRepositoryReadOptions <DCTemplateModel, DCReplicaModel> templateReadOptions) { var template = TemplateRepository.ReadByRecordId(bulkEmailId, templateReadOptions); return(template); }
protected IEnumerable <IMailingTemplate> CreateTemplates(BulkEmail bulkEmail, BulkEmailMacroParser macroParser, IEnumerable <int> replicaMasksToProcess = null) { var templateReadOptions = new DCRepositoryReadOptions <DCTemplateModel, DCReplicaModel> { TemplateReadOptions = DCTemplateReadOption.None }; var template = TemplateRepository.ReadByRecordId(bulkEmail.Id, templateReadOptions); var replicas = GetReplicasByMasks(template, replicaMasksToProcess); return(CreateTemplates(bulkEmail, macroParser, replicas)); }
/// <summary> /// Sends test bulk email message with dynamic content. Sends all replicas if /// <see cref="SendTestMessageData.ReplicaMasks"/> property of the parameter <paramref name="data"/> /// is null or empty, or chosen replicas in another case. /// </summary> /// <param name="data">Data required for test message sending.</param> /// <returns>Results of successful sending for each replica.</returns> public SendTestMessageResult Send(SendTestMessageData data) { var bulkEmailId = data.BulkEmailId; var bulkEmail = GetBulkEmailFromDB(bulkEmailId); RegisterSenderDomain(bulkEmail.SenderEmail); var messageData = CreateSendMessageData(bulkEmail); var templateReadOptions = new DCRepositoryReadOptions <DCTemplateModel, DCReplicaModel> { TemplateReadOptions = DCTemplateReadOption.None }; var dcTemplateModel = GetDcTemplateModel(bulkEmail.Id, templateReadOptions); var replicasToSend = GetReplicasByMasks(dcTemplateModel, data.ReplicaMasks).ToArray(); return(ExecuteDCTestMessageSending(data, bulkEmail, messageData, replicasToSend)); }
/// <summary> /// Creates instance of the <see cref="IMailingTemplate"/> for every replica of dynamic content. /// </summary> /// <param name="userConnection">Instance of the user connection.</param> /// <param name="bulkEmail">Instance of the bulk email.</param> /// <param name="macroParser">Instance of the <see cref="BulkEmailMacroParser"/>.</param> /// <returns>Returns instance of the <see cref="IMailingTemplate"/>.</returns> public IEnumerable <IMailingTemplate> CreateDCTemplates(UserConnection userConnection, BulkEmail bulkEmail, BulkEmailMacroParser macroParser) { var templateRepository = CreateDcTemplateRepository(userConnection); var templateReadOptions = new DCRepositoryReadOptions <DCTemplateModel, DCReplicaModel> { TemplateReadOptions = DCTemplateReadOption.None }; var template = templateRepository.ReadByRecordId(bulkEmail.Id, templateReadOptions); IEnumerable <DCReplicaModel> replicas = null; if (template != null) { replicas = template.Replicas; } return(CreateInstances(userConnection, bulkEmail, replicas, macroParser)); }
private bool CheckEmptyTemplates(IEnumerable <Guid> bulkEmailIds) { var repositoryReadOptions = new DCRepositoryReadOptions <DCTemplateModel, DCReplicaModel> { TemplateReadOptions = DCTemplateReadOption.ExcludeAttributes | DCTemplateReadOption.ExcludeReplicaHtmlContent }; foreach (var bulkEmailId in bulkEmailIds) { var existingTemplate = TemplateRepository.ReadByRecordId(bulkEmailId, repositoryReadOptions); if (existingTemplate == null || existingTemplate.Id.IsEmpty()) { return(true); } } return(false); }
private void ResolveRecipientsReplica(Guid bulkEmailId) { var dcDataSource = _audienceDataSource as IDCAudienceDataSource; _audienceDataSource.PageNumber = 0; var dcStrategyResolver = new DCStrategyResolver(UserConnection); var templateRepository = new DCTemplateRepository <DCTemplateModel>(UserConnection); var repositoryOptions = new DCRepositoryReadOptions <DCTemplateModel, DCReplicaModel> { TemplateReadOptions = DCTemplateReadOption.None }; var template = templateRepository.ReadByRecordId(bulkEmailId, repositoryOptions); if (template == null) { throw new NullReferenceException($"Template for BulkEmail with id {bulkEmailId} not found"); } while (true) { _audienceDataSource.PageNumber++; var audienceSelect = dcDataSource.GetRecipientsIdsSelectQuery(Guid.Empty); var isAudienceSelectEmpty = IsRecipientsSelectQueryEmpty(audienceSelect); if (isAudienceSelectEmpty) { break; } var segmentationContext = new DCSegmentationContext(UserConnection) { Template = template, SourceAudience = dcDataSource.GetRecipientsIdsSelectQuery(Guid.Empty), SourceAlias = "MandrillDeliveryPackage", EntityIdSourceColumn = "RecipientUId", SourceColumnForFilter = "ContactId", TargetTable = "BulkEmailRecipientReplica", EntityIdTargetColumn = "RecipientId", ReplicaIdTargetColumn = "DCReplicaId", RecordIdTargetColumn = "BulkEmailId" }; dcStrategyResolver.SegmentAudience(segmentationContext); } }