private void SetInvalidBulkEmailCounters(Guid bulkEmailId, int invalidAddresseeCount)
        {
            var actualInvalidAdresseeExpression =
                MailingDbUtilities.GetAddCountColumnExpression("InvalidAddresseeCount", invalidAddresseeCount);

            BulkEmailQueryHelper.UpdateBulkEmail(bulkEmailId, UserConnection,
                                                 new KeyValuePair <string, object>("SendDueDate", Column.Const(null)),
                                                 new KeyValuePair <string, object>("InvalidAddresseeCount", actualInvalidAdresseeExpression));
        }
        protected void ExecuteSendMessagePostProcessing(SendMessageData sendMessageData,
                                                        List <TypedCounter <MailingResponseCode> > sendResults, SendMessageTaskData sendMessageTaskData)
        {
            var bulkEmail                     = sendMessageData.BulkEmail;
            var sessionId                     = sendMessageData.SessionId;
            var blankEmailCount               = sendResults.Sum("BlankEmail");
            var doNotUseEmailCount            = sendResults.Sum("DoNotUseEmail");
            var incorrectEmailCount           = sendResults.Sum("IncorrectEmail");
            var unreachableEmailCount         = sendResults.Sum("UnreachableEmail");
            var communicationLimitCount       = sendResults.Sum("CommunicationLimit");
            var duplicateEmailCount           = sendResults.Sum("DuplicateEmail");
            var templateNotFoundCount         = sendResults.Sum("TemplateNotFound");
            var sendersDomainNotVerifiedCount = sendResults.Sum("SendersDomainNotVerified");
            var sendersNameNotValidCount      = sendResults.Sum("SendersNameNotValid");
            var invalidAddresseeCount         = sendResults.Sum("InvalidAddressee");

            if (sendMessageTaskData.IsBreaking)
            {
                SetBulkEmailStatus(bulkEmail.Id, MailingConsts.BulkEmailStatusStoppedId);
                BulkEmailEventLogger.LogInfo(bulkEmail.Id, DateTime.UtcNow, GetLczStringValue("MailingStoppedManually"),
                                             GetLczStringValue("MailingStoppedManuallyDescription"), UserConnection.CurrentUser.ContactId);
                SetInvalidBulkEmailCounters(bulkEmail.Id, invalidAddresseeCount);
                CreateReminding(bulkEmail, "CESStoppedMailingMsg");
                MailingUtilities.Log.InfoFormat("BulkEmail with Id: {0} Was stopped manually.", bulkEmail.Id);
                return;
            }
            BulkEmailQueryHelper.UpdateBulkEmail(bulkEmail.Id, UserConnection,
                                                 new KeyValuePair <string, object>("SendDueDate", DateTime.UtcNow),
                                                 new KeyValuePair <string, object>("BlankEmailCount", blankEmailCount),
                                                 new KeyValuePair <string, object>("DoNotUseEmailCount", doNotUseEmailCount),
                                                 new KeyValuePair <string, object>("IncorrectEmailCount", incorrectEmailCount),
                                                 new KeyValuePair <string, object>("UnreachableEmailCount", unreachableEmailCount),
                                                 new KeyValuePair <string, object>("CommunicationLimitCount", communicationLimitCount),
                                                 new KeyValuePair <string, object>("DuplicateEmailCount", duplicateEmailCount),
                                                 new KeyValuePair <string, object>("TemplateNotFoundCount", templateNotFoundCount),
                                                 new KeyValuePair <string, object>("SendersDomainNotVerifiedCount", sendersDomainNotVerifiedCount),
                                                 new KeyValuePair <string, object>("SendersNameNotValidCount", sendersNameNotValidCount),
                                                 new KeyValuePair <string, object>("InvalidAddresseeCount", invalidAddresseeCount));
            MailingUtilities.Log.InfoFormat(
                "[CESMaillingProvider.ExecuteSendMessage]: Finished: BulkEmail.Id: {0}, SessionId: {1}", bulkEmail.Id,
                sessionId);
            if (sendMessageTaskData.ProcessedGroupsCounter == 0)
            {
                SetBulkEmailStatus(bulkEmail.Id, MailingConsts.BulkEmailStatusErrorId);
                CreateReminding(bulkEmail, "CESNoRecipientsMsg");
                MailingUtilities.Log.InfoFormat("BulkEmail with Id: {0} Has no recipients.", bulkEmail.Id);
            }
        }
        private void InitBulkEmailCounters(Guid bulkEmailId, bool isResend)
        {
            var recipientCount = 0;

            try {
                recipientCount = BulkEmailQueryHelper.GetRecipientsInQueueCount(bulkEmailId, UserConnection);
                BulkEmailQueryHelper.UpdateBulkEmail(bulkEmailId, UserConnection,
                                                     new KeyValuePair <string, object>("InQueueCount", recipientCount),
                                                     new KeyValuePair <string, object>("RecipientCount", recipientCount),
                                                     new KeyValuePair <string, object>("NotDeliveredCount", 0),
                                                     new KeyValuePair <string, object>("TemplateNotFoundCount", 0),
                                                     new KeyValuePair <string, object>("CanceledCount", 0));
            } catch (Exception e) {
                MailingUtilities.Log.ErrorFormat(
                    "[CESMaillingProvider.InitBulkEmailCounters]: Error while init BulkEmail counters with Id: {0}," +
                    " isResent={1}, recipientsCount={2}", e, bulkEmailId, isResend, recipientCount);
                throw;
            }
        }