Пример #1
0
        public async Task SendBulkEmail(Guid currentMemberId, Chapter chapter, IEnumerable <Member> to, EmailType type, IDictionary <string, string> parameters)
        {
            ChapterAdminMember from = await GetSender(chapter.Id, currentMemberId);

            Email email = await GetEmail(type, chapter.Id, parameters);

            await _mailProvider.SendBulkEmail(chapter, to.Select(x => x.EmailAddress), email.Subject, email.HtmlContent, from);
        }
Пример #2
0
        protected async Task AssertMemberIsChapterSuperAdmin(Guid memberId, Guid chapterId)
        {
            ChapterAdminMember chapterAdminMember = await ChapterRepository.GetChapterAdminMember(chapterId, memberId);

            if (chapterAdminMember == null || !chapterAdminMember.SuperAdmin)
            {
                throw new OdkNotAuthorizedException();
            }
        }
Пример #3
0
        private async Task <ChapterAdminMember> GetSender(Guid chapterId, Guid memberId)
        {
            ChapterAdminMember from = await _chapterRepository.GetChapterAdminMember(chapterId, memberId);

            if (from == null)
            {
                throw new OdkNotAuthorizedException();
            }

            return(from);
        }
Пример #4
0
 public async Task UpdateChapterAdminMember(ChapterAdminMember adminMember)
 {
     await Context
     .Update <ChapterAdminMember>()
     .Set(x => x.AdminEmailAddress, adminMember.AdminEmailAddress)
     .Set(x => x.ReceiveContactEmails, adminMember.ReceiveContactEmails)
     .Set(x => x.ReceiveNewMemberEmails, adminMember.ReceiveNewMemberEmails)
     .Set(x => x.SendNewMemberEmails, adminMember.SendNewMemberEmails)
     .Where(x => x.MemberId).EqualTo(adminMember.MemberId)
     .ExecuteAsync();
 }
Пример #5
0
        public async Task DeleteChapterAdminMember(Guid currentMemberId, Guid chapterId, Guid memberId)
        {
            ChapterAdminMember adminMember = await GetChapterAdminMember(currentMemberId, chapterId, memberId);

            if (adminMember.SuperAdmin)
            {
                return;
            }

            await _chapterRepository.DeleteChapterAdminMember(chapterId, memberId);
        }
Пример #6
0
        public async Task <ChapterAdminMember> GetChapterAdminMember(Guid currentMemberId, Guid chapterId, Guid memberId)
        {
            await AssertMemberIsChapterAdmin(currentMemberId, chapterId);

            ChapterAdminMember adminMember = await _chapterRepository.GetChapterAdminMember(chapterId, memberId);

            if (adminMember == null)
            {
                throw new OdkNotFoundException();
            }

            return(adminMember);
        }
Пример #7
0
        public async Task SendMemberEmail(Guid currentMemberId, Guid memberId, string subject, string body)
        {
            Member to = await _memberRepository.GetMember(memberId);

            if (to == null)
            {
                throw new OdkNotFoundException();
            }

            ChapterAdminMember from = await GetSender(to.ChapterId, currentMemberId);

            Chapter chapter = await _chapterRepository.GetChapter(from.ChapterId);

            await _mailProvider.SendEmail(chapter, to.EmailAddress, subject, body, from);
        }
Пример #8
0
        public async Task AssertMemberIsChapterMember(Member member, Guid chapterId)
        {
            AssertMemberIsCurrent(member);
            if (member.ChapterId == chapterId)
            {
                return;
            }

            ChapterAdminMember chapterAdminMember = await _chapterRepository.GetChapterAdminMember(chapterId, member.Id);

            if (chapterAdminMember != null)
            {
                return;
            }

            throw new OdkNotAuthorizedException();
        }
Пример #9
0
        public async Task UpdateChapterAdminMember(Guid currentMemberId, Guid chapterId, Guid memberId,
                                                   UpdateChapterAdminMember adminMember)
        {
            await AssertMemberIsChapterAdmin(currentMemberId, chapterId);

            ChapterAdminMember existing = await _chapterRepository.GetChapterAdminMember(chapterId, memberId);

            if (existing == null)
            {
                throw new OdkNotFoundException();
            }

            existing.AdminEmailAddress      = adminMember.AdminEmailAddress;
            existing.ReceiveContactEmails   = adminMember.ReceiveContactEmails;
            existing.ReceiveNewMemberEmails = adminMember.ReceiveNewMemberEmails;
            existing.SendNewMemberEmails    = adminMember.SendNewMemberEmails;

            await _chapterRepository.UpdateChapterAdminMember(existing);
        }
