'Fetch Voucher', 'message' => 'You have successfully fetched a voucher' ]; } /** @var ValidatesVoucherifyVoucher */ private $validatesVoucherifyVoucher; /** * ValidateVoucherLogic constructor. * @param ValidatesVoucherifyVoucher $validatesVoucherifyVoucher */ public function __construct(ValidatesVoucherifyVoucher $validatesVoucherifyVoucher) { $this->validatesVoucherifyVoucher = $validatesVoucherifyVoucher; } /** * @param Request $request * @return JsonResponse * @throws MalformedRequestException */ public function logic(Request $request) : JsonResponse { $employeeWhoOwnsTheVoucher = null; $booking = Booking::find($request->input('itemId')); $employees = $booking->company->employees()->get(); if(count($employees) > 1){ foreach($employees as $singleEmployee){ $userRewards = $singleEmployee->rewards; foreach($userRewards as $userReward){ if ($userReward->voucher && $userReward->voucher->code === $request->input('voucherCode')) { Log::info('2. Company with multiple employees: ' . json_encode($singleEmployee) . ", voucher: " . $request->input('voucherCode')); $employeeWhoOwnsTheVoucher = $singleEmployee; } } } } if(!$employeeWhoOwnsTheVoucher){ $employeeWhoOwnsTheVoucher = $booking->company->employees()->first(); } $amount = $this->floatvalue($request->input('amount')); $validateVoucherifyVoucherObject = new ValidateVoucherifyVoucherObject($booking->company_id, $request->input('voucherCode'), $amount, $employeeWhoOwnsTheVoucher); $result = $this->validatesVoucherifyVoucher->execute($validateVoucherifyVoucherObject); return $this->response(['data' => $result]); } private function floatvalue($val){ $val = str_replace(",",".",$val); $val = preg_replace('/\.(?=.*\.)/', '', $val); return floatval($val); } }