//[Authorize(Roles = "ADMIN")] // Solo administradores podrán guardar información private async Task <bool> Guardar_Usuario_Async() { _dataInput = MODEL_USUARIO; var valor = false; if (ModelState.IsValid) { var userList = _userManager.Users.Where(u => u.Email.Equals(MODEL_USUARIO.Email)).ToList(); if (userList.Count.Equals(0)) { var strategy = _context.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var transaction = _context.Database.BeginTransaction()) { try { var usuarioaspnet = new IdentityUser { UserName = MODEL_USUARIO.Email, Email = MODEL_USUARIO.Email, PhoneNumber = MODEL_USUARIO.PhoneNumber }; var result = await _userManager.CreateAsync(usuarioaspnet, MODEL_USUARIO.Password); if (result.Succeeded) { await _userManager.AddToRoleAsync(usuarioaspnet, MODEL_USUARIO.Role); var dataUser = _userManager.Users.Where(u => u.Email.Equals(MODEL_USUARIO.Email)).ToList().Last(); var imagenByte = await _lCargarImagen.ByteAvatarImageAsync(MODEL_USUARIO.AvatarImage, _environment, "images/user_icon.png"); var Nuevo_Usuario = new MODELO_USUARIO { USER_NOMBRE = _dataInput.Name, USER_APELLIDO = _dataInput.LastName, USER_EMAIL = _dataInput.Email, USER_RUT = _dataInput.NID, USER_IMAGE = imagenByte, USER_PASS = _dataInput.Password, USER_ROL = _dataInput.Role, USER_ID_USER = dataUser.Id, USER_CELULAR = _dataInput.PhoneNumber }; await _context.AddAsync(Nuevo_Usuario); _context.SaveChanges(); transaction.Commit(); _dataInput = null; valor = true; } else { foreach (var item in result.Errors) { _dataInput.ErrorMessage = item.Description; } valor = false; transaction.Rollback(); } } catch (Exception ex) { _dataInput.ErrorMessage = ex.Message; transaction.Rollback(); valor = false; } } }); } else { _dataInput.ErrorMessage = $"El Correo {MODEL_USUARIO.Email} ya se encuentra Registrado"; } } else { foreach (var modelState in ModelState.Values) { foreach (var error in modelState.Errors) { _dataInput.ErrorMessage += error.ErrorMessage; } } valor = false; } return(valor); }
//[Authorize(Roles = "ADMIN")] // Solo administradores podrán guardar información private async Task <bool> Actualizar_Usuario_Async() { var valor = false; byte[] imageByte = null; var strategy = _context.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var transaction = _context.Database.BeginTransaction()) { try { var identityUser = _userManager.Users.Where(u => u.Id.Equals(_DataUser2.ID)).ToList().Last(); identityUser.UserName = MODEL_USUARIO.Email; identityUser.Email = MODEL_USUARIO.Email; identityUser.PhoneNumber = MODEL_USUARIO.PhoneNumber; _context.Update(identityUser); await _context.SaveChangesAsync(); if (MODEL_USUARIO.AvatarImage == null) { imageByte = _DataUser2.Image; } else { imageByte = await _lCargarImagen.ByteAvatarImageAsync(MODEL_USUARIO.AvatarImage, _environment, ""); } var ds_user = new MODELO_USUARIO { USER_ID = _DataUser2.Id, USER_NOMBRE = MODEL_USUARIO.Name, USER_APELLIDO = MODEL_USUARIO.LastName, USER_RUT = MODEL_USUARIO.NID, USER_CELULAR = MODEL_USUARIO.PhoneNumber, USER_EMAIL = MODEL_USUARIO.Email, USER_ID_USER = _DataUser2.ID, USER_PASS = MODEL_USUARIO.Password, USER_IMAGE = imageByte, }; var usuario_pass = await _userManager.FindByIdAsync(_DataUser2.ID); var code = await _userManager.GeneratePasswordResetTokenAsync(usuario_pass); var resultado = await _userManager.ResetPasswordAsync(usuario_pass, code, MODEL_USUARIO.Password); _context.Update(ds_user); _context.SaveChanges(); if (_DataUser2.Role != MODEL_USUARIO.Role) { await _userManager.RemoveFromRoleAsync(identityUser, _DataUser2.Role); await _userManager.AddToRoleAsync(identityUser, MODEL_USUARIO.Role); } transaction.Commit(); valor = true; } catch (Exception ex) { _dataInput.ErrorMessage = ex.Message; transaction.Rollback(); valor = false; } } }); return(valor); }