Kasir/app/Http/Controllers/LaporanController.php
2025-09-09 11:59:00 +07:00

88 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Services\LaporanService;
use App\Http\Requests\DetailLaporanRequest;
use App\Http\Requests\ExportLaporanRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class LaporanController extends Controller
{
private LaporanService $laporanService;
public function __construct(LaporanService $laporanService)
{
$this->laporanService = $laporanService;
}
/**
* Endpoint untuk ringkasan laporan dengan caching
*/
public function ringkasan(Request $request)
{
try {
$filter = $request->query('filter', 'bulan');
$page = (int) $request->query('page', 1);
// Validasi filter
if (!in_array($filter, ['hari', 'bulan'])) {
return response()->json(['error' => 'Filter harus "hari" atau "bulan"'], 400);
}
$data = $this->laporanService->getRingkasan($filter, $page);
return response()->json($data);
} catch (\Exception $e) {
Log::error('Error in ringkasan method: ' . $e->getMessage());
return response()->json(['error' => 'Terjadi kesalahan saat mengambil data'], 500);
}
}
/**
* Detail laporan per produk
*/
public function detailPerProduk(DetailLaporanRequest $request)
{
try {
$data = $this->laporanService->getDetailPerProduk($request->validated());
return response()->json($data);
} catch (\Exception $e) {
Log::error('Error in detailPerProduk method: ' . $e->getMessage());
return response()->json(['error' => 'Terjadi kesalahan saat mengambil data produk'], 500);
}
}
/**
* Detail laporan per nampan
*/
public function detailPerNampan(DetailLaporanRequest $request)
{
try {
$data = $this->laporanService->getDetailPerNampan($request->validated());
return response()->json($data);
} catch (\Exception $e) {
Log::error('Error in detailPerNampan method: ' . $e->getMessage());
return response()->json(['error' => 'Terjadi kesalahan saat mengambil data nampan'], 500);
}
}
/**
* Export laporan ringkasan
*/
public function exportRingkasan(ExportLaporanRequest $request)
{
try {
return $this->laporanService->exportRingkasan($request->validated());
} catch (\Exception $e) {
Log::error('Error in exportRingkasan method: ' . $e->getMessage());
return response()->json(['error' => 'Terjadi kesalahan saat export data'], 500);
}
}
}