Beispiel #1
0
        public async Task <IActionResult> Edit(string id, [Bind("IdCategoria,Nombre,Descripcion,Foto,Stock,CantidadMinima,PrecioCosto,PrecioVenta,FechaVencimiento,UnidadMedida,AlarmaActivada")] ProductoViewModelEdit producto)
        {
            if (id == null)
            {
                return(NotFound());
            }

            if (!(await trabajadorRepository.EsJefe()).Item2)
            {
                return(Unauthorized("No tiene permisos para ver este contenido."));
            }

            if (ModelState.IsValid)
            {
                Producto?p = await productoRepository.GetById(id);

                if (p == null)
                {
                    return(NotFound());
                }

                if (producto.Foto != null)
                {
                    if (p.Foto != null)
                    {
                        await servicesAWSS3.EliminarFoto(p);
                    }

                    using (MemoryStream m = new())
                    {
                        producto.Foto.CopyTo(m);
                        await servicesAWSS3.SubirFotoProducto(m, p);

                        producto.FotoUrl = "foto.png";
                    }
                }
                else if (producto.Foto == null && p.Foto != null)
                {
                    producto.FotoUrl = "foto.png";
                }

                await productoRepository.Update(id, producto);

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdCategoria"] = new SelectList(await categoriaRepository.GetAll(), "IdCategoria", "Nombre", producto.IdCategoria);
            return(View(producto));
        }
Beispiel #2
0
        public async Task <int> Update(string id, ProductoViewModelEdit p)
        {
            Producto?producto = await GetById(id);

            if (producto == null)
            {
                throw new Exception("No existe el producto");
            }

            var trabajador = await repTrabajador.GetCurrentTrabajador();

            Producto productoEditado = new()
            {
                IdProducto       = id,
                IdCategoria      = p.IdCategoria,
                IdNegocio        = producto.IdNegocio,
                Nombre           = p.Nombre,
                Descripcion      = p.Descripcion,
                Stock            = p.Stock,
                PrecioCosto      = p.PrecioCosto,
                PrecioVenta      = p.PrecioVenta,
                FechaVencimiento = p.FechaVencimiento,
                UnidadMedida     = p.UnidadMedida ?? "Unit",
                AlarmaActivada   = p.AlarmaActivada,
                CantidadMinima   = p.CantidadMinima
            };

            NpgsqlParameter param1  = new("@p0", id);
            NpgsqlParameter param2  = new("@p1", productoEditado.IdCategoria);
            NpgsqlParameter param3  = new("@p2", productoEditado.IdNegocio);
            NpgsqlParameter param4  = new("@p3", productoEditado.Nombre);
            NpgsqlParameter param5  = new("@p4", productoEditado.Descripcion !as object ?? DBNull.Value);
            NpgsqlParameter param6  = new("@p5", (object)p.FotoUrl ! ?? DBNull.Value);
            NpgsqlParameter param7  = new("@p6", productoEditado.Stock);
            NpgsqlParameter param8  = new("@p7", (object)productoEditado.CantidadMinima ! ?? DBNull.Value);
            NpgsqlParameter param9  = new("@p8", productoEditado.PrecioCosto);
            NpgsqlParameter param10 = new("@p9", productoEditado.PrecioVenta);
            NpgsqlParameter param11 = new("@p10", (productoEditado.FechaVencimiento != null) ? productoEditado.FechaVencimiento.GetValueOrDefault().ToShortDateString().Replace("-", "") : DBNull.Value);
            NpgsqlParameter param12 = new("@p11", productoEditado.UnidadMedida);
            NpgsqlParameter param13 = new("@p12", productoEditado.AlarmaActivada);
            NpgsqlParameter param14 = new("@p13", productoEditado.AlarmaAccionada);
            NpgsqlParameter param15 = new("@p14", (object)productoEditado.FechaAlarma ! ?? DBNull.Value);
            NpgsqlParameter param16 = new("@p15", trabajador !.Rut);

            /*
             * CREATE OR REPLACE PROCEDURE public.actualizarproducto(
             *  _idproducto character varying,
             *  _idcategoria character varying,
             *  _idnegocio character varying,
             *  _nombre character varying,
             *  _descripcion character varying,
             *  _foto character varying,
             *  _stock integer,
             *  _cantidadminima integer,
             *  _preciocosto integer,
             *  _precioventa integer,
             *  _fechavencimiento character varying,
             *  _unidadmedida character varying,
             *  _alarmaactivada boolean,
             *  _alarmaaccionada boolean,
             *  _fechaalarma timestamp without time zone,
             *  _rut character varying)
             * LANGUAGE 'sql'
             * AS $BODY$
             * UPDATE "Producto" SET
             *  "IdCategoria" = _IdCategoria,
             *  "Nombre" = _Nombre,
             *  "Descripcion" = _Descripcion,
             *  "Foto" = _Foto,
             *  "CantidadMinima" = _CantidadMinima,
             *  "PrecioCosto" = _PrecioCosto,
             *  "PrecioVenta" = _PrecioVenta,
             *  "Stock" = _Stock,
             *  "FechaVencimiento" = to_date(_FechaVencimiento, 'DDMMYY'),
             *  "UnidadMedida" = _UnidadMedida,
             *  "AlarmaActivada" = _alarmaactivada,
             *  "AlarmaAccionada" = _alarmaaccionada,
             *  "FechaAlarma" = _fechaalarma
             *  WHERE "IdProducto" = _IdProducto AND "IdNegocio" = _IdNegocio;
             *
             *  SET TIMEZONE='America/Santiago';
             *  INSERT INTO "Historial"(
             *      "IdTrabajador",
             *      "IdProducto",
             *      "IdAccion",
             *      "FechaModificacion")
             *  VALUES(_rut,
             *         _IdProducto,
             *         '2',
             *         (select now()::timestamp(0)));
             * $BODY$;
             */
            return(await context.Database.ExecuteSqlRawAsync("CALL actualizarproducto(@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15)", param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16));
        }
    }