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> Create([Bind("Nombre, Apellido, Rut, Correo, Contrasena, FechaNacimiento, Telefono, Foto")] TrabajadorEmployCreateViewModel trabajador) { try { if (ModelState.IsValid) { if ((await trabajadorRepository.GetByEmail(trabajador.Correo)) != null) { ModelState.AddModelError(nameof(trabajador.Correo), "El correo ingresado ya existe."); return(View(trabajador)); } else if ((await trabajadorRepository.GetByRut(trabajador.Rut)) != null) { ModelState.AddModelError(nameof(trabajador.Rut), "El rut ingresado ya existe."); return(View(trabajador)); } var p = await trabajadorRepository.Employ(trabajador); if (trabajador.Foto != null) { using (MemoryStream m = new()) { trabajador.Foto.CopyTo(m); await servicesAWSS3.SubirFotoTrabajador(m, p); } } return(RedirectToAction(nameof(Index))); } return(View(trabajador)); } catch (Exception e) { return(StatusCode((int)System.Net.HttpStatusCode.Unauthorized, e.Message)); //return Unauthorized(e.Message); } }