public IActionResult GlobalEmail(GlobalEmailViewModel model)
        {
            if (ModelState.IsValid)
            {
                IDictionary <string, string> users = new Dictionary <string, string>();
                IList <string> excludedDomains     = model.ExcludedDomains.Where(ed => ed.Value).Select(ed => ed.Key).ToList();

                foreach (var user in _userManager.Users)
                {
                    bool send = true;

                    foreach (var domain in excludedDomains)
                    {
                        if (user.Email.Contains(domain))
                        {
                            send = false;
                            break;
                        }
                    }

                    if (send)
                    {
                        users.Add(user.Email, user.UserName);
                    }
                }

                Task.Run(() => _emailService.SendGlobalMessage(users, model.Message.Replace("\r\n", "<br/>"), model.Subject));
                return(RedirectToAction("UsersList", "UserAdmin"));
            }

            GetDomains(model);

            return(View(model));
        }
        public IActionResult GlobalEmail()
        {
            var model = new GlobalEmailViewModel()
            {
                Subject = string.Empty,
                Message = string.Empty,
            };

            GetDomains(model);

            return(View(model));
        }
        private void GetDomains(GlobalEmailViewModel model)
        {
            var excludeDomains = new Dictionary <string, bool>();
            var emails         = _userManager.Users
                                 .Select(u => u.Email)
                                 .Distinct()
                                 .ToList();

            foreach (var email in emails)
            {
                var domain = email.Substring(email.LastIndexOf('@') + 1);
                if (!string.IsNullOrEmpty(domain))
                {
                    if (!excludeDomains.ContainsKey(domain))
                    {
                        excludeDomains.Add(domain, false);
                    }
                }
            }

            model.ExcludedDomains = excludeDomains;
        }