I have a CustomerHasVoucherException class but the $e->getMessage() in controller shows empty error message.
CustomerHasVoucherException :
<?php
namespace Modules\Customer\Exceptions;
use Exception;
class CustomerHasVoucherException extends Exception
{
public function report()
{
return false;
}
public function render($request, $exception)
{
$request->headers->set('Accept', 'application/json');
return response()->json((['message' => 'customer already has a voucher!']), 406);
}
}
Controller Method:
public function reserveVoucher(CustomerRepository $customerRepository, CampaignRepository $campaignRepository, Request $request, $customer_id, $campaign_code)
{
// dd($campaign_code, $customer_id);
try {
$customer = $customerRepository->checkEligibility($customer_id);
$campaignRepository->beginTransaction();
$voucher = $campaignRepository->reserveVoucher($campaign_code, $customer);
$campaignRepository->commitTransaction();
return response()->json(
['message' => "Your voucher is reserved! Procced to next step within " . \Config::get('voucher.campaign.voucher.max_reservation_time') . " minutes."],
200
);
} catch (CustomerHasVoucherException $e) {
report($e);
return response()->json(['error' => $e->getMessage()
]);
} catch (\Throwable $th) {
report($th);
return response()->json(['error' => $th->getMessage()]);
}
}
Resonse:
{
"error": ""
}