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); } } }