Exemplo n.º 1
0
        public async Task <FacturacionCompraDTO> Find(int id)
        {
            try
            {
                FacturacionCompraDTO facturacionCompra = await _compraRepository.FindByCondition(x => x.IdCompra == id)
                                                         .Include(cliente => cliente.IdClienteNavigation).ThenInclude(tipoDoc => tipoDoc.IdTipoDocumentoNavigation)
                                                         .Include(compra => compra.CompraProductos).ThenInclude(producto => producto.IdProductoNavigation)
                                                         .Select(compra => new FacturacionCompraDTO
                {
                    IdCompra          = compra.IdCompra,
                    CantidadProductos = compra.CompraProductos.Sum(p => p.Cantidad),
                    ValorCompra       = compra.CompraProductos.Sum(p => p.IdProductoNavigation.Precio),
                    FechaCompra       = compra.Fecha.ToString("dd MMMM yyyy"),
                    Cliente           = new ClienteDTO()
                    {
                        IdCliente       = compra.IdCliente,
                        Apellido        = compra.IdClienteNavigation.Apellido,
                        Nombre          = compra.IdClienteNavigation.Nombre,
                        Documento       = compra.IdClienteNavigation.Documento,
                        Edad            = DateTime.Now.Year - compra.IdClienteNavigation.FechaNacimiento.Year,
                        IdTipoDocumento = compra.IdClienteNavigation.IdTipoDocumento,
                        TipoDocumento   = compra.IdClienteNavigation.IdTipoDocumentoNavigation.Nombre
                    },
                    Productos = compra.CompraProductos.Select(p => new ProductoDTO
                    {
                        IdProducto  = p.IdProducto,
                        Nombre      = p.IdProductoNavigation.Nombre,
                        Descripcion = p.IdProductoNavigation.Descripcion,
                        EstaActivo  = p.IdProductoNavigation.EstaActivo.Value,
                        Precio      = p.IdProductoNavigation.Precio,
                        Cantidad    = p.Cantidad
                    }).ToList()
                }).FirstOrDefaultAsync();


                return(facturacionCompra);
            }
            catch (Exception e)
            {
                throw e;
            }
        }