Пример #1
0
 public EmailFactory(IEmailConfiguration emailConfiguration, IExcelFileFactory excelFileFactory,
                     IMailMergeFactory mailMergeFactory)
 {
     _emailConfiguration = emailConfiguration ?? throw new ArgumentNullException(nameof(emailConfiguration));
     _excelFileFactory   = excelFileFactory ?? throw new ArgumentNullException(nameof(excelFileFactory));
     _mailMergeFactory   = mailMergeFactory ?? throw new ArgumentNullException(nameof(mailMergeFactory));
 }
 private static void AddSuperStarVotingGuideAttachments(ComObjectManager com, MailItem mailItem,
                                                        IMailMergeFactory mailMergeFactory, NominationList nominationList, bool hasSuperStar)
 {
     if (hasSuperStar)
     {
         AddVotingGuideAttachment(com, mailItem, mailMergeFactory, nominationList, AwardType.SuperStar);
     }
 }
Пример #3
0
 public CertificatesEmail(IEmailConfiguration emailConfiguration, IMailMergeFactory mailMergeFactory,
                          NominationList nominationList)
     : base((com, mailItem) => BuildEmail(
                com,
                mailItem,
                emailConfiguration ?? throw new ArgumentNullException(nameof(emailConfiguration)),
                mailMergeFactory ?? throw new ArgumentNullException(nameof(mailMergeFactory)),
                nominationList ?? throw new ArgumentNullException(nameof(nominationList))))
 {
 }
Пример #4
0
        private static void AddSuperStarCertificatesAttachments(ComObjectManager com, MailItem mailItem,
                                                                IMailMergeFactory mailMergeFactory, NominationList nominationList)
        {
            if (!nominationList.HasSuperStarCertificateRecipients)
            {
                return;
            }

            AddCertificatesAttachment(com, mailItem, mailMergeFactory, nominationList, AwardType.SuperStar);
        }
 public VotingSurveyReviewEmail(IEmailConfiguration emailConfiguration, IMailMergeFactory mailMergeFactory,
                                NominationList nominationList, string votingSurveyWebLink)
     : base((com, mailItem) => BuildEmail(
                com,
                mailItem,
                emailConfiguration ?? throw new ArgumentNullException(nameof(emailConfiguration)),
                mailMergeFactory ?? throw new ArgumentNullException(nameof(mailMergeFactory)),
                nominationList ?? throw new ArgumentNullException(nameof(nominationList)),
                votingSurveyWebLink))
 {
     if (string.IsNullOrWhiteSpace(votingSurveyWebLink))
     {
         throw new ArgumentException(votingSurveyWebLink);
     }
 }
Пример #6
0
        private static void AddCertificatesAttachments(ComObjectManager com, MailItem mailItem,
                                                       IMailMergeFactory mailMergeFactory,
                                                       NominationList nominationList, HtmlNode content)
        {
            var awardCategory = nominationList.AwardsPeriod.AwardCategory;

            if (awardCategory == AwardCategory.QuarterlyAwards)
            {
                AddQuarterlyCertificatesAttachments(com, mailItem, mailMergeFactory, nominationList, content);
            }
            else if (awardCategory == AwardCategory.SuperStarAwards)
            {
                AddSuperStarCertificatesAttachments(com, mailItem, mailMergeFactory, nominationList);
            }
        }
Пример #7
0
        private static void AddQuarterlyVotingGuideAttachmentsAndInstructions(ComObjectManager com, MailItem mailItem,
                                                                              HtmlNode content,
                                                                              IMailMergeFactory mailMergeFactory, NominationList nominationList, bool hasStarValues, bool hasRisingStar)
        {
            if (hasStarValues)
            {
                AddStarValuesVotingGuideAttachmentsAndInstructions(com, mailItem, content, mailMergeFactory,
                                                                   nominationList);
            }

            if (hasRisingStar)
            {
                AddRisingStarVotingGuideAttachmentsAndInstructions(com, mailItem, content, mailMergeFactory,
                                                                   nominationList);
            }
        }
        private static void AddVotingGuideAttachments(ComObjectManager com, MailItem mailItem, HtmlNode content,
                                                      IMailMergeFactory mailMergeFactory, NominationList nominationList, bool hasStarValues, bool hasRisingStar,
                                                      bool hasSuperStar)
        {
            var awardCategory = nominationList.AwardsPeriod.AwardCategory;

            if (awardCategory == AwardCategory.QuarterlyAwards)
            {
                AddQuarterlyVotingGuideAttachments(com, mailItem, content, mailMergeFactory, nominationList,
                                                   hasStarValues, hasRisingStar);
            }
            else if (awardCategory == AwardCategory.SuperStarAwards)
            {
                AddSuperStarVotingGuideAttachments(com, mailItem, mailMergeFactory, nominationList, hasSuperStar);
            }
        }
