/** * Get coupon. * * @return AB_Coupon|bool */ public function getCoupon() { if ($this->coupon === null) { $coupon = new AB_Coupon(); $coupon->loadBy(array('code' => $this->get('coupon'))); if ($coupon->isLoaded() && $coupon->get('used') < $coupon->get('usage_limit')) { $this->coupon = $coupon; } else { $this->coupon = false; } } return $this->coupon; }
/** * Apply coupon */ public function executeApplyCoupon() { if (!get_option('ab_settings_coupons')) { exit(0); } $response = null; $userData = new AB_UserBookingData($this->getParameter('form_id')); if ($userData->load()) { $coupon_code = $this->getParameter('coupon'); $price = $userData->getServicePrice(); $coupon = new AB_Coupon(); $coupon->loadBy(array('code' => $coupon_code)); if ($coupon->isLoaded() && $coupon->get('used') < $coupon->get('usage_limit')) { $userData->saveData(array('coupon' => $coupon_code)); $price = $coupon->apply($price); $response = array('status' => 'success', 'state' => 'applied', 'text' => $this->_prepareInfoText(get_option('ab_appearance_text_info_coupon'), $userData, $price), 'price' => $price); } else { $userData->saveData(array('coupon' => null)); $response = array('status' => 'success', 'state' => 'invalid', 'error' => __('This coupon code is invalid or has been used', 'bookly'), 'text' => $this->_prepareInfoText(get_option('ab_appearance_text_info_coupon'), $userData, $price)); } } else { $response = array('status' => 'error', 'error' => __('Session error.', 'bookly')); } // Output JSON response. wp_send_json($response); }