Esempio n. 1
0
        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));
        }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 5
0
        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);
            }
        }