public function rules()
 {
     return [[['HardID'], function ($attribute) {
     }], ['dateRange', 'required'], ['dateRange', function ($attribute) {
         list($this->dateFrom, $this->dateTo) = preg_split('/\\s+-\\s+/', $this->dateRange);
         $formatter = Yii::$app->formatter;
         $this->dateFrom = $formatter->asDatetime($this->dateFrom, 'yyyy-MM-dd HH:mm:ss');
         $this->dateTo = $formatter->asDatetime($this->dateTo, 'yyyy-MM-dd HH:mm:ss');
     }], [['dateFrom', 'dateTo'], 'safe'], ['PersonID', 'exist', 'targetClass' => PersonsRecord::className(), 'targetAttribute' => 'ID'], ['allowCancelled', 'boolean']];
 }
 public function actionIndex()
 {
     $room = RoomRecord::findOne(['1' => 1]);
     if ($room === null) {
         $room = new RoomRecord();
         $room->Name = $this->prompt('Введите название зала', ['required' => true, 'default' => 'Local', 'validator' => function ($input, $error) use($room) {
             $room->Name = $input;
             if (!$room->validate()) {
                 $error = implode("\n", array_keys($room->firstErrors));
             }
             return true;
         }]);
         if (!$room->save()) {
             echo implode("\n", array_values($room->firstErrors));
             echo "Ошибка записи, Зал не сохранен\n";
             return 100;
         } else {
             echo "Ok Зал создан ({$room->ID})\n";
         }
     }
     /** @var PersonsRecord $person */
     $person = \Yii::createObject(PersonsRecord::className());
     $person->setScenario('create');
     $person->GroupID = 1;
     $person->RoomID = $room->ID;
     $this->prompt('Введите логин пользователя root:', ['required' => true, 'default' => 'root', 'validator' => function ($input, $error) use($person) {
         $person->Login = $input;
         if (!$person->validate()) {
             //                    $error = implode("\n", array_keys($person->firstErrors));
             return false;
         }
         return true;
     }]);
     $person->Password = $this->prompt('Введите пароль для входа в интерфейс', ['required' => true, 'default' => null, 'validator' => function ($input, $error) use($person) {
         $person->Password = $input;
         if (!$person->validate()) {
             //                    $error = implode("\n", array_keys($person->firstErrors));
             return false;
         }
         return true;
     }]);
     if (!$person->create()) {
         echo implode("\n", array_values($person->firstErrors));
         echo "Ошибка записи. Пользователь не сохранен\n";
     } else {
         echo "Ok выход \n";
     }
 }
 /**
  * Step 3
  * @param $hardId
  * @return string|\yii\web\Response
  * @throws HttpException
  */
 public function actionCreateAccount($hardId, $groupId = '')
 {
     /** @var PersonsGroupRecord $group */
     if ($groupId !== '') {
         $group = PersonsGroupRecord::findOne($groupId);
     } else {
         $group = PersonsGroupRecord::getDefault();
     }
     /** @var PersonsRecord $user */
     $user = Yii::createObject(['class' => PersonsRecord::className(), 'scenario' => 'create']);
     /** @var CardForm $card */
     $card = \Yii::createObject(CardForm::className());
     $card->HardID = $hardId;
     if (!$card->isExist()) {
         $card = $card->create();
     } else {
         $card = $card->find();
     }
     if (!$card->ID) {
         throw new HttpException(400, 'Не удалось сохранить номер карты');
     }
     $user->CardID = $card->id;
     $user->GroupID = $group->id;
     $user->ServiceCard = $group->IsService;
     $this->performAjaxValidation($user);
     if ($user->load(Yii::$app->request->post()) && $user->create()) {
         /** @var FinanceRecord $finance */
         $finance = Yii::createObject(FinanceRecord::className());
         $finance->ClassID = 2;
         //Регистраци карты
         $finance->ContractorID = $user->ID;
         $finance->save();
         Yii::$app->getSession()->setFlash('success', Yii::t('user', 'User has been created'));
         return $this->redirect(['/accounts/charge-balance', 'id' => $user->account->id]);
     }
     return $this->render('createAccount', ['user' => $user]);
 }
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getPerson()
 {
     return $this->hasOne(PersonsRecord::className(), ['ID' => 'PersonID']);
 }
 public function actionCreateAccount($hardId, $groupId = '')
 {
     /** @var PersonsGroupRecord $group */
     if ($groupId !== '') {
         $group = PersonsGroupRecord::findOne($groupId);
     } else {
         $group = PersonsGroupRecord::getDefault();
     }
     /** @var PersonsRecord $user */
     $user = Yii::$app->user->identity;
     if ($group->ID < $user->GroupID) {
         throw new ForbiddenHttpException('Вы не можете зарегистрировать карту более высокого уровня');
     }
     /** @var PersonsRecord $user */
     $user = Yii::createObject(['class' => PersonsRecord::className(), 'scenario' => 'create']);
     $user->GroupID = $group->id;
     $user->ServiceCard = $group->IsService;
     //from parent controller (not my behavior)
     $this->performAjaxValidation($user);
     //data already loaded with ajax validation
     if ($user->load(Yii::$app->request->post()) && $user->validate()) {
         $card = null;
         /** @var CardForm $card */
         $cardForm = \Yii::createObject(CardForm::className());
         $cardForm->HardID = $hardId;
         if (!$cardForm->isExist()) {
             $card = $cardForm->create();
         } else {
             if ($cardForm->isUsed()) {
                 throw new HttpException(400, 'Данная карта уже зарегистрирована в системе');
             } else {
                 $card = $cardForm->find();
             }
         }
         if (!$card->ID) {
             throw new HttpException(400, 'Не удалось зарегистрировать карту');
         }
         $user->CardID = $card->id;
         if ($user->create()) {
             /** @var FinanceRecord $finance */
             $finance = Yii::createObject(FinanceRecord::className());
             $finance->ClassID = 2;
             //Регистраци карты
             $finance->ContractorID = $user->ID;
             $finance->save();
             //Yii::$app->getSession()->setFlash('success', Yii::t('user', 'User has been created'));
             return $this->redirect(['/person/children', 'personId' => $user->id]);
         }
     }
     return $this->render('createAccount', ['user' => $user]);
 }
 /**
  * @return PersonsRecord
  */
 public function getCancelAccount()
 {
     return $this->hasOne(PersonsRecord::className(), ['ID' => 'CancelAccountID']);
 }