Пример #9
0
        private static void BuildEmail(ComObjectManager com, MailItem mailItem, IEmailConfiguration emailConfiguration,
                                       IMailMergeFactory mailMergeFactory, NominationList nominationList)
        {
            var certificatePrinter = emailConfiguration.CertificatePrinterPerson;
            var awardsName         = nominationList.AwardsPeriod.AwardsName;

            mailItem.To      = certificatePrinter.EmailAddress.Value;
            mailItem.CC      = string.Join(";", emailConfiguration.EiaCoChair1.EmailAddress, emailConfiguration.EiaCoChair2.EmailAddress);
            mailItem.Subject = $@"EIA: {awardsName} winner certificates";

            var content = CreateContentNode();

            AppendIntroduction(content, certificatePrinter, awardsName);
            AddCertificatesAttachments(com, mailItem, mailMergeFactory, nominationList, content);
            AppendThanks(content);

            WriteMailItemBody(mailItem, content);
        }
Пример #10
0
        private static void AddVotingGuideAttachment(ComObjectManager com, MailItem mailItem,
                                                     IMailMergeFactory mailMergeFactory,
                                                     NominationList nominationList, AwardType awardType)
        {
            var attachments = com.Get(() => mailItem.Attachments);
            var fileName    = awardType.GetVotingGuideFileName(nominationList.AwardsPeriod);
            var filePath    = FilePath.Create(Path.Combine(Path.GetTempPath(), fileName), false);

            if (File.Exists(filePath.Value))
            {
                File.Delete(filePath.Value);
            }

            var mailMerge = mailMergeFactory.GetVotingGuideMailMerge(awardType, nominationList);

            mailMerge.Execute(filePath);

            com.Get(() => attachments.Add(filePath.Value));
        }
Пример #11
0
        public VotingCallToActionEmail(IMailMergeFactory mailMergeFactory, NominationList nominationList,
                                       string votingSurveyWebLink, DateTime votingDeadline)
            : base((com, mailItem) => BuildEmail(
                       com,
                       mailItem,
                       mailMergeFactory ?? throw new ArgumentNullException(nameof(mailMergeFactory)),
                       nominationList ?? throw new ArgumentNullException(nameof(nominationList)),
                       votingSurveyWebLink,
                       votingDeadline))
        {
            if (string.IsNullOrWhiteSpace(votingSurveyWebLink))
            {
                throw new ArgumentException(nameof(votingSurveyWebLink));
            }

            if (votingDeadline == default(DateTime))
            {
                throw new ArgumentException(nameof(votingDeadline));
            }
        }
Пример #12
0
        private static void AddQuarterlyCertificatesAttachments(ComObjectManager com, MailItem mailItem,
                                                                IMailMergeFactory mailMergeFactory, NominationList nominationList, HtmlNode content)
        {
            if (!nominationList.HasStarValuesCertificateRecipients)
            {
                AppendNoCertificateRecipientsCaveat(content, AwardType.StarValues);
            }
            else
            {
                AddCertificatesAttachment(com, mailItem, mailMergeFactory, nominationList, AwardType.StarValues);
            }

            if (!nominationList.HasRisingStarCertificateRecipients)
            {
                AppendNoCertificateRecipientsCaveat(content, AwardType.RisingStar);
            }
            else
            {
                AddCertificatesAttachment(com, mailItem, mailMergeFactory, nominationList, AwardType.RisingStar);
            }
        }
Пример #13
0
        private static void AddQuarterlyVotingGuideAttachments(ComObjectManager com, MailItem mailItem,
                                                               HtmlNode content,
                                                               IMailMergeFactory mailMergeFactory, NominationList nominationList, bool hasStarValues, bool hasRisingStar)
        {
            if (!hasStarValues)
            {
                AppendNoNomineesCaveat(content, AwardType.StarValues);
            }
            else
            {
                AddVotingGuideAttachment(com, mailItem, mailMergeFactory, nominationList, AwardType.StarValues);
            }

            if (!hasRisingStar)
            {
                AppendNoNomineesCaveat(content, AwardType.RisingStar);
            }
            else
            {
                AddVotingGuideAttachment(com, mailItem, mailMergeFactory, nominationList, AwardType.RisingStar);
            }
        }
Пример #14
0
        private static void BuildEmail(ComObjectManager com, MailItem mailItem, IEmailConfiguration emailConfiguration,
                                       IMailMergeFactory mailMergeFactory, NominationList nominationList, string votingSurveyWebLink)
        {
            var awardsName    = nominationList.AwardsPeriod.AwardsName;
            var hasStarValues = nominationList.HasNominationsForAward(AwardType.StarValues);
            var hasRisingStar = nominationList.HasNominationsForAward(AwardType.RisingStar);
            var hasSuperStar  = nominationList.HasNominationsForAward(AwardType.SuperStar);

            mailItem.To      = string.Join(";", emailConfiguration.EiaCoChair1.EmailAddress, emailConfiguration.EiaCoChair2.EmailAddress);
            mailItem.Subject = $@"EIA: {awardsName} voting survey review request";

            var content = CreateContentNode();

            AppendRequest(content, emailConfiguration.EiaCoChair1, emailConfiguration.EiaCoChair2, awardsName,
                          hasStarValues, hasRisingStar);

            AddVotingGuideAttachments(com, mailItem, content, mailMergeFactory, nominationList, hasStarValues,
                                      hasRisingStar, hasSuperStar);

            AppendVotingSurveyWebLink(votingSurveyWebLink, content);
            AppendThanks(content);
            WriteMailItemBody(mailItem, content);
        }
