successPaginated($this->service->sales($request->validated(), $request->user(), $this->tenantId($request)), VoucherSaleResource::class, 'Daftar penjualan voucher berhasil diambil'); } public function storeSale(StoreVoucherSaleRequest $request) { return $this->created(new VoucherSaleResource($this->service->createSale($request->validated(), $request->user(), $this->tenantId($request))), 'Voucher berhasil dibuat'); } public function showSale(Request $request, VoucherSale $sale) { return $this->success(new VoucherSaleResource($this->service->saleDetail($sale, $request->user(), $this->tenantId($request))), 'Detail voucher berhasil diambil'); } public function agents(IndexVoucherRequest $request) { return $this->successPaginated($this->service->agents($request->validated(), $request->user(), $this->tenantId($request)), VoucherAgentResource::class, 'Daftar agen voucher berhasil diambil'); } public function storeAgent(StoreVoucherAgentRequest $request) { return $this->created(new VoucherAgentResource($this->service->saveAgent($request->validated(), $request->user(), $this->tenantId($request))), 'Agen voucher berhasil dibuat'); } public function updateAgent(StoreVoucherAgentRequest $request, VoucherAgent $agent) { return $this->updated(new VoucherAgentResource($this->service->saveAgent($request->validated(), $request->user(), $this->tenantId($request), $agent)), 'Agen voucher berhasil diperbarui'); } public function destroyAgent(Request $request, VoucherAgent $agent) { $this->service->saveAgent([...$agent->toArray(), 'status' => 'inactive'], $request->user(), $this->tenantId($request), $agent); return $this->deleted('Agen voucher berhasil dinonaktifkan'); } public function options(Request $request) { return $this->success($this->service->options((string) $request->route('voucher_scope'), $request->user(), $this->tenantId($request)), 'Opsi voucher berhasil diambil'); } public function loginPage(Request $request) { return $this->success($this->service->loginPage($request->user(), $this->tenantId($request)), 'Setting LoginPage berhasil diambil'); } public function saveLoginPage(SaveVoucherLoginPageRequest $request) { return $this->updated($this->service->saveLoginPage($request->validated(), $request->user(), $this->tenantId($request)), 'Setting LoginPage berhasil disimpan'); } private function tenantId(Request $request): ?int { return $request->attributes->get('tenant_id'); } }