Exemplo n.º 1
0
        public EmailRecipientsWithPermission(
            User user,
            ActionRequiringAccountPermissions action,
            IReadOnlyList <MailAddress> cc      = null,
            IReadOnlyList <MailAddress> bcc     = null,
            IReadOnlyList <MailAddress> replyTo = null)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            To = AddAddressesWithPermission(user, action);

            CC      = cc ?? new List <MailAddress>();
            Bcc     = bcc ?? new List <MailAddress>();
            ReplyTo = replyTo ?? new List <MailAddress>();
        }
        public static IReadOnlyList <MailAddress> GetAddressesWithPermission(User user, ActionRequiringAccountPermissions action)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            var recipients = new List <MailAddress>();

            if (user is Organization organization)
            {
                var membersAllowedToAct = organization.Members
                                          .Where(m => action.CheckPermissions(m.Member, m.Organization) == PermissionsCheckResult.Allowed)
                                          .Select(m => m.Member);

                foreach (var member in membersAllowedToAct)
                {
                    if (!member.EmailAllowed)
                    {
                        continue;
                    }

                    recipients.Add(member.ToMailAddress());
                }
            }
            else if (user.EmailAllowed)
            {
                recipients.Add(user.ToMailAddress());
            }

            return(recipients);
        }
Exemplo n.º 3
0
        private static IReadOnlyList <MailAddress> AddAddressesWithPermission(User user, ActionRequiringAccountPermissions action)
        {
            var recipients = new List <MailAddress>();

            if (user is Organization organization)
            {
                var membersAllowedToAct = organization.Members
                                          .Where(m => action.CheckPermissions(m.Member, m.Organization) == PermissionsCheckResult.Allowed)
                                          .Select(m => m.Member);

                foreach (var member in membersAllowedToAct)
                {
                    if (!member.EmailAllowed)
                    {
                        continue;
                    }

                    recipients.Add(member.ToMailAddress());
                }
            }
            else if (user.EmailAllowed)
            {
                recipients.Add(user.ToMailAddress());
            }

            return(recipients);
        }