voucherEventRepository = $voucherEventRepository; } /** * Redeem a voucher event * * @param int $voucherEvent * @param Request $request * @return JsonResponse */ public function redeem($voucherEvent, Request $request): JsonResponse { try { // Get the authenticated user $user = auth()->user(); if (!$user) { return response()->json([ 'success' => false, 'message' => 'User not authenticated' ], 401); } // Call the repository's redeem method $result = $this->voucherEventRepository->redeem($voucherEvent, $user); if ($result) { return response()->json([ 'success' => true, 'message' => $result['message'] ?? 'Voucher redeemed successfully!', 'data' => $result['data'] ?? null ]); } else { return response()->json([ 'success' => false, 'message' => $result['message'] ?? 'Failed to redeem voucher' ], 400); } } catch (\Exception $e) { Log::error($e); return response()->json([ 'success' => false, 'message' => $e->getMessage() ], 500); } } }