88 lines
2.6 KiB
PHP
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);
|
|
}
|
|
}
|
|
}
|