From 9c3b328de0e8368093cf9db77769fae213ef72e5 Mon Sep 17 00:00:00 2001 From: ale Date: Fri, 9 May 2025 17:08:04 -0300 Subject: [PATCH] Usando CsvHelper en vez de League\Csv\Writer --- app/GrupoDeCompra.php | 19 ++++--------------- app/Helpers/CsvHelper.php | 14 ++++++++++++++ app/Producto.php | 23 +++++------------------ 3 files changed, 23 insertions(+), 33 deletions(-) diff --git a/app/GrupoDeCompra.php b/app/GrupoDeCompra.php index 97ae5b6..76ea9fa 100644 --- a/app/GrupoDeCompra.php +++ b/app/GrupoDeCompra.php @@ -2,12 +2,11 @@ namespace App; +use App\Helpers\CsvHelper; use App\Helpers\TransporteHelper; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Facades\DB; -use League\Csv\CannotInsertRecord; -use League\Csv\Writer; use Mpdf\Mpdf; class GrupoDeCompra extends Model @@ -146,12 +145,8 @@ class GrupoDeCompra extends Model public function exportarPedidoEnCSV() { $records = $this->generarColumnaCantidades(); - try { - $writer = Writer::createFromPath(resource_path('csv/exports/' . $this->nombre . '.csv'), 'w'); - $writer->insertAll($records); - } catch (CannotInsertRecord $e) { - var_export($e->getRecords()); - } + + CsvHelper::generarCsv('csv/exports/' . $this->nombre . '.csv', $records); } public function generarColumnaCantidades() @@ -211,13 +206,7 @@ class GrupoDeCompra extends Model } array_splice($records, 0, 0, array($nucleos)); - // Guardar en un archivo .csv - try { - $writer = Writer::createFromPath(resource_path('csv/exports/' . $this->nombre . '-completo.csv'), 'w'); - $writer->insertAll($records); - } catch (CannotInsertRecord $e) { - var_export($e->getRecords()); - } + CsvHelper::generarCsv('csv/exports/' . $this->nombre . '-completo.csv', $records); } public function agregarCantidad($pedido, $id, array $records, $fila, int $i): array diff --git a/app/Helpers/CsvHelper.php b/app/Helpers/CsvHelper.php index ba7d246..96bce8f 100644 --- a/app/Helpers/CsvHelper.php +++ b/app/Helpers/CsvHelper.php @@ -4,9 +4,11 @@ namespace App\Helpers; use Illuminate\Support\Facades\Log; use Iterator; +use League\Csv\CannotInsertRecord; use League\Csv\Exception; use League\Csv\InvalidArgument; use League\Csv\Reader; +use League\Csv\Writer; class CsvHelper { @@ -23,4 +25,16 @@ class CsvHelper } } + public static function generarCsv($filePath, $contenido, $headers = null): void + { + try { + $writer = Writer::createFromPath(resource_path($filePath), 'w'); + if ($headers) { + $writer->insertOne($headers); + } + $writer->insertAll($contenido); + } catch (CannotInsertRecord $e) { + var_export($e->getRecords()); + } + } } diff --git a/app/Producto.php b/app/Producto.php index f467037..96065c2 100644 --- a/app/Producto.php +++ b/app/Producto.php @@ -3,14 +3,13 @@ namespace App; use App\Filtros\FiltroDeProducto; +use App\Helpers\CsvHelper; use App\Helpers\TransporteHelper; use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; use Illuminate\Support\Str; -use League\Csv\CannotInsertRecord; -use League\Csv\Writer; class Producto extends Model { @@ -116,16 +115,10 @@ class Producto extends Model $planilla[$filaTransporte][] = $cantidad; } - try { - $writer = Writer::createFromPath(resource_path('csv/exports/pedidos-por-barrio.csv'), 'w'); - $writer->insertOne($headers); - $writer->insertAll($planilla); - } catch (CannotInsertRecord $e) { - var_export($e->getRecords()); - } + CsvHelper::generarCsv('csv/exports/pedidos-por-barrio.csv', $planilla, $headers); } - public static function notasPorBarrio(): \Illuminate\Support\Collection + public static function notasPorBarrio(): Collection { return DB::table('productos') ->join('producto_subpedido', 'productos.id', '=', 'producto_subpedido.producto_id') @@ -159,12 +152,6 @@ class Producto extends Model $planilla[] = $fila; } - try { - $writer = Writer::createFromPath(resource_path('csv/exports/notas-por-barrio.csv'), 'w'); - $writer->insertOne($headers); - $writer->insertAll($planilla); - } catch (CannotInsertRecord $e) { - var_export($e->getRecords()); - } + CsvHelper::generarCsv('csv/exports/notas-por-barrio.csv', $planilla, $headers); } }