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 })); } }
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 })); } }
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 })); } }
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 })); } }