示例#1
0
        protected (bool, ValidationResult) CheckExistence(OutlookContext context, int id, string email, string[] addresses, string err_prefix, int send_type)
        {
            bool distinct = false;

            foreach (string user in addresses)
            {
                if (user.Length == 0)
                {
                    continue;
                }
                if (user.Equals(email))
                {
                    continue;
                }
                if (user.StartsWith("g:"))
                {
                    string group = user.Substring(2);
                    Group  g     = context.Groups.FirstOrDefault(x => (x.GroupName == group && x.OwnerId == id));
                    if (g == null)
                    {
                        return(false, new ValidationResult($"{err_prefix}: Group {group} doesn't exist!"));
                    }
                    List <string> members = context.GetUsersFromGroup(g.Id);
                    foreach (string member in members)
                    {
                        Debug.WriteLine(member);
                        if (Addresses.ContainsKey(member))
                        {
                            if (Addresses[member] != send_type)
                            {
                                return(false, new ValidationResult($"{err_prefix}: User {member} from {group} has multiple delivery rules. Remove unnecesary rules!"));
                            }
                        }
                        Addresses[member] = send_type;
                    }
                    distinct = true;
                }
                else
                {
                    User u = context.Users.FirstOrDefault(x => x.EmailAddress == user);
                    if (u == null)
                    {
                        return(false, new ValidationResult($"{err_prefix}: User {user} doesn't exist!"));
                    }
                    if (Addresses.ContainsKey(user))
                    {
                        if (Addresses[user] != send_type)
                        {
                            return(false, new ValidationResult($"{err_prefix}: User {user} has multiple delivery rules. Remove unnecesary rules!"));
                        }
                    }
                    Addresses[user] = send_type;
                    distinct        = true;
                }
            }
            return(distinct, ValidationResult.Success);
        }