107 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers;
 | 
						|
 | 
						|
use App\GrupoDeCompra;
 | 
						|
use App\Helpers\CanastaHelper;
 | 
						|
use App\Helpers\CsvHelper;
 | 
						|
use App\Http\Resources\GrupoDeCompraResource;
 | 
						|
use App\Producto;
 | 
						|
use Illuminate\Http\JsonResponse;
 | 
						|
use Illuminate\Http\Request;
 | 
						|
use League\Csv\Exception;
 | 
						|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
 | 
						|
 | 
						|
class ComisionesController
 | 
						|
{
 | 
						|
    const CANASTAS_PATH = 'csv/canastas/';
 | 
						|
    const BARRIO = "Barrio";
 | 
						|
    const SALDO = "Saldo";
 | 
						|
 | 
						|
    public function show()
 | 
						|
    {
 | 
						|
        return view('auth/login');
 | 
						|
    }
 | 
						|
 | 
						|
    public function descargarPedidos()
 | 
						|
    {
 | 
						|
        try {
 | 
						|
            Producto::planillaTotales();
 | 
						|
        } catch (Exception $e) {
 | 
						|
            return response()->json(['message' => $e->getMessage()], 500);
 | 
						|
        }
 | 
						|
        $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);
 | 
						|
        try {
 | 
						|
            CanastaHelper::cargarCanasta(storage_path(self::CANASTAS_PATH . $nombre));
 | 
						|
        } catch (Exception $e) {
 | 
						|
            return response()->json(['message' => $e->getMessage()], 500);
 | 
						|
        }
 | 
						|
 | 
						|
        return response()->json([
 | 
						|
            'message' => 'Canasta cargada exitosamente',
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function descargarCanastaEjemplo(): BinaryFileResponse
 | 
						|
    {
 | 
						|
        $file = resource_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();
 | 
						|
 | 
						|
        try {
 | 
						|
            $records = CsvHelper::getRecords($file, "No se pudo leer el archivo.");
 | 
						|
        } catch (Exception $e) {
 | 
						|
            return response()->json(['message' => $e->getMessage()], 500);
 | 
						|
        }
 | 
						|
 | 
						|
        foreach ($records as $record) {
 | 
						|
            $barrio = $record[self::BARRIO];
 | 
						|
            $saldo = $record[self::SALDO];
 | 
						|
            GrupoDeCompra::where('nombre', $barrio)
 | 
						|
                ->update(['saldo' => $saldo]);
 | 
						|
        }
 | 
						|
 | 
						|
        return response()->json(GrupoDeCompraResource::collection(GrupoDeCompra::all()));
 | 
						|
    }
 | 
						|
}
 |