예제 #1
0
        public IActionResult Post([FromBody] Proveedor proveedor)
        {
            proveedor.CreatedOn = DateTime.Now;
            var result = _context.Proveedor.Add(proveedor);

            _context.SaveChanges();

            return(Created("", result.Entity));
        }
예제 #2
0
        public IActionResult Post([FromBody] Cliente cliente)
        {
            cliente.CreatedOn = DateTime.Now;
            var result = _context.Cliente.Add(cliente);

            _context.SaveChanges();

            return(Created("", result.Entity));
        }
예제 #3
0
        public IActionResult Post([FromBody] Categoria categoria)
        {
            categoria.CreatedOn = DateTime.Now;
            var result = _context.Categoria.Add(categoria);

            _context.SaveChanges();

            return(Created("", result.Entity));
        }
예제 #4
0
        public IActionResult Post([FromBody] Usuario usuario)
        {
            var userWithSameEmail = _context.Usuarios.FirstOrDefault(x => x.Correo == usuario.Correo);

            if (userWithSameEmail == null)
            {
                usuario.IdRol     = _appSettings.IdRolAdmin;
                usuario.Clave     = StringExtension.HashPassword(usuario.Clave);
                usuario.CreatedOn = DateTime.Now;
                var result = _context.Usuarios.Add(usuario);
                _context.SaveChanges();
                return(Created("", result.Entity));
            }
            else
            {
                return(BadRequest(new { message = "El correo ya esta en uso" }));
            }
        }
예제 #5
0
        public IActionResult Post([FromBody] PedidoDto dto)
        {
            // Consulta los id de producto enviados por el frontend
            var     products = _context.Producto.Where(x => dto.ListaProductos.Select(s => s.IdProducto).Contains(x.Id));
            decimal total    = 0;

            // Calcula el valor total del pedido multiplicando el precio de cada producto por su cantidad y sumandolo
            foreach (var producto in products)
            {
                var cantidad = dto.ListaProductos.First(x => x.IdProducto == producto.Id).Cantidad;
                total += cantidad * producto.Precio;
            }

            var pedido = new Pedido
            {
                IdCliente  = dto.IdCliente,
                IdUsuario  = dto.IdUsuario,
                ValorTotal = total,
                CreatedOn  = DateTime.Now
            };

            var result = _context.Pedido.Add(pedido);

            _context.SaveChanges();

            foreach (var item in dto.ListaProductos)
            {
                Producto producto = _context.Producto.First(x => x.Id == item.IdProducto);

                producto.Stock -= item.Cantidad;
                _context.Producto.Attach(producto);
                _context.Entry(producto).State = EntityState.Modified;
                _context.SaveChanges();

                var productItem = new PedidoProducto
                {
                    IdPedido   = result.Entity.Id,
                    IdProducto = item.IdProducto,
                    Cantidad   = item.Cantidad,
                    ValorTotal = item.Cantidad * producto.Precio
                };

                _context.PedidoProducto.Add(productItem);
                _context.SaveChanges();
            }

            return(Created("", result.Entity));
        }
예제 #6
0
        public IActionResult Put(PedidoDto dto)
        {
            decimal total = 0;
            // Consulta los id de producto enviados por el frontend
            var products = _context.Producto.Where(x => dto.ListaProductos.Select(s => s.IdProducto).Contains(x.Id));

            // Calcula el valor total del pedido multiplicando el precio de cada producto por su cantidad y sumandolo
            foreach (var producto in products)
            {
                var cantidad = dto.ListaProductos.First(x => x.IdProducto == producto.Id).Cantidad;
                total += cantidad * producto.Precio;
            }

            var pedido = new Pedido
            {
                Id         = dto.Id,
                IdCliente  = dto.IdCliente,
                IdUsuario  = dto.IdUsuario,
                ValorTotal = total,
            };

            var result = _context.Pedido.Attach(pedido);

            _context.Entry(pedido).State = EntityState.Modified;
            _context.SaveChanges();

            var productItems = _context.PedidoProducto.Where(x => x.IdPedido == pedido.Id);

            foreach (var productItem in productItems)
            {
                if (!dto.ListaProductos.Any(x => x.IdProducto == productItem.IdProducto))
                {
                    using (MisPollosContext context = new MisPollosContext())
                    {
                        Producto product = context.Producto.First(x => x.Id == productItem.IdProducto);
                        product.Stock += productItem.Cantidad;
                        context.SaveChanges();
                    }
                    _context.PedidoProducto.Remove(productItem);
                }
            }
            _context.SaveChanges();

            foreach (var item in dto.ListaProductos)
            {
                Producto producto = _context.Producto.First(x => x.Id == item.IdProducto);
                var      cantidad = productItems.FirstOrDefault(x => x.IdProducto == item.IdProducto)?.Cantidad ?? 0;
                //                   5            10
                producto.Stock += cantidad - item.Cantidad;
                //                   10            5
                _context.Producto.Attach(producto);
                _context.Entry(producto).State = EntityState.Modified;
                _context.SaveChanges();

                var pedidoProducto = productItems.FirstOrDefault(x => x.IdProducto == item.IdProducto);
                if (pedidoProducto == null)
                {
                    pedidoProducto = new PedidoProducto
                    {
                        IdPedido   = pedido.Id,
                        IdProducto = item.IdProducto,
                        Cantidad   = item.Cantidad,
                        ValorTotal = item.Cantidad * producto.Precio
                    };

                    _context.PedidoProducto.Add(pedidoProducto);
                    _context.SaveChanges();
                }
                else
                {
                    pedidoProducto.Cantidad = item.Cantidad;
                    _context.PedidoProducto.Attach(pedidoProducto);
                    _context.Entry(pedidoProducto).State = EntityState.Modified;
                    _context.SaveChanges();
                }
            }

            return(Ok(result.Entity));
        }