示例#1
0
 public async Task <IActionResult> MassRegistration(string Path)
 {
     try
     {
         ExcelParser      ep    = new ExcelParser();
         MassRegViewModel model = new MassRegViewModel()
         {
             FIOs       = ep.ReadColumn(Path, 0),
             Emails     = ep.ReadColumn(Path, 1),
             Passwords  = ep.ReadColumn(Path, 2),
             Roles      = ep.ReadColumn(Path, 3),
             userGrants = await checkService.getUserGrants(User)
         };
         int em = model.Emails.Count;
         int fi = model.FIOs.Count;
         int pa = model.FIOs.Count;
         int ro = model.Roles.Count;
         model.Count = Math.Max(Math.Max(em, fi), Math.Max(pa, ro));
         System.IO.File.Delete(Path);
         return(View(model));
     }
     catch (Exception e)
     {
         return(RedirectToAction("ErrorLoadingFile", "Errors", new { message = e.Message }));
     }
 }
示例#2
0
        public async Task <IActionResult> MassRegistration(string Path, string Id)
        {
            try
            {
                ExcelParser      ep    = new ExcelParser();
                MassRegViewModel model = new MassRegViewModel()
                {
                    FIOs       = ep.ReadColumn(Path, 0),
                    Emails     = ep.ReadColumn(Path, 0),
                    userGrants = await checkService.getUserGrants(User)
                                 // Passwords = ep.ReadColumn(Path, 2),
                                 //Roles = ep.ReadColumn(Path, 3)
                };
                model.TargetSpecId = Id;
                model.Count        = model.Emails.Count;
                for (int i = 0; i < model.Count; i++)
                {
                    var user = await userManager.FindByNameAsync(model.Emails[i]);

                    if (user != null)
                    {
                        model.FIOs[i] = user.FIO;
                    }
                    else
                    {
                        model.FIOs[i] = "Пользователь не найден";
                    }
                }
                System.IO.File.Delete(Path);
                return(View(model));
            }
            catch (Exception e)
            {
                return(RedirectToAction("ErrorLoadingFile", "Errors", new { message = e.Message }));
            }
        }
示例#3
0
        public async Task <IActionResult> MassRegistration(MassRegViewModel model)
        {
            List <string> FailedUsers = new List <string>();

            for (int i = 0; i < model.Count; i++)
            {
                var    fio    = model.FIOs[i];
                var    email  = model.Emails[i];
                var    pass   = model.Passwords[i];
                var    role   = model.Roles[i];
                bool   isOk   = true;
                string reason = "";
                if (String.IsNullOrWhiteSpace(fio) || String.IsNullOrWhiteSpace(email) || String.IsNullOrWhiteSpace(pass) || String.IsNullOrWhiteSpace(role))
                {
                    isOk   = false;
                    reason = "В ФИО/Email/Пароль/Роль было передано пустое значение";
                }
                if (isOk)
                {
                    var email_attr = new EmailAddressAttribute();
                    if (!email_attr.IsValid(email))
                    {
                        isOk   = false;
                        reason = "Email имеет неверный формат";
                    }
                    if (isOk)
                    {
                        EUser user = new EUser()
                        {
                            Email    = email,
                            UserName = email,
                            FIO      = fio
                        };

                        var result0  = await userManager.UserValidators[0].ValidateAsync(userManager, user);
                        var result01 = await userManager.PasswordValidators[0].ValidateAsync(userManager, user, pass);
                        if (!result0.Succeeded || !result01.Succeeded)
                        {
                            isOk = false;
                            if (result0.Succeeded)
                            {
                                reason = "Неверный формат пароля";
                            }
                            if (result01.Succeeded)
                            {
                                reason = "Данный Email уже занят другим пользователем";
                            }
                        }
                        if (isOk)
                        {
                            if (!await roleManager.RoleExistsAsync(role))
                            {
                                isOk   = false;
                                reason = "Роли " + role + " не существует";
                            }
                            if (isOk)
                            {
                                var result = await userManager.CreateAsync(user, pass);

                                var result2 = await userManager.AddToRoleAsync(user, role);

                                if (!result.Succeeded || !result2.Succeeded)
                                {
                                    isOk   = false;
                                    reason = "Ошибка внесения изменений в базу данных, точная причина неизвестна";
                                }
                                await RegistrationAlertAsync(user, pass);
                            }
                        }
                    }
                }
                if (!isOk)
                {
                    FailedUsers.Add(fio + " | " + email + " | " + pass + " | " + role + " - " + reason);
                }
            }
            if (FailedUsers.Count == 0)
            {
                return(RedirectToAction("Index"));
            }
            else
            {
                return(RedirectToAction("MassRegistrationFails", new { list = FailedUsers }));
            }
        }
示例#4
0
        public async Task <IActionResult> MassRegistration(MassRegViewModel model)
        {
            List <string> FailedUsers = new List <string>();

            for (int i = 0; i < model.Count; i++)
            {
                var    email  = model.Emails[i];
                string fio    = "";
                bool   isOk   = true;
                string reason = "";
                if (String.IsNullOrWhiteSpace(email))
                {
                    isOk   = false;
                    reason = "В Email было передано пустое значение";
                }
                if (isOk)
                {
                    var spec = await(from s in DBContext.Specialities.Include(s => s.Students)
                                     where s.Id.ToString() == model.TargetSpecId select s).FirstOrDefaultAsync();
                    var user = await(from u in DBContext.Users
                                     where u.Email.ToLower() == email.ToLower() select u).FirstOrDefaultAsync();

                    if (user == null)
                    {
                        isOk   = false;
                        reason = "Пользователь не найден";
                    }
                    if (isOk)
                    {
                        fio = user.FIO;
                        if (!(await userManager.IsInRoleAsync(user, "Student")))
                        {
                            isOk   = false;
                            reason = "Пользователь не принадлежит к роли 'Student'";
                        }
                        if (isOk)
                        {
                            var oldspec = await(from s in DBContext.Specialities.Include(s => s.Students)
                                                where s.Students.Contains(user)
                                                select s).FirstOrDefaultAsync();
                            DBContext.Update(spec).Entity.Students.Add(user);
                            if (oldspec != null)
                            {
                                DBContext.Update(oldspec).Entity.Students.Remove(user);
                            }
                        }
                    }
                }
                if (!isOk)
                {
                    if (String.IsNullOrWhiteSpace(fio))
                    {
                        fio = "(ФИО не определено)";
                    }
                    if (String.IsNullOrWhiteSpace(email))
                    {
                        email = "(Пустой Email)";
                    }
                    FailedUsers.Add(email + " | " + fio + " - " + reason);
                }
            }
            await DBContext.SaveChangesAsync();

            if (FailedUsers.Count == 0)
            {
                return(RedirectToAction("Index", new { SpecId = model.TargetSpecId }));
            }
            else
            {
                return(RedirectToAction("MassRegistrationFails", new { list = FailedUsers, Id = model.TargetSpecId }));
            }
        }