public function addDolzhnost() { $organizaciya = $this->organizaciyaId ? Organizaciya::findOne($this->organizaciyaId) : new Organizaciya(['nazvanie' => $this->organizaciyaNazvanie, 'vedomstvo' => $this->organizaciyaVedomstvo, 'adresAdresnyjObjekt' => $this->organizaciyaVedomstvo, 'obschij' => false]); if (!$organizaciya->validate()) { return false; } if ($this->organizaciyaId) { $rabotaFizLica = RabotaFizLica::findOne(['fiz_lico' => $this->fizLicoId, 'organizaciya' => $this->organizaciyaId]); } else { $rabotaFizLica = null; } if (!$rabotaFizLica) { $rabotaFizLica = new RabotaFizLica(['fiz_lico' => $this->fizLicoId]); } if (!$rabotaFizLica->validate()) { return false; } $dolzhnost = $this->dolzhnostId ? Dolzhnost::findOne($this->dolzhnostId) : new Dolzhnost(['nazvanie' => $this->dolzhnostNazvanie, 'tip' => 'inaya', 'obschij' => false]); try { DolzhnostFizLicaNaRabote::getDb()->transaction(function () use($organizaciya, $rabotaFizLica, $dolzhnost) { $organizaciya->save(false); $dolzhnost->save(false); $rabotaFizLica->link('organizaciyaRel', $organizaciya); $dolzhnostFizLica = new DolzhnostFizLicaNaRabote(['dolzhnost' => $dolzhnost->id, 'etapObrazovaniya' => $this->etapObrazovaniya]); $dolzhnostFizLica->link('rabotaFizLicaRel', $rabotaFizLica); }); } catch (Exception $e) { return false; } return ['rabota_fiz_lica_id' => $rabotaFizLica->id, 'dolhnost' => $dolzhnost->nazvanie . ', ' . $organizaciya->nazvanie]; }
public function actionCreate($rabota) { $rabotaModel = RabotaFizLica::findOneByHashids($rabota); if (!$rabotaModel) { throw new NotFoundHttpException(); } if ($rabotaModel->fiz_lico !== Yii::$app->user->fizLicoId) { throw new ForbiddenHttpException(); } $model = new DolzhnostForm(); $model->rabota_fiz_lica = $rabotaModel->id; return $this->createUpdateHelper($model); }
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 static function tableName() { return RabotaFizLica::tableName(); }
public function getRabotyFizLicaRel() { return $this->hasMany(RabotaFizLica::className(), ['fiz_lico' => 'id'])->inverseOf('fizLicoRel'); }
public function getRabotyFizLicaRel() { return $this->hasMany(RabotaFizLica::className(), ['organizaciya' => 'id'])->inverseOf('organizaciyaRel'); }
public function actionIndex() { $query = RabotaFizLica::find()->with('organizaciyaRel')->hasFizLico(); $data = new ActiveDataProvider(['query' => $query, 'key' => 'hashids', 'pagination' => false, 'sort' => false]); return $this->render('index', ['data' => $data]); }
public function getRabotaFizLicaRel() { return $this->hasOne(RabotaFizLica::className(), ['id' => 'rabota_fiz_lica'])->inverseOf('dolzhnostiFizLicaNaRaboteRel'); }
private function populateByudzhetImpl() { $fiz_lico = FizLico::findOne($this->fizLico); if ($fiz_lico) { $this->pedStazh = $fiz_lico->pedStazh; } $rabota_fiz_lica = RabotaFizLica::find()->where(['fiz_lico' => $this->fizLico])->orderBy('id')->one(); $dolzhnost_fiz_lica_na_rabote = $rabota_fiz_lica ? DolzhnostFizLicaNaRabote::find()->where(['rabota_fiz_lica' => $rabota_fiz_lica->id])->orderBy('id')->one() : null; if ($dolzhnost_fiz_lica_na_rabote) { list($this->dolzhnostId, $this->dolzhnostNazvanie) = DirectoryHelper::getForCombo(Dolzhnost::findOne($dolzhnost_fiz_lica_na_rabote->dolzhnost)); } if ($dolzhnost_fiz_lica_na_rabote && ($stazh_v_dolzhnosti = StazhFizLica::findOne(['fiz_lico' => $this->fizLico, 'dolzhnost' => Val::of($dolzhnost_fiz_lica_na_rabote, 'dolzhnost')]))) { $this->stazhVDolzhnosti = $stazh_v_dolzhnosti->stazh; } if ($attestaciya_fiz_lica = $fiz_lico->attestaciyaFizLicaRel) { $this->kategoriya = $attestaciya_fiz_lica->kategoriya; } if ($obrazovanie_fiz_lica = ObrazovanieFizLica::find()->where(['fiz_lico' => $this->fizLico])->orderBy('id')->one()) { list($this->obrOrgId, $this->obrOrgNazvanie) = DirectoryHelper::getForCombo(Organizaciya::findOne($obrazovanie_fiz_lica->organizaciya)); list($this->obrKvalifikaciyaId, $this->obrKvalifikaciyaNazvanie) = DirectoryHelper::getForCombo(Kvalifikaciya::findOne($obrazovanie_fiz_lica->kvalifikaciya)); $this->obrDocTip = $obrazovanie_fiz_lica->dokumentObObrazovaniiTip; $this->obrDocSeriya = $obrazovanie_fiz_lica->dokumentObObrazovaniiSeriya; $this->obrDocNomer = $obrazovanie_fiz_lica->dokumentObObrazovaniiNomer; $this->obrDocData = DeprecatedDatePicker::fromDatetime($obrazovanie_fiz_lica->dokumentObObrazovaniiDataAsDate); } return $fiz_lico; }
public function save() { $fizLicoFio = FizLico::getFioById($this->fizLicoId); $rabota = RabotaFizLica::find()->joinWith('dolzhnostiFizLicaNaRaboteRel')->where(['rabota_fiz_lica.id' => $this->dolzhnost])->one(); $zayavlenie = ZayavlenieNaAttestaciyu::findOne($this->id ? $this->id : 0); $attestaciyaDates = $this->parseAttestaciyaDate(); if (!$zayavlenie) { $zayavlenie = new ZayavlenieNaAttestaciyu(); } $zayavlenie->fiz_lico = $this->fizLicoId; $zayavlenie->familiya = $fizLicoFio['familiya']; $zayavlenie->imya = $fizLicoFio['imya']; $zayavlenie->otchestvo = $fizLicoFio['otchestvo']; $zayavlenie->ped_stazh = $this->pedStazh; $zayavlenie->stazh_v_dolzhnosti = $this->pedStazhVDolzhnosti; $zayavlenie->rabota_organizaciya = $rabota->organizaciya; $zayavlenie->rabota_dolzhnost = $rabota->dolzhnostiFizLicaNaRaboteRel[0]->dolzhnost; $zayavlenie->rabota_stazh_v_dolzhnosti = $this->rabotaPedStazhVDolzhnosti; $zayavlenie->rabota_kopiya_trudovoj_knizhki = $this->trudovajya; $zayavlenie->attestaciya_kategoriya = $this->attestacionnyListKategoriya; $zayavlenie->attestaciya_kopiya_attestacionnogo_lista = $this->attestacionnyListPeriodFajl; $zayavlenie->attestaciya_data_prisvoeniya = date('Y-m-d', strtotime($attestaciyaDates['data_prisvoeniya'])); $zayavlenie->attestaciya_data_okonchaniya_dejstviya = date('Y-m-d', strtotime($attestaciyaDates['data_okonchaniya_dejstviya'])); $zayavlenie->na_kategoriyu = $this->kategoriya; $zayavlenie->attestaciya_data_okonchaniya_dejstviya = date('Y-m-d', strtotime($this->attestaciyaDataOkonchaniyaDejstviya)); $zayavlenie->rabota_data_naznacheniya = date('Y-m-d', strtotime($this->rabotaDataNaznacheniya)); $zayavlenie->rabota_data_naznacheniya_v_uchrezhdenii = date('Y-m-d', strtotime($this->rabotaDataNaznacheniyaVUchrezhdenii)); $zayavlenie->data_rozhdeniya = date('Y-m-d', strtotime($this->dataRozhdeniya)); if ($this->kategoriya == KategoriyaPedRabotnika::VYSSHAYA_KATEGORIYA) { $zayavlenie->svedeniya_o_sebe = $this->svedeniysOSebe ? $this->svedeniysOSebe : null; $zayavlenie->svedeniya_o_sebe_fajl = $this->svedeniysOSebeFajl; } else { $zayavlenie->svedeniya_o_sebe = null; $zayavlenie->svedeniya_o_sebe_fajl = null; } if ($this->kategoriya == KategoriyaPedRabotnika::BEZ_KATEGORII) { $zayavlenie->var_ispytanie_2 = null; $zayavlenie->var_ispytanie_3 = null; } else { $zayavlenie->var_ispytanie_2 = $this->kategoriya == KategoriyaPedRabotnika::VYSSHAYA_KATEGORIYA ? $this->varIspytanie2 : null; $zayavlenie->var_ispytanie_3 = $this->kategoriya == KategoriyaPedRabotnika::VYSSHAYA_KATEGORIYA ? $this->varIspytanie3 : null; if (count($this->otraslevoeSoglashenie) > 0) { $zayavlenie->var_ispytanie_3 = null; } } $zayavlenie->vremya_provedeniya = $this->vremyaProvedeniya; $this->status = $this->status ? $this->status : StatusZayavleniyaNaAttestaciyu::REDAKTIRUETSYA_PED_RABOTNIKOM; $zayavlenie->status = $this->status ? $this->status : StatusZayavleniyaNaAttestaciyu::REDAKTIRUETSYA_PED_RABOTNIKOM; $zayavlenie->vremya_smeny_statusa = date("Y-m-d H:i:s"); $zayavlenie->domashnijTelefon = substr($this->domashnijTelefon, 1); $zayavlenie->provestiZasedanieBezPrisutstviya = $this->provestiZasedanieBezPrisutstviya; $zayavlenie->prilozhenie1 = $this->prilozhenie1; $zayavlenie->ld_olimpiady = $this->ldOlimpiady ? $this->ldOlimpiady : null; $zayavlenie->ld_posobiya = $this->ldPosobiya ? $this->ldPosobiya : null; $zayavlenie->ld_publikacii = $this->ldPublikacii ? $this->ldPublikacii : null; $zayavlenie->ld_prof_konkursy = $this->ldProfKonkursy ? $this->ldProfKonkursy : null; $zayavlenie->ld_obshestvennaya_aktivnost = $this->ldObshestvennayaAktivnost ? $this->ldObshestvennayaAktivnost : null; $zayavlenie->ld_elektronnye_resursy = $this->ldElektronnyeResursy ? $this->ldElektronnyeResursy : null; $zayavlenie->ld_otkrytoe_meropriyatie = $this->ldOtkrytoeMeropriyatie ? $this->ldOtkrytoeMeropriyatie : null; $zayavlenie->ld_nastavnik = $this->ldNastavnik ? $this->ldNastavnik : null; $zayavlenie->ld_deti_sns = $this->ldDetiSns ? $this->ldDetiSns : null; if (!$zayavlenie->validate()) { return false; } //создаем массив с высшими образованиями $Obrazovaniya = []; if ($this->visshieObrazovaniya) { foreach ($this->visshieObrazovaniya as $k => $v) { $object = ['tip' => 'vo', 'index' => $k]; if ($v->udalit) { $object['udalit'] = 1; } else { $object['udalit'] = 0; } $dataVidachi = date('Y-m-d', strtotime($v->dataVidachi)); $obrazovanieFizLica = ObrazovanieFizLica::findOne($v->obrazovanieFizLicaId ? $v->obrazovanieFizLicaId : 0); if (!$obrazovanieFizLica) { $obrazovanieFizLica = new ObrazovanieFizLica(); } $obrazovanieFizLica->fiz_lico = $this->fizLicoId; $obrazovanieFizLica->dokument_ob_obrazovanii_tip = $v->tipDokumenta; $obrazovanieFizLica->dokument_ob_obrazovanii_seriya = $v->seriya; $obrazovanieFizLica->dokument_ob_obrazovanii_nomer = $v->nomer; $obrazovanieFizLica->dokument_ob_obrazovanii_data = $dataVidachi; $obrazovanieFizLica->kvalifikaciya = $v->kvalifikaciyaId; $obrazovanieFizLica->organizaciya = $v->organizaciyaId; if (!$v->kvalifikaciyaId and $v->kvalifikaciyaNazvanie) { $object['novayaKvalifikaciya'] = $v->kvalifikaciyaNazvanie; } else { $object['novayaKvalifikaciya'] = ''; } if (!$v->organizaciyaId and $v->organizaciyaNazvanie) { $object['novayaOrganizaciya'] = $v->organizaciyaNazvanie; } else { $object['novayaOrganizaciya'] = ''; } $obrazovanieFizLica->dokument_ob_obrazovanii_kopiya = $v->documentKopiya; if (!$obrazovanieFizLica->validate()) { return false; } $object['obrazovanieFizLica'] = $obrazovanieFizLica; $obrazovanieDlyaZayavleniya = ObrazovanieDlyaZayavleniyaNaAttestaciyu::findOne($v->obrazovanieDlyaZayavleniyaId ? $v->obrazovanieDlyaZayavleniyaId : 0); if (!$obrazovanieDlyaZayavleniya) { $obrazovanieDlyaZayavleniya = new ObrazovanieDlyaZayavleniyaNaAttestaciyu(); } $obrazovanieDlyaZayavleniya->zayavlenie_na_attestaciyu = $this->id; $obrazovanieDlyaZayavleniya->obrazovanie_istochnik = $v->obrazovanieFizLicaId; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_tip = $v->tipDokumenta; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_seriya = $v->seriya; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_nomer = $v->nomer; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_data = $dataVidachi; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_kopiya = $v->documentKopiya; $obrazovanieDlyaZayavleniya->kvalifikaciya = $v->kvalifikaciyaId; $obrazovanieDlyaZayavleniya->organizaciya = $v->organizaciyaId; $object['obrazovanieDlyaZayavlaniya'] = $obrazovanieDlyaZayavleniya; $Obrazovaniya[] = $object; } } if ($this->kursy) { foreach ($this->kursy as $k => $v) { $object = ['tip' => 'kurs', 'index' => $k]; if ($v->udalit) { $object['udalit'] = 1; } else { $object['udalit'] = 0; } $dataVidachi = date('Y-m-d', strtotime($v->dataVidachi)); $obrazovanieFizLica = ObrazovanieFizLica::findOne($v->obrazovanieFizLicaId ? $v->obrazovanieFizLicaId : 0); if (!$obrazovanieFizLica) { $obrazovanieFizLica = new ObrazovanieFizLica(); } $obrazovanieFizLica->fiz_lico = $this->fizLicoId; $obrazovanieFizLica->dokument_ob_obrazovanii_tip = $v->tipDokumenta; $obrazovanieFizLica->dokument_ob_obrazovanii_data = $dataVidachi; $obrazovanieFizLica->organizaciya = $v->organizaciyaId; $obrazovanieFizLica->kurs_nazvanie = $v->kursNazvanie; $obrazovanieFizLica->kurs_chasy = $v->kursChasy; $obrazovanieFizLica->kurs_tip = $v->kursTip; $obrazovanieFizLica->dokument_ob_obrazovanii_kopiya = $v->documentKopiya; $obrazovanieFizLica->dokument_ob_obrazovanii_seriya = null; $obrazovanieFizLica->dokument_ob_obrazovanii_nomer = null; if (!$v->organizaciyaId and $v->organizaciyaNazvanie) { $object['novayaOrganizaciya'] = $v->organizaciyaNazvanie; } else { $object['novayaOrganizaciya'] = ''; } $object['novayaKvalifikaciya'] = ''; if (!$obrazovanieFizLica->validate()) { return false; } $object['obrazovanieFizLica'] = $obrazovanieFizLica; $obrazovanieDlyaZayavleniya = ObrazovanieDlyaZayavleniyaNaAttestaciyu::findOne($v->obrazovanieDlyaZayavleniyaId ? $v->obrazovanieDlyaZayavleniyaId : 0); if (!$obrazovanieDlyaZayavleniya) { $obrazovanieDlyaZayavleniya = new ObrazovanieDlyaZayavleniyaNaAttestaciyu(); } $obrazovanieDlyaZayavleniya->zayavlenie_na_attestaciyu = $this->id; $obrazovanieDlyaZayavleniya->obrazovanie_istochnik = $v->obrazovanieFizLicaId; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_tip = $v->tipDokumenta; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_data = $dataVidachi; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_kopiya = $v->documentKopiya; $obrazovanieDlyaZayavleniya->organizaciya = $v->organizaciyaId; $obrazovanieDlyaZayavleniya->kurs_nazvanie = $v->kursNazvanie; $obrazovanieDlyaZayavleniya->kurs_chasy = $v->kursChasy; $obrazovanieDlyaZayavleniya->kurs_tip = $v->kursTip; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_nomer = null; $obrazovanieDlyaZayavleniya->dokument_ob_obrazovanii_seriya = null; $object['obrazovanieDlyaZayavlaniya'] = $obrazovanieDlyaZayavleniya; $Obrazovaniya[] = $object; } } $saveTransaction = RabotaFizLica::getDb()->transaction(function () use($zayavlenie, $Obrazovaniya) { //var_dump($zayavlenie->save(false)); if (!$zayavlenie->save(false)) { var_dump('zayavl_error'); return false; } $this->id = $zayavlenie->id; foreach ($Obrazovaniya as $k => $v) { if ($v['udalit']) { if (!$v['obrazovanieDlyaZayavlaniya']->delete()) { return false; } if ($v['tip'] == 'kurs') { if (!$v['obrazovanieFizLica']->delete()) { return false; } } if ($v['tip'] == 'vo') { unset($this->visshieObrazovaniya[$v['index']]); } else { unset($this->kursy[$v['index']]); } } else { if ($v['novayaKvalifikaciya']) { $kvalifikaciya = new Kvalifikaciya(['nazvanie' => $v['novayaKvalifikaciya'], 'obschij' => false]); if (!$kvalifikaciya->save(false)) { var_dump('kvalifik_error'); return false; } $v['obrazovanieFizLica']->kvalifikaciya = $kvalifikaciya->id; $v['obrazovanieDlyaZayavlaniya']->kvalifikaciya = $kvalifikaciya->id; } if ($v['novayaOrganizaciya']) { $organizaciya = new Organizaciya(['nazvanie' => $v['novayaOrganizaciya'], 'obschij' => false, 'etapy_obrazovaniya' => '{' . \app\enums\EtapObrazovaniya::VYSSHEE_PROFESSIONALNOE_OBRAZOVANIE . '}']); if (!$organizaciya->save(false)) { var_dump('orghanizac_error'); return false; } $v['obrazovanieFizLica']->organizaciya = $organizaciya->id; $v['obrazovanieDlyaZayavlaniya']->organizaciya = $organizaciya->id; } if (!$v['obrazovanieFizLica']->validate()) { return false; } if (!$v['obrazovanieFizLica']->save(false)) { var_dump('obrfl_error'); return false; } if ($v['tip'] == 'vo') { $this->visshieObrazovaniya[$v['index']]->obrazovanieFizLicaId = $v['obrazovanieFizLica']->id; } else { $this->kursy[$v['index']]->obrazovanieFizLicaId = $v['obrazovanieFizLica']->id; } $v['obrazovanieDlyaZayavlaniya']->obrazovanie_istochnik = $v['obrazovanieFizLica']->id; $v['obrazovanieDlyaZayavlaniya']->zayavlenie_na_attestaciyu = $zayavlenie->id; if (!$v['obrazovanieDlyaZayavlaniya']->validate()) { return false; } if (!$v['obrazovanieDlyaZayavlaniya']->save(false)) { var_dump('obrzZayavl_error'); return false; } if ($v['tip'] == 'vo') { $this->visshieObrazovaniya[$v['index']]->obrazovanieDlyaZayavleniyaId = $v['obrazovanieDlyaZayavlaniya']->id; } else { $this->kursy[$v['index']]->obrazovanieDlyaZayavleniyaId = $v['obrazovanieDlyaZayavlaniya']->id; } } } foreach ($this->otraslevoeSoglashenie as $key => $item) { /** * @var OtraslevoeSoglashenie $item */ $item->zayavlenieNaAttestaciyu = $this->id; if ($savedItem = $item->save()) { if ($item->udalit) { unset($this->otraslevoeSoglashenie[$key]); } else { $item->id = $savedItem->id; } } else { var_dump('os_error'); return false; } } return true; }); if (!$saveTransaction) { return false; } return true; }