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; } }