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); }
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'); } }