Advertisement
Guest User

Untitled

a guest
Jul 14th, 2020
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.42 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Forms;
  4.  
  5. use App\Model\CouponsRepository;
  6. use App\Model\OrderItemsRepository;
  7. use App\Model\Entity\Coupon;
  8. use \Nette\Utils\DateTime;
  9. use Nette\Application\UI;
  10.  
  11.  
  12. class CouponForm extends BaseFormControl
  13. {
  14.  
  15.     /**
  16.      * @var \App\Model\CouponsRepository
  17.      * @inject
  18.      */
  19.     public $couponsRepository;
  20.  
  21.     /** @var \App\Model\Entity\Coupon */
  22.     private $coupon = null;
  23.  
  24.  
  25.     public function __construct(\App\Model\Entity\Coupon $coupon = NULL)
  26.     {
  27.         $this->coupon = $coupon;
  28.     }
  29.  
  30.  
  31.     public function render()
  32.     {
  33.         $template = $this->template;
  34.         $template->coupon = $this->coupon;
  35.  
  36.         parent::render();
  37.     }
  38.  
  39.  
  40.     /**
  41.      * @return UI\Form
  42.      */
  43.     protected function createComponentCoupon($name)
  44.     {
  45.         $form = parent::createComponentForm();
  46.  
  47.         $form->addDateInput('validityTo', 'order.coupon.validityTo')
  48.             ->setDefaultValue($this->coupon ? $this->coupon->validityTo : new \DateTime)
  49.             ->setOption('maxYear', date('Y') + 1)
  50.             ->setRequired();
  51.  
  52.         $form->addSelect('type', 'order.coupon.type.name', CouponsRepository::$type)
  53.             ->setPrompt('order.coupon.type.prompt')
  54.             ->setDefaultValue($this->coupon ? $this->coupon->type : Coupon::TYPE_PERCENTAGE)
  55.             ->setRequired();
  56.  
  57.         $form->addSelect('materialDiscount', 'order.coupon.materialDiscount.name', OrderItemsRepository::$type)
  58.             ->setPrompt('order.coupon.materialDiscount.prompt')
  59.             ->setDefaultValue($this->coupon ? $this->coupon->materialDiscount : null);
  60.  
  61.         $form->addCheckbox('unlimitedCount', 'order.coupon.unlimitedCount')
  62.             ->setDefaultValue($this->coupon ? $this->coupon->unlimitedCount : null);
  63.  
  64.         $form->addText('discount', 'order.coupon.discount')
  65.             ->setDefaultValue($this->coupon ? $this->coupon->discount : null)
  66.             ->setRequired('order.coupon.requiredDiscount');
  67.  
  68.         $form->addText('code', 'order.coupon.code')
  69.             ->setDefaultValue($this->coupon ? $this->coupon->code : null);
  70.  
  71.         if ($this->coupon) {
  72.             $form['code']->setRequired('order.coupon.codeRequired');
  73.         }
  74.  
  75.         $form->addCheckbox('freeDelivery', 'order.coupon.freeDelivery')
  76.             ->setDefaultValue(new DateTime() <=  DateTime::from('31.12.2020') ? true : false);
  77.  
  78.         $form->addSubmit('save', 'forms.button.save');
  79.  
  80.         $form->onError[] = [$this, 'couponFormError'];
  81.         $form->onValidate[] = [$this, 'couponFormValidate'];
  82.         $form->onSuccess[] = [$this, 'couponFormSucceeded'];
  83.  
  84.         return $form;
  85.     }
  86.  
  87.  
  88.     /**
  89.      * @param UI\Form $form
  90.      * @return void
  91.      */
  92.     public function couponFormError(UI\Form $form)
  93.     {
  94.         $this->getPresenter()->postGet('this');
  95.         $this->redrawControl('coupon');
  96.     }
  97.  
  98.  
  99.     /**
  100.      * @param UI\Form $form
  101.      * @return void
  102.      */
  103.     public function couponFormValidate(UI\Form $form, $values)
  104.     {
  105.         $coupon = $this->couponsRepository->getBy(['code' => $values->code]);
  106.  
  107.         if (($this->coupon && $coupon && $this->coupon->id != $coupon->id) || !$this->coupon && $coupon) {
  108.             $form['code']->addError('order.coupon.duplicateCode');
  109.  
  110.             if ($this->isAjax()) {
  111.                 $this->redrawControl('coupon');
  112.             }
  113.         }
  114.     }
  115.  
  116.  
  117.     /**
  118.      * @param UI\Form $form
  119.      * @return void
  120.      */
  121.     public function couponFormSucceeded(UI\Form $form, $values)
  122.     {
  123.  
  124.         if (!$this->coupon) {
  125.             $this->couponsRepository->createCoupon(
  126.                 $values->validityTo,
  127.                 $values->discount,
  128.                 $values->type,
  129.                 $values->code,
  130.                 $values->unlimitedCount,
  131.                 $values->freeDelivery,
  132.                 $values->materialDiscount
  133.             );
  134.         } else {
  135.             $this->couponsRepository->editCoupon($this->coupon, $values);
  136.         }
  137.     }
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement