示例#1
0
        public int ProcesarVenta(List <CarroItemDTO> p_carroItems, ClienteDTO p_cliente)
        {
            //este no es la mejor manera de hacerlo, deberia ir en la capa de servicio la logica...
            //ver como implementar patron unitOfWork.
            int result = 0;

            using (IDbContextTransaction transaction = this._applicationContext.Database.BeginTransaction()) {
                try
                {
                    decimal totalFinal = 0;

                    //se crea entidad venta.
                    Venta objVenta = new Venta
                    {
                        FechaVenta         = DateTime.Now,
                        TotalFinal         = p_carroItems.Sum(x => x.Precio * x.CantidadUnidades),
                        ClienteInformacion = $"{p_cliente.NombreCompleto};{p_cliente.Domicilio};{p_cliente.Localidad};{p_cliente.CodiPostal};{p_cliente.Telefono}",
                    };

                    //se hace registro de la venta
                    this._applicationContext.Set <Venta>().Add(objVenta);
                    result = this._applicationContext.SaveChanges();


                    //se generan objetos del tipo detalleVenta
                    IEnumerable <DetalleVenta> objDetalleVenta = p_carroItems.Select(x => new DetalleVenta
                    {
                        Articulo         = this._applicationContext.Set <Articulo>().Where(z => z.Id == x.Id).FirstOrDefault(),
                        CantidadUnidades = x.CantidadUnidades,
                        Venta            = objVenta,
                    });


                    //se hace registro de los detalles de la venta
                    this._applicationContext.Set <DetalleVenta>().AddRange(objDetalleVenta);
                    result = this._applicationContext.SaveChanges();

                    //se descuenta el estock de los articulos del carro de compras
                    foreach (var item in p_carroItems)
                    {
                        StockArticulo StockArticulo = this._applicationContext.Set <StockArticulo>().Include(x => x.Articulo).Where(x => x.Articulo.Id == item.Id).FirstOrDefault();
                        StockArticulo.Cantidad -= (decimal)item.CantidadUnidades;
                        this._applicationContext.Set <StockArticulo>().Update(StockArticulo);
                        result = this._applicationContext.SaveChanges();
                    }

                    transaction.Commit();

                    return(objVenta.Id);
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw new Exception(ex.ToString());
                }
            }


            return(0);
        }
示例#2
0
        public int EliminarStockArticulo(int p_id)
        {
            StockArticulo objEntity = this._stockArticuloRepository.GetById(p_id);

            int result = this._stockArticuloRepository.Delete(objEntity);

            return(result);
        }
示例#3
0
        public int ModificarStockArticulo(StockArticuloDTO p_stockArticuloDTO)
        {
            StockArticulo objEntity = this._stockArticuloRepository.GetById(p_stockArticuloDTO.Id);

            objEntity.Articulo = this._articuloRepository.GetById(p_stockArticuloDTO.ArticuloId);
            objEntity.Cantidad = p_stockArticuloDTO.Cantidad;

            int result = this._stockArticuloRepository.Update(objEntity);

            return(result);
        }
示例#4
0
        public StockArticuloDTO getStockArticulo(int p_id)
        {
            StockArticulo    objEntity = this._stockArticuloRepository.GetById(p_id);
            StockArticuloDTO objResult = new StockArticuloDTO
            {
                Id         = objEntity.Id,
                ArticuloId = objEntity.Articulo.Id,

                ArticuloDescripcion = $"{objEntity.Articulo.CodigoBarras} - " +
                                      $"{objEntity.Articulo.Modelo.Descripcion} - " +
                                      $"{objEntity.Articulo.Color.Descripcion} - " +
                                      $"{objEntity.Articulo.Marca.Descripcion} - " +
                                      $"{objEntity.Articulo.Categoria.Descripcion}",

                Cantidad = objEntity.Cantidad
            };

            return(objResult);
        }