Пример #10
0
        public async Task AddChapterAdminMember(Guid currentMemberId, Guid chapterId, Guid memberId)
        {
            await AssertMemberIsChapterAdmin(currentMemberId, chapterId);

            Member member = await _memberRepository.GetMember(memberId);

            if (member == null)
            {
                throw new OdkNotFoundException();
            }

            ChapterAdminMember existing = await _chapterRepository.GetChapterAdminMember(chapterId, memberId);

            if (existing != null)
            {
                return;
            }

            ChapterAdminMember adminMember = new ChapterAdminMember(chapterId, memberId);
            await _chapterRepository.AddChapterAdminMember(adminMember);
        }
Пример #11
0
        public async Task <ChapterAdminMemberApiResponse> GetChapterAdminMember(Guid id, Guid memberId)
        {
            ChapterAdminMember adminMember = await _chapterAdminService.GetChapterAdminMember(GetMemberId(), id, memberId);

            return(_mapper.Map <ChapterAdminMemberApiResponse>(adminMember));
        }
Пример #12
0
        private async Task AddEmailFrom(MimeMessage message, ChapterEmailProvider provider, ChapterAdminMember from)
        {
            if (from != null)
            {
                Member member = await _memberRepository.GetMember(from.MemberId);

                message.From.Add(new MailboxAddress($"{member.FirstName} {member.LastName}", from.AdminEmailAddress));
            }
            else
            {
                message.From.Add(new MailboxAddress(provider.FromName, provider.FromEmailAddress));
            }
        }
Пример #13
0
        public async Task SendBulkEmail(Guid currentMemberId, Chapter chapter, IEnumerable <Member> to, string subject, string body)
        {
            ChapterAdminMember from = await GetSender(chapter.Id, currentMemberId);

            await _mailProvider.SendBulkEmail(chapter, to.Select(x => x.EmailAddress), subject, body, from);
        }
Пример #14
0
        private async Task <MimeMessage> CreateMessage(ChapterEmailProvider provider, ChapterAdminMember from, string subject, string body)
        {
            MimeMessage message = new MimeMessage
            {
                Body = new TextPart(TextFormat.Html)
                {
                    Text = body
                },
                Subject = subject
            };

            await AddEmailFrom(message, provider, from);

            return(message);
        }
Пример #15
0
        public async Task SendBulkEmail(Chapter chapter, IEnumerable <string> to, string subject, string body, ChapterAdminMember from, bool bcc = true)
        {
            body = await GetLayoutBody(chapter, body);

            int           i      = 0;
            List <string> toList = to.ToList();

            while (i < toList.Count)
            {
                (ChapterEmailProvider provider, int remaining) = await GetProvider(chapter.Id);

                int batchSize = provider.BatchSize ?? (toList.Count - i);
                if (batchSize > remaining)
                {
                    batchSize = remaining;
                }

                IEnumerable <string> batch   = toList.Skip(i).Take(batchSize);
                MimeMessage          message = await CreateMessage(provider, from, subject, body);

                if (bcc)
                {
                    AddBulkEmailBccRecipients(message, message.From.First(), batch);
                }
                else
                {
                    AddBulkEmailRecipients(message, batch);
                }

                await SendEmail(provider, message);

                i += batchSize;
            }
        }
Пример #16
0
        public async Task SendEmail(Chapter chapter, string to, string subject, string body, ChapterAdminMember from)
        {
            body = await GetLayoutBody(chapter, body);

            (ChapterEmailProvider provider, int _) = await GetProvider(chapter.Id);

            MimeMessage message = await CreateMessage(provider, from, subject, body);

            AddEmailRecipient(message, new MailboxAddress(to));

            await SendEmail(provider, message);
        }
Пример #17
0
 public async Task AddChapterAdminMember(ChapterAdminMember adminMember)
 {
     await Context
     .Insert(adminMember)
     .ExecuteAsync();
 }