Пример #15
0
        private static void BuildEmail(ComObjectManager com, MailItem mailItem,
                                       IMailMergeFactory mailMergeFactory, NominationList nominationList, string votingSurveyWebLink,
                                       DateTime votingDeadline)
        {
            var awardsName    = nominationList.AwardsPeriod.AwardsName;
            var hasStarValues = nominationList.HasNominationsForAward(AwardType.StarValues);
            var hasRisingStar = nominationList.HasNominationsForAward(AwardType.RisingStar);
            var hasSuperStar  = nominationList.HasNominationsForAward(AwardType.SuperStar);

            mailItem.To      = @"#[email protected]";
            mailItem.Subject = $@"*** Voting Open for the {awardsName} ***";

            var content = CreateContentNode();

            AppendRequest(content, awardsName, votingDeadline);

            AddVotingGuideAttachmentsAndInstructions(com, mailItem, content, mailMergeFactory, nominationList,
                                                     hasStarValues,
                                                     hasRisingStar, hasSuperStar);

            AppendVotingSurveyWebLink(votingSurveyWebLink, content);
            AppendThanks(content);
            WriteMailItemBody(mailItem, content);
        }
Пример #16
0
        private static void AddRisingStarVotingGuideAttachmentsAndInstructions(ComObjectManager com, MailItem mailItem,
                                                                               HtmlNode content, IMailMergeFactory mailMergeFactory, NominationList nominationList)
        {
            var instructions =
                $@"This document has all the nomination for the {
                        AwardType.RisingStar.PrettyName
                    } for interns. Question #3 of the voting survey covers these nominations. The intern nominations are from across the company. The survey does NOT list them in any particular order. Please note some nominees may have been nominated multiple times.";

            AddVotingGuideAttachmentAndInstructions(com, mailItem, content, mailMergeFactory, nominationList,
                                                    AwardType.RisingStar, instructions);
        }
Пример #17
0
        private static void AddVotingGuideAttachmentAndInstructions(ComObjectManager com, MailItem mailItem,
                                                                    HtmlNode content, IMailMergeFactory mailMergeFactory, NominationList nominationList, AwardType awardType,
                                                                    string instructions)
        {
            var attachments = com.Get(() => mailItem.Attachments);
            var fileName    = awardType.GetVotingGuideFileName(nominationList.AwardsPeriod);
            var filePath    = FilePath.Create(Path.Combine(Path.GetTempPath(), fileName), false);

            if (File.Exists(filePath.Value))
            {
                File.Delete(filePath.Value);
            }

            var mailMerge = mailMergeFactory.GetVotingGuideMailMerge(awardType, nominationList);

            mailMerge.Execute(filePath);

            com.Get(() => attachments.Add(filePath.Value));

            AppendSection(content, $@"<b><i>{awardType.PrettyName} Nominees:</i></b> {fileName} -- {instructions}");
        }
Пример #18
0
 public CreateAwardVotingGuideMenuItemCommand(IStarFisherContext context, IMailMergeFactory mailMergeFactory)
     : base(context, CommandTitle, GetSuccessMessage(context))
 {
     _mailMergeFactory = mailMergeFactory ?? throw new ArgumentNullException(nameof(mailMergeFactory));
 }
 public SendNominationNotificationEmailsMenuItemCommand(IStarFisherContext context,
                                                        IMailMergeFactory mailMergeFactory)
     : base(context, CommandTitle, SuccessMessage)
 {
     _mailMergeFactory = mailMergeFactory ?? throw new ArgumentNullException(nameof(mailMergeFactory));
 }
Пример #20
0
        private static void AddSuperStarVotingGuideAttachmentsAndInstructions(ComObjectManager com, MailItem mailItem,
                                                                              HtmlNode content, IMailMergeFactory mailMergeFactory, NominationList nominationList, bool hasSuperStar)
        {
            if (!hasSuperStar)
            {
                return;
            }

            var instructions =
                $@"this document has all the nominations for the {
                        AwardType.SuperStar.PrettyName
                    }. Question #5 of the voting survey covers these nominations. The nominees are from all offices and also include remote employees. The survey does NOT list them in any particular order. Please note some nominees may have been nominated multiple times.";

            AddVotingGuideAttachmentAndInstructions(com, mailItem, content, mailMergeFactory, nominationList,
                                                    AwardType.SuperStar, instructions);
        }
Пример #21
0
 public StarAwardsMemoHelper(IExcelFileFactory excelFileFactory, IMailMergeFactory mailMergeFactory)
 {
     _excelFileFactory = excelFileFactory ?? throw new ArgumentNullException(nameof(excelFileFactory));
     _mailMergeFactory = mailMergeFactory ?? throw new ArgumentNullException(nameof(mailMergeFactory));
 }