public ActionResult Create(Usuario usuario) { if (ModelState.IsValid) { try { Usuario nuevoUsuario = repositorioUsuario.BuscarPorEmail(usuario.Email); if (nuevoUsuario != null) { ViewBag.MensajeError = "Ya existe un usuario con el email ingresado"; ViewBag.Roles = Usuario.ObtenerRoles(); return(View(usuario)); } string hashContraseña = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: usuario.Contraseña, salt: System.Text.Encoding.ASCII.GetBytes(iconfiguration["Salt"]), prf: KeyDerivationPrf.HMACSHA1, iterationCount: 1000, numBytesRequested: 256 / 8)); usuario.Contraseña = hashContraseña; usuario.Rol = User.IsInRole("Administrador") ? usuario.Rol : (int)roles.Empleado; usuario.AvatarUrl = "/Uploads/default.png"; int resultado = repositorioUsuario.Create(usuario); if (usuario.AvatarFile != null && usuario.Id > 0) { string root = enviroment.WebRootPath; string path = Path.Combine(root, "Uploads"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string fileName = "avatar_" + resultado + Path.GetExtension(usuario.AvatarFile.FileName); string pathCompleto = Path.Combine(path, fileName); usuario.AvatarUrl = Path.Combine("/Uploads", fileName); using (FileStream stream = new FileStream(pathCompleto, FileMode.Create)) { usuario.AvatarFile.CopyTo(stream); } repositorioUsuario.Edit(usuario.Id, usuario); } return(RedirectToAction(nameof(Index))); } catch (Exception e) { return(View()); } } else { return(View()); } }