forked from nathalie/pedi2
106 lines
2.9 KiB
PHP
106 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\GrupoDeCompra;
|
|
use App\Helpers\CanastaHelper;
|
|
use App\Producto;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
|
use League\Csv\Reader;
|
|
use DatabaseSeeder;
|
|
|
|
class ComisionesController
|
|
{
|
|
const CANASTAS_PATH = 'csv/canastas/';
|
|
const BARRIO = "Barrio";
|
|
const SALDO = "Saldo";
|
|
|
|
public function show()
|
|
{
|
|
return view('auth/login');
|
|
}
|
|
|
|
public function descargarPedidos(): BinaryFileResponse
|
|
{
|
|
Producto::planillaTotales();
|
|
$pattern = storage_path('csv/exports/pedidos-por-barrio-*.csv');
|
|
$files = glob($pattern);
|
|
|
|
usort($files, function ($a, $b) {
|
|
return filemtime($b) <=> filemtime($a);
|
|
});
|
|
|
|
return response()->download($files[0]);
|
|
}
|
|
|
|
public function descargarNotas(): BinaryFileResponse
|
|
{
|
|
Producto::planillaNotas();
|
|
$pattern = storage_path('csv/exports/notas-por-barrio-*.csv');
|
|
$files = glob($pattern);
|
|
|
|
usort($files, function ($a, $b) {
|
|
return filemtime($b) <=> filemtime($a);
|
|
});
|
|
|
|
return response()->download($files[0]);
|
|
}
|
|
|
|
public function pdf() {
|
|
GrupoDeCompra::exportarPedidosBarrialesAPdf();
|
|
}
|
|
|
|
public function cargarCanasta(Request $request): JsonResponse
|
|
{
|
|
$request->validate([
|
|
'data' => 'required|file|mimes:csv,txt|max:2048',
|
|
]);
|
|
|
|
$nombre = CanastaHelper::guardarCanasta($request->file('data'), self::CANASTAS_PATH);
|
|
CanastaHelper::cargarCanasta(self::CANASTAS_PATH . $nombre);
|
|
|
|
return response()->json([
|
|
'message' => 'Canasta cargada exitosamente',
|
|
]);
|
|
}
|
|
|
|
public function descargarCanastaEjemplo(): BinaryFileResponse
|
|
{
|
|
$file = storage_path('csv/productos.csv');
|
|
return response()->download($file);
|
|
}
|
|
|
|
public function cargarSaldos(Request $request): JsonResponse
|
|
{
|
|
$request->validate([
|
|
'data' => 'required|file|mimes:csv,txt|max:2048',
|
|
]);
|
|
|
|
$file = $request->file('data')->getPathname();
|
|
$csv = Reader::createFromPath($file, 'r');
|
|
try {
|
|
$csv->setDelimiter("|");
|
|
$csv->setEnclosure("'");
|
|
$csv->setHeaderOffset(0);
|
|
$records = $csv->getRecords();
|
|
} catch (InvalidArgument|Exception $e) {
|
|
Log::error($e->getMessage());
|
|
return response()->json([
|
|
'message' => 'No se pudo leer el csv',
|
|
]);
|
|
}
|
|
|
|
foreach ($records as $record) {
|
|
$barrio = $record[self::BARRIO];
|
|
$saldo = $record[self::SALDO];
|
|
GrupoDeCompra::where('nombre', $barrio)
|
|
->update(['saldo' => $saldo]);
|
|
}
|
|
|
|
return response()->json([
|
|
'message' => 'Saldos cargados exitosamente',
|
|
]);
|
|
}
|
|
}
|