예제 #1
1
 private static function makePolzovatel($fiz_lico_id)
 {
     $fiz_lico = FizLico::find()->where(['id' => $fiz_lico_id])->one();
     //  (new FizLicoRepo)->select(['id' => $fiz_lico_id]);
     if (!$fiz_lico) {
         throw new UserException("Физ.лицо с id={$fiz_lico_id} не найдено");
     }
     //$fiz_lico = $fiz_lica[0];
     $login = self::makeLogin($fiz_lico->familiya, $fiz_lico->imya, $fiz_lico->otchestvo);
     $parol = strtolower(\Yii::$app->security->generateRandomString(4));
     $klyuch_autentifikacii = \Yii::$app->security->generateRandomString(255);
     $roli = [Rol::RUKOVODITEL_KURSOV];
     $polzovatel_config = ['fizLico' => $fiz_lico, 'login' => $login, 'parol' => $parol, 'klyuchAutentifikacii' => $klyuch_autentifikacii, 'roli' => $roli, 'aktiven' => true];
     $polzovatel = new Polzovatel();
     // new PolzovatelEntity($polzovatel_config);
     $polzovatel->fizLico = $fiz_lico_id;
     $polzovatel->login = $login;
     $polzovatel->parol = $parol;
     $polzovatel->klyuchAutentifikacii = $klyuch_autentifikacii;
     $polzovatel->roli = $roli;
     $polzovatel->aktiven = true;
     if (!$polzovatel->save()) {
         throw new UserException("Ошибка сохранения пользователя {$polzovatel->login}.");
     }
     return [$fiz_lico->familiya, $fiz_lico->imya, $fiz_lico->otchestvo, $login, $parol];
 }
예제 #2
0
 private function registerImpl()
 {
     if (!$this->validate()) {
         return false;
     }
     $fiz_lico = new FizLico(['familiya' => $this->familiya, 'imya' => $this->imya, 'otchestvo' => $this->otchestvo, 'email' => $this->email, 'formattedTelefon' => $this->telefon]);
     $polzovatel = new Polzovatel(['login' => $this->login, 'parol' => $this->parol, 'aktiven' => true, 'roliAsArray' => $this->roli]);
     $polzovatel->generateKlyuchAutentifikacii();
     $polzovatel->generateKodPodtverzhdeniyaEmail();
     list($organizaciya, $organizaciya_to_delete) = DirectoryHelper::getFromCombo(Organizaciya::className(), $this->rabotaOrgId, $this->rabotaOrgNazvanie, ['vedomstvo' => $this->rabotaOrgVedomstvo, 'adres_adresnyj_objekt' => $this->rabotaOrgAdres]);
     $rabota_fiz_lica = new RabotaFizLica(['formattedTelefon' => $this->rabotaTelefon]);
     list($dolzhnost, $dolzhnost_to_delete) = DirectoryHelper::getFromCombo(Dolzhnost::className(), $this->rabotaDolzhnostId, $this->rabotaDolzhnostNazvanie, null);
     $dolzhnost_fiz_lica_na_rabote = new DolzhnostFizLicaNaRabote(['etapObrazovaniyaAsEnum' => $this->rabotaEtapObrazovaniya]);
     $message = Yii::$app->mailer->compose('kadry/registraciya.php', ['model' => $this, 'polzovatel' => $polzovatel])->setTo($fiz_lico->email);
     if (!$message->send()) {
         $this->addError('email', 'Не удалось отправить E-Mail.');
         return false;
     }
     $transaction = Yii::$app->db->beginTransaction();
     try {
         $fiz_lico->save(false);
         $polzovatel->link('fizLicoRel', $fiz_lico);
         $polzovatel->save(false);
         if ($organizaciya) {
             $organizaciya->save(false);
         }
         $rabota_fiz_lica->fizLico = $fiz_lico->id;
         $rabota_fiz_lica->link('organizaciyaRel', $organizaciya);
         $rabota_fiz_lica->save(false);
         if ($dolzhnost) {
             $dolzhnost->save(false);
         }
         $dolzhnost_fiz_lica_na_rabote->dolzhnost = $dolzhnost->id;
         $dolzhnost_fiz_lica_na_rabote->link('rabotaFizLicaRel', $rabota_fiz_lica);
         $dolzhnost_fiz_lica_na_rabote->save(false);
         if ($organizaciya_to_delete) {
             $organizaciya_to_delete->delete();
         }
         if ($dolzhnost_to_delete) {
             $dolzhnost_to_delete->delete();
         }
         $transaction->commit();
     } catch (\Exception $e) {
         $transaction->rollBack();
         throw $e;
     }
     return true;
 }
