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]; }
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; }
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; }
/** * @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; }
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; }
public function rules() { return [['login', 'required'], ['login', LoginValidator::className()], ['login', 'exist', 'targetAttribute' => 'login', 'targetClass' => Polzovatel::className()], ['kod', 'required'], ['kod', 'validateKod']]; }