public static function online($user_id, $plan_id)
 {
     $input = ['plan_id' => $plan_id, 'validity' => 1, 'validity_unit' => 'Day', 'count' => 1];
     try {
         DB::transaction(function () use($input, $user_id) {
             $pins = Voucher::generate($input);
             return self::now(current($pins), $user_id, 'online');
         });
     } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
         Notification::error($e->getMessage());
     }
 }
 public function postGenerate()
 {
     $input = Input::all();
     //validate input
     $rules = Config::get('validations.generate_vouchers');
     $v = Validator::make($input, $rules);
     $v->setAttributeNames(Config::get('attributes.generate_vouchers'));
     if ($v->fails()) {
         return Redirect::back()->withInput()->withErrors($v);
     }
     try {
         DB::transaction(function () use($input) {
             if (!Voucher::generate($input)) {
                 throw new Exception("Failed to generate vouchers.");
             }
         });
         $this->notifySuccess("Generated {$input['count']} vouchers valid for {$input['validity']} {$input['validity_unit']}.");
         return Redirect::route(self::HOME);
     } catch (Exception $e) {
         $this->notifyError($e->getMessage());
         return Redirect::route(self::HOME);
     }
 }