예제 #3
0
 public function getPolzovatel()
 {
     $loginProp = $this->loginProperty;
     $login = $this->owner->{$loginProp};
     if ($this->_oldLogin !== $login) {
         $this->_oldLogin = $login;
         $this->_polzovatel = Polzovatel::findIdentity($login);
     }
     return $this->_polzovatel;
 }
 public function actionSetMunicipalnogoOtvestvennogo()
 {
     \Yii::$app->response->format = Response::FORMAT_JSON;
     $result = new JsResponse();
     $district_id = $_REQUEST['district_id'];
     $fiz_lico = $_REQUEST['fiz_lico'];
     $existed_mo = MunicipalnyjOtvestvennyj::find()->where(['district_id' => $district_id, 'fiz_lico' => $fiz_lico])->one();
     if (!$existed_mo) {
         $mo = new MunicipalnyjOtvestvennyj();
         $mo->district_id = $district_id;
         $mo->fiz_lico = $fiz_lico;
         $polzovatel = Polzovatel::find()->where(['fiz_lico' => $fiz_lico])->one();
         $oldMo = MunicipalnyjOtvestvennyj::find()->where(['district_id' => $district_id])->one();
         $oldPolzovatel = false;
         if ($oldMo) {
             $oldPolzovatel = Polzovatel::find()->where(['fiz_lico' => $oldMo->fiz_lico])->one();
             $count = MunicipalnyjOtvestvennyj::find()->where(['fiz_lico' => $oldMo->fiz_lico])->count();
             if ($count == 1) {
                 $oldPolzovatel->deleteRol(Rol::MUNICIPALNYJ_OTVESTVENNYJ);
             }
         }
         if (!$polzovatel->isThereRol(Rol::MUNICIPALNYJ_OTVESTVENNYJ)) {
             $polzovatel->addRol(Rol::MUNICIPALNYJ_OTVESTVENNYJ);
         }
         $transaction = \Yii::$app->db->beginTransaction();
         try {
             if ($oldPolzovatel) {
                 $oldPolzovatel->save();
             }
             if ($oldMo) {
                 $oldMo->delete();
             }
             $mo->save();
             $polzovatel->save();
             $transaction->commit();
             $savedMO = MunicipalnyjOtvestvennyj::find()->joinWith('fizLicoRel')->where(['fiz_lico' => $fiz_lico, 'district_id' => $district_id])->asArray()->one();
             $result->data = $savedMO;
         } catch (Exception $e) {
             $transaction->rollBack();
             $result->type = JsResponse::ERROR;
             $result->msg = JsResponse::MSG_OPERATION_ERROR;
             //$result['help'] = $e->getMessage();
         }
     } else {
         $result->type = JsResponse::ERROR;
         $result->msg = 'Данный работник уже является муниципальным отвественным в этом районе';
     }
     return $result;
 }
예제 #5
0
 /**
  * @inheritdoc
  */
 public function getAssignments($userId)
 {
     $assigments = [];
     $polzovatel = Polzovatel::findIdentity($userId);
     if ($polzovatel) {
         foreach ($polzovatel->roliAsArray as $roleName) {
             $assigments[$roleName] = new Assignment(['userId' => $userId, 'roleName' => $roleName]);
         }
     }
     return $assigments;
 }
