public static function generate($input)
 {
     $res = [];
     $plan = Plan::findOrFail($input['plan_id']);
     $voucher['expires_on'] = self::_makeExpiry($input['validity'], $input['validity_unit']);
     $voucher['created_at'] = time();
     $voucher['plan_name'] = $plan->name;
     $voucher['plan_type'] = $plan->plan_type;
     $voucher['sim_sessions'] = $plan->sim_sessions;
     $voucher['interim_updates'] = $plan->interim_updates;
     $voucher['price'] = $plan->price;
     $voucher['validity'] = $plan->validity;
     $voucher['validity_unit'] = $plan->validity_unit;
     $voucher['policy_type'] = $plan->policy_type;
     if ($plan->plan_type == 1) {
         //if limited
         $limit = $plan->limit->toArray();
         if ($plan->limit->aq_access == 1) {
             // $limit['aq_access'] = 1;
             $aq_policy = Policy::findOrFail($plan->limit->aq_policy);
             $limit['aq_policy'] = mikrotikRateLimit($aq_policy->toArray());
         }
         $voucher_limit = VoucherLimit::create($limit);
         $voucher['limit_id'] = $voucher_limit->id;
     }
     if ($plan->policy_type == 'Policy') {
         $policy = new VoucherPolicy(['bw_policy' => mikrotikRateLimit($plan->policy->toArray())]);
         $policy->save();
     } elseif ($plan->policy_type == 'PolicySchema') {
         $days = ['mo' => 'monday', 'tu' => 'tuesday', 'we' => 'wednesday', 'th' => 'thursday', 'fr' => 'friday', 'sa' => 'saturday', 'su' => 'sunday'];
         foreach ($days as $d => $day) {
             $tpl = $plan->policy->{$day}->toArray();
             $type = ['bw_policy', 'pr_policy', 'sec_policy'];
             foreach ($type as $t) {
                 if (!is_null($tpl[$t])) {
                     $policy = Policy::find($tpl[$t])->toArray();
                     $tpl[$t] = mikrotikRateLimit($policy);
                 }
             }
             $template = VoucherPolicySchemaTemplate::create($tpl);
             $schema[$d] = $template->id;
         }
         $policy = VoucherPolicySchema::create($schema);
     }
     $voucher['policy_id'] = $policy->id;
     for ($i = 0; $i < $input['count']; $i++) {
         $voucher['pin'] = self::generatePin();
         $voucher['expires_on'] = self::_makeExpiry($input['validity'], $input['validity_unit']);
         $v = new Voucher($voucher);
         if (!$v->save()) {
             return FALSE;
         }
         $res[] = $v->pin;
     }
     return $res;
 }
 public function store()
 {
     $voucher = new Voucher();
     $voucher->project_id = Auth::user()->curr_project_id;
     $voucher->name = Input::get('name');
     $voucher->description = Input::get('description');
     $voucher->discount = Input::get('discount');
     $voucher->nominal = Input::get('nominal');
     $voucher->last_valid = Input::get('last_valid');
     $voucher->save();
     Session::flash('message', 'Sukses menambahkan voucher baru');
 }
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Voucher();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Voucher'])) {
         $model->attributes = $_POST['Voucher'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('create', array('model' => $model));
 }
 public function edit(Voucher $voucher)
 {
     $this->voucher = $voucher;
     $rules = array('title' => 'required|max:100', 'img' => 'image|mimes:jpeg,jpg,svg,png,gif', 'starts_at' => 'date_format:"Y-m-d"|required', 'finishes_at' => 'required|date_format:"Y-m-d"');
     $validator = Validator::make(Input::all(), $rules);
     if (!$validator->fails()) {
         $file = Input::file('img');
         $voucher->update(Input::except('img'));
         if (Input::hasFile('img')) {
             $voucher->img = $this->uploadImage($file);
         }
         $this->setCheckboxesAndMailingState();
         $voucher->save();
         return Redirect::to('admin/vouchers')->with('success', 'Voucher updated successfully!');
     }
     return Redirect::back()->withInput()->withErrors($validator);
 }
Exemple #5
0
 public function actionGenerate()
 {
     $model = new Beneficiary('searchForVoucherAssignment');
     $model->unsetAttributes();
     if (isset($_POST) && !empty($_POST)) {
         $subdistribution = Subdistribution::model()->findByPk($_POST['subdistribution_id']);
         if ($subdistribution) {
             // getting Voucher Types assosiated to this distribution.
             $distributionVouchers = $subdistribution->distributionVouchers;
             // getting The 'PENDING' status
             $criteria = new CDbCriteria();
             $criteria->addCondition('name="PENDING"');
             // created Status for vouchers
             $status = VoucherStatus::model()->find($criteria);
             // Choose eligible beneficiaries -- who are not registered in this distribution (Not sub distribution)
             $criteria3 = new CDbCriteria();
             $criteria_string = "t.id in (0";
             if (isset($_POST['beneficiaries']) && !empty($_POST['beneficiaries'])) {
                 foreach ($_POST['beneficiaries'] as $ben_id) {
                     $criteria_string = $criteria_string . ", " . $ben_id;
                 }
             }
             $criteria_string = $criteria_string . ")";
             $criteria3->addCondition($criteria_string);
             $beneficiaries = Beneficiary::model()->findAll($criteria3);
             $characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
             $random_string_length = 10;
             foreach ($beneficiaries as $beneficiary) {
                 // for each beneficiary
                 foreach ($distributionVouchers as $distributionVoucher) {
                     // for each voucher type
                     //try to find an existing voucher assosiated to this beneficiary
                     $criteria4 = new CDbCriteria();
                     $criteria4->condition = "ben_id = " . $beneficiary->id . " and distribution_voucher_id = " . $distributionVoucher->id;
                     $exist = Voucher::model()->findAll($criteria4);
                     // if no voucher found :
                     if (count($exist) == 0) {
                         $voucher = new Voucher();
                         // create voucher
                         $string = '';
                         $exist = "";
                         //Generate random number
                         do {
                             for ($i = 0; $i < $random_string_length; $i++) {
                                 $string .= $characters[rand(0, strlen($characters) - 1)];
                             }
                             $exist = Voucher::model()->exists('code =:code', array(":code" => $string));
                         } while ($exist == "1");
                         $voucher->code = $string;
                         $voucher->distribution_voucher_id = $distributionVoucher->id;
                         $voucher->ben_id = $beneficiary->id;
                         $voucher->vendor = NULL;
                         $voucher->status_id = $status->id;
                         $voucher->create_date = new CDbExpression('NOW()');
                         $voucher->insert();
                         $voucher->save();
                     }
                 }
             }
         }
     } else {
         if (isset($_GET['Beneficiary'])) {
             $model->setAttributes($_GET['Beneficiary']);
         }
         $this->render('generate', array('model' => $model));
         //$this->render('generate');
     }
 }