public async Task <int> Actualizar(TrabajadorUpdateViewModel trabajador) { var t = await GetCurrentTrabajador(); if (t == null) { return(-1); } bool entro = false; if (trabajador.Foto != null) { if (t.Foto != null) { await servicesAWSS3.EliminarFoto(t); } using (MemoryStream m = new()) { trabajador.Foto.CopyTo(m); await servicesAWSS3.SubirFotoTrabajador(m, t); entro = true; trabajador.FotoUrl = "foto.png"; } } else if (trabajador.Foto == null && t.Foto != null) { entro = true; trabajador.FotoUrl = "foto.png"; } Console.WriteLine("UPDATE \"Trabajador\" SET \"Nombre\" = " + ((!string.IsNullOrWhiteSpace(trabajador.Nombre)) ? trabajador.Nombre : t.Nombre) + ", \"Apellido\" = " + ((!string.IsNullOrWhiteSpace(trabajador.Apellido)) ? trabajador.Apellido : t.Apellido) + ", \"Correo\" = " + ((!string.IsNullOrWhiteSpace(trabajador.Correo)) ? trabajador.Correo : t.Correo) + ", \"Contrasena\" = " + (BCrypt.Net.BCrypt.HashPassword(trabajador.Contrasena)) + ", \"Foto\" = " + ((object)trabajador.FotoUrl ! ?? DBNull.Value) + ", \"Telefono\" = " + ((!string.IsNullOrWhiteSpace(trabajador.Telefono)) ? trabajador.Telefono : t.Telefono) + " WHERE \"Rut\" = " + (t !.Rut.Replace(".", "").Replace("-", "").Trim())); NpgsqlParameter param1 = new NpgsqlParameter("@p0", (!string.IsNullOrWhiteSpace(trabajador.Nombre)) ? trabajador.Nombre : t.Nombre); NpgsqlParameter param2 = new NpgsqlParameter("@p1", (!string.IsNullOrWhiteSpace(trabajador.Apellido)) ? trabajador.Apellido : t.Apellido); NpgsqlParameter param3 = new NpgsqlParameter("@p2", (!string.IsNullOrWhiteSpace(trabajador.Correo)) ? trabajador.Correo : t.Correo); NpgsqlParameter param4 = new NpgsqlParameter("@p3", BCrypt.Net.BCrypt.HashPassword(trabajador.Contrasena)); NpgsqlParameter param6 = new NpgsqlParameter("@p4", (object)trabajador.FotoUrl ! ?? DBNull.Value); NpgsqlParameter param7 = new NpgsqlParameter("@p5", (!string.IsNullOrWhiteSpace(trabajador.Telefono)) ? trabajador.Telefono : t.Telefono); NpgsqlParameter param8 = new NpgsqlParameter("@p6", t !.Rut); return(await context.Database .ExecuteSqlRawAsync("UPDATE \"Trabajador\" SET \"Nombre\" = @p0, \"Apellido\" = @p1, \"Correo\" = @p2, \"Contrasena\" = @p3, \"Foto\" = @p4, \"Telefono\" = @p5 WHERE \"Rut\" = @p6", param1, param2, param3, param4, param6, param7, param8)); }
public async Task <IActionResult> Profile(TrabajadorUpdateViewModel model) { if (!ModelState.IsValid) { return(View(model)); } if (model == null) { return(LocalRedirect("~/Producto")); } if (string.IsNullOrWhiteSpace(model.Correo)) { ModelState.AddModelError(nameof(model.Correo), "El correo ingresado es invalido."); return(View(model)); } if (string.IsNullOrWhiteSpace(model.Contrasena)) { ModelState.AddModelError(nameof(model.Contrasena), "La contraseña no puede estar vacia."); return(View(model)); } var t = await repositorioTrabajadores.GetByEmail(model.Correo); var rut = administradorSesion.UsuarioActual()?.FindFirst(ClaimTypes.NameIdentifier)?.Value; if (t != null && t.Rut != rut) { ModelState.AddModelError(nameof(model.Correo), "El correo ingresado ya existe."); return(View(model)); } await repositorioTrabajadores.Actualizar(model); return(LocalRedirect("~/Producto")); }