/// <summary>
 /// Initializes a new instance of the <see cref="EmailWithMacrosManager"/> class.
 /// </summary>
 /// <param name="userConnection">The user connection.</param>
 public EmailWithMacrosManager(UserConnection userConnection)
     : base(userConnection)
 {
     InitializeReplacementMap();
     IncindentRegistrationMailboxFilter = new IncindentRegistrationMailboxFilter(userConnection);
     EmailSenderObtainerWrapper         = new EmailSenderObtainerWrapper(userConnection);
     AsyncEmailSender = new AsyncEmailSender(userConnection);
 }
Esempio n. 2
0
        public SupportEmailsFilterServiceResponse GetEmailsWithoutSupport(string emails)
        {
            var response = new SupportEmailsFilterServiceResponse();
            var incindentRegistrationMailboxFilter = new IncindentRegistrationMailboxFilter(UserConnection);

            try {
                response.resultEmails = incindentRegistrationMailboxFilter.GetRecipientWithoutIncindent(emails);
                response.Success      = true;
            } catch (Exception e) {
                response.Exception = e;
                response.Success   = false;
            }
            return(response);
        }
        /// <summary>
        /// Gets case data by given case record identifier.
        /// </summary>
        /// <param name="caseId">Case record identifier.</param>
        /// <returns>Case data.</returns>
        protected virtual CaseData GetCaseData(Guid caseId)
        {
            var    esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, SchemaName);
            string contactIdColumnName            = esq.AddColumn("Contact.Id").Name;
            string categoryIdColumnName           = esq.AddColumn("Category.Id").Name;
            string contactEmailColumnName         = esq.AddColumn("Contact.Email").Name;
            string titleColumnName                = esq.AddColumn("ParentActivity.Title").Name;
            string parentActivityIdColumnName     = esq.AddColumn("ParentActivity.Id").Name;
            string parentActivitySenderColumnName = esq.AddColumn("ParentActivity.Sender").Name;
            string recipientColumnName            = esq.AddColumn("ParentActivity.Recepient").Name;
            string ccColumnName  = esq.AddColumn("ParentActivity.CopyRecepient").Name;
            string bccColumnName = esq.AddColumn("ParentActivity.BlindCopyRecepient").Name;
            var    @case         = esq.GetEntity(UserConnection, caseId);
            var    data          = new CaseData();

            if (@case == null)
            {
                return(data);
            }
            data.ContactId            = @case.GetTypedColumnValue <Guid>(contactIdColumnName);
            data.CategoryId           = @case.GetTypedColumnValue <Guid>(categoryIdColumnName);
            data.Title                = @case.GetTypedColumnValue <string>(titleColumnName);
            data.ParentActivitySender = @case
                                        .GetTypedColumnValue <string>(parentActivitySenderColumnName)
                                        .ExtractEmailAddressIf();
            data.PickUpContactEmail(@case.GetTypedColumnValue <string>(contactEmailColumnName), UserConnection);
            data.PickUpRecipient(IncindentRegistrationMailboxFilter
                                 .GetRecipientWithoutIncindent(@case.GetTypedColumnValue <string>(recipientColumnName)), UserConnection);
            if (!UserConnection.GetIsFeatureEnabled("CasesOnlyRespondToSender"))
            {
                data.CC  = @case.GetTypedColumnValue <string>(ccColumnName);
                data.BCC = @case.GetTypedColumnValue <string>(bccColumnName);
            }
            if (SystemSettings.GetValue(UserConnection, "AutoNotifyOnlyContact", false))
            {
                data.Recipient = data.ContactEmail;
                data.CC        = data.BCC = default(string);
            }
            data.ParentActivityId        = @case.GetTypedColumnValue <Guid>(parentActivityIdColumnName);
            data.ParentActivityRecipient = @case.GetTypedColumnValue <string>(recipientColumnName);
            data.ParentActivityInReplyTo = data.ParentActivityId.IsNotEmpty()
                                ? GetInReplyToProperty(data.ParentActivityId)
                                : string.Empty;
            return(data);
        }