예제 #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));
        }
예제 #2
0
        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);
            }
        }