Exemplo n.º 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);
     }
 }
Exemplo n.º 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))))
 {
 }
Exemplo n.º 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);
     }
 }
Exemplo n.º 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);
            }
        }
Exemplo n.º 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);
            }
        }
Exemplo n.º 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);
        }
Exemplo n.º 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));
        }
Exemplo n.º 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));
            }
        }
Exemplo n.º 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);
            }
        }
Exemplo n.º 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);
            }
        }
Exemplo n.º 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);
        }
Exemplo n.º 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);
        }
Exemplo n.º 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);
        }
Exemplo n.º 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}");
        }
Exemplo n.º 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));
 }
Exemplo n.º 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);
        }
Exemplo n.º 21
0
 public StarAwardsMemoHelper(IExcelFileFactory excelFileFactory, IMailMergeFactory mailMergeFactory)
 {
     _excelFileFactory = excelFileFactory ?? throw new ArgumentNullException(nameof(excelFileFactory));
     _mailMergeFactory = mailMergeFactory ?? throw new ArgumentNullException(nameof(mailMergeFactory));
 }