Beispiel #1
0
        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));
        }
Beispiel #2
0
        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"));
        }