예제 #6
0
파일: FizLico.php 프로젝트: tsyrya/mybriop
 public function getPolzovatelRel()
 {
     return $this->hasOne(Polzovatel::className(), ['fiz_lico' => 'id'])->inverseOf('fizLicoRel');
 }
 public function actionChangePredsedatelKomissii()
 {
     \Yii::$app->response->format = Response::FORMAT_JSON;
     $id = $_REQUEST['id'];
     $rabotnik = RabotnikAttestacionnojKomissii::findOne($id);
     $result = new JsResponse();
     $rabotnik->predsedatel = !$rabotnik->predsedatel;
     $polzovatel = Polzovatel::find()->where(['fiz_lico' => $rabotnik->fiz_lico])->one();
     if ($rabotnik->predsedatel) {
         if (!$polzovatel->isThereRol(Rol::RUKOVODITEL_ATTESTACIONNOJ_KOMISSII)) {
             $polzovatel->addRol(Rol::RUKOVODITEL_ATTESTACIONNOJ_KOMISSII);
         }
         //$polzovatel->roliAsArray = array_merge($polzovatel->roliAsArray,[Rol::RUKOVODITEL_ATTESTACIONNOJ_KOMISSII]);
         $current_predsedatel = RabotnikAttestacionnojKomissii::find()->where(['predsedatel' => true, 'attestacionnaya_komissiya' => $rabotnik->attestacionnaya_komissiya])->one();
         $current_predsedatel_polzavatel = false;
         if ($current_predsedatel) {
             $current_predsedatel->predsedatel = false;
             $current_predsedatel_polzavatel = Polzovatel::find()->where(['fiz_lico' => $current_predsedatel->fiz_lico])->one();
             $countOthersPredsedatel = RabotnikAttestacionnojKomissii::find()->where(['fiz_lico' => $current_predsedatel->fiz_lico])->andWhere(['!=', 'id', $current_predsedatel->id])->andWhere(['predsedatel' => true])->count();
             if ($countOthersPredsedatel == 0) {
                 $current_predsedatel_polzavatel->deleteRol(Rol::RUKOVODITEL_ATTESTACIONNOJ_KOMISSII);
             }
         }
     } else {
         $countOthersPredsedatel = RabotnikAttestacionnojKomissii::find()->where(['fiz_lico' => $rabotnik->fiz_lico])->andWhere(['!=', 'id', $rabotnik->id])->andWhere(['predsedatel' => true])->count();
         if ($countOthersPredsedatel == 0) {
             $polzovatel->deleteRol(Rol::RUKOVODITEL_ATTESTACIONNOJ_KOMISSII);
         }
     }
     $is_error = false;
     $transaction = \Yii::$app->db->beginTransaction();
     try {
         $rabotnik->save(false);
         $polzovatel->save(false);
         if ($rabotnik->predsedatel && $current_predsedatel) {
             $current_predsedatel->save(false);
         }
         if ($rabotnik->predsedatel && $current_predsedatel_polzavatel) {
             $current_predsedatel_polzavatel->save(false);
         }
         $transaction->commit();
     } catch (\Exception $e) {
         $transaction->rollBack();
         $is_error = true;
         throw $e;
     }
     if ($is_error) {
         $result->type = JsResponse::ERROR;
         $result->msg = JsResponse::MSG_OPERATION_ERROR;
     } else {
         $result->msg = JsResponse::MSG_OPERATION_SUCCESS;
         $result->data = $rabotnik;
     }
     return $result;
 }
예제 #8
0
 public function rules()
 {
     return [['login', 'required'], ['login', LoginValidator::className()], ['login', 'exist', 'targetAttribute' => 'login', 'targetClass' => Polzovatel::className()], ['kod', 'required'], ['kod', 'validateKod']];
 }