Example #1
0
 /**
  * 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);
 }