public function actionDeleteRabotnikaKomissii() { \Yii::$app->response->format = Response::FORMAT_JSON; $id = $_REQUEST['id']; $deleting_rabotnik = RabotnikAttestacionnojKomissii::findOne($id); $polzovatel = Polzovatel::find()->where(['fiz_lico' => $deleting_rabotnik->fiz_lico])->one(); $countOthers = RabotnikAttestacionnojKomissii::find()->where(['fiz_lico' => $deleting_rabotnik->fiz_lico])->andWhere(['!=', 'id', $deleting_rabotnik->id])->count(); if ($countOthers == 0) { $polzovatel->deleteRol(Rol::SOTRUDNIK_ATTESTACIONNOJ_KOMISSII); } $countOthersPredsedatel = RabotnikAttestacionnojKomissii::find()->where(['fiz_lico' => $deleting_rabotnik->fiz_lico])->andWhere(['!=', 'id', $deleting_rabotnik->id])->andWhere(['predsedatel' => true])->count(); if ($countOthersPredsedatel == 0) { $polzovatel->deleteRol(Rol::RUKOVODITEL_ATTESTACIONNOJ_KOMISSII); } $raspredelenieZayavlenij = RaspredelenieZayavlenijNaAttestaciyu::find()->where(['rabotnik_attestacionnoj_komissii' => $deleting_rabotnik->id])->one(); $result = new JsResponse(); if ($raspredelenieZayavlenij) { $result->type = JsResponse::ERROR; $result->msg = 'На данного работника задано распределение заявлений'; } else { $transaction = \Yii::$app->db->beginTransaction(); try { if ($deleting_rabotnik) { $deleting_rabotnik->delete(); } $polzovatel->save(); $transaction->commit(); $result->msg = JsResponse::MSG_OPERATION_SUCCESS; } catch (Exception $e) { $transaction->rollBack(); $result->type = JsResponse::ERROR; $result->msg = $e->getMessage(); // JsResponse::MSG_OPERATION_ERROR.' Запись не удалена.'; } } return $result; }
public function actionGetZayavleniya($period, $komissiya, $allUnfinished) { $allUnfinished = $allUnfinished == 'true' ? true : false; \Yii::$app->response->format = Response::FORMAT_JSON; $sql = 'SELECT zna.*, string_agg(rzna.rabotnik_attestacionnoj_komissii::character varying,\',\') as raspredelenie, sum(ol.listy_kolichestvo) as listy_kolichestvo, sum(ol.zapolnennye_list_kolichestvo) as zapolnennye_list_kolichestvo FROM zayavlenie_na_attestaciyu as zna LEFT JOIN raspredelenie_zayavlenij_na_attestaciyu as rzna on zna.id = rzna.zayavlenie_na_attestaciyu LEFT JOIN rabotnik_attestacionnoj_komissii as rak on rzna.rabotnik_attestacionnoj_komissii = rak.id left join ( select rabotnik_komissii, zayavlenie_na_attestaciyu, count(1) as listy_kolichestvo, sum(case when status = \'zapolneno\' then 1 else 0 end) zapolnennye_list_kolichestvo from otsenochnyj_list_zayavleniya GROUP BY rabotnik_komissii,zayavlenie_na_attestaciyu ) as ol on rak.fiz_lico = ol.rabotnik_komissii and zna.id = ol.zayavlenie_na_attestaciyu WHERE ' . ($allUnfinished ? '' : 'zna.vremya_provedeniya = :period AND') . ' zna.status = \'podpisano_otdelom_attestacii\' AND zna.rabota_dolzhnost in ( SELECT dak.dolzhnost FROM rabotnik_attestacionnoj_komissii as rak INNER JOIN dolzhnost_attestacionnoj_komissii as dak on rak.attestacionnaya_komissiya = dak.attestacionnaya_komissiya WHERE rak.attestacionnaya_komissiya = :komissiya ) ' . ($allUnfinished ? ' AND coalesce(listy_kolichestvo,10) > coalesce(zapolnennye_list_kolichestvo,1)' : '') . ' GROUP BY zna.id'; //return [$sql,$period,$komissiya,$allUnfinished]; $zayvleniya = []; $q = \Yii::$app->db->createCommand($sql)->bindValue(':komissiya', $komissiya); if (!$allUnfinished) { $q->bindValue(':period', $period); } $q = $q->queryAll(); foreach ($q as $item) { $zayavlenie = new Zayavlenie(); $zayavlenie->id = $item['id']; $zayavlenie->familiya = $item['familiya']; $zayavlenie->imya = $item['imya']; $zayavlenie->otchestvo = $item['otchestvo']; $zayavlenie->raspredelenie = $item['raspredelenie'] != null ? array_map('intval', explode(',', $item['raspredelenie'])) : []; $zayavlenie->raspredelenieCopy = $zayavlenie->raspredelenie; $statuses = RaspredelenieZayavlenijNaAttestaciyu::find()->joinWith('rabotnikAttestacionnojKomissiiRel')->where(['raspredelenie_zayavlenij_na_attestaciyu.zayavlenie_na_attestaciyu' => $item['id']])->asArray()->all(); foreach ($statuses as $status) { $zayavlenie->statuses[$status['rabotnikAttestacionnojKomissiiRel']['fiz_lico']] = $status; } $sql = 'select alz.id, alz.rabotnik_komissii, alz.zayavlenie_na_attestaciyu, sum(solz.bally) as bally, alz.nazvanie from otsenochnyj_list_zayavleniya as alz inner join struktura_otsenochnogo_lista_zayvaleniya as solz on alz.id = solz.otsenochnyj_list_zayavleniya where solz.uroven = 1 and alz.zayavlenie_na_attestaciyu = :zayavlenie GROUP BY alz.id, alz.zayavlenie_na_attestaciyu, alz.rabotnik_komissii'; $otsenki = []; $ostenkiData = \Yii::$app->db->createCommand($sql)->bindValue(':zayavlenie', $item['id'])->queryAll(); foreach ($ostenkiData as $item) { $otsenki[$item['rabotnik_komissii']][] = $item; } $zayavlenie->otsenki = $otsenki; // OtsenochnyjListZayavleniya::find() // ->joinWith('strukturaOtsenochnogoListaZayvaleniyaRel') // ->select([ // 'otsenochnyj_list_zayavleniya.id', // 'otsenochnyj_list_zayavleniya.zayavlenie_na_attestaciyu', // 'sum(struktura_otsenochnogo_lista_zayvaleniya.bally) as bally' // ]) // ->where(['otsenochnyj_list_zayavleniya.zayavlenie_na_attestaciyu'=>$item['id']]) // ->andWhere(['struktura_otsenochnogo_lista_zayvaleniya.uroven'=>1]) // ->groupBy([ // 'otsenochnyj_list_zayavleniya.zayavlenie_na_attestaciyu', // 'otsenochnyj_list_zayavleniya.id' // ]) // ->all(); $zayvleniya[] = $zayavlenie; } return $zayvleniya; }
public function actionOtsenki() { \Yii::$app->response->format = Response::FORMAT_JSON; $response = new JsResponse(); $error = ''; $fizLico = ApiGlobals::getFizLicoPolzovatelyaId(); $zayavlenieId = $_REQUEST['zayavlenie_id']; $ajax = $_REQUEST['ajax']; $rabotnik = RabotnikAttestacionnojKomissii::find()->where(['fiz_lico' => $fizLico])->one(); /** * @var ZayavlenieNaAttestaciyu $zayavlenie */ $zayavlenie = ZayavlenieNaAttestaciyu::find()->joinWith('portfolioFajlRel')->joinWith('varIspytanie3FajlRel')->joinWith('prezentatsiyaFajlRel')->joinWith('otraslevoeSoglashenieZayavleniyaRel')->where(['zayavlenie_na_attestaciyu.id' => $zayavlenieId])->one(); $raspredelenie = RaspredelenieZayavlenijNaAttestaciyu::find()->joinWith('rabotnikAttestacionnojKomissiiRel')->where(['rabotnik_attestacionnoj_komissii.fiz_lico' => $fizLico])->andWhere(['zayavlenie_na_attestaciyu' => $zayavlenieId])->exists(); $r = RaspredelenieZayavlenijNaAttestaciyu::find()->joinWith('rabotnikAttestacionnojKomissiiRel')->where(['rabotnik_attestacionnoj_komissii.fiz_lico' => $fizLico])->andWhere(['zayavlenie_na_attestaciyu' => $zayavlenieId])->all(); $first = function ($array) { if (count($array) > 0) { return $array[0]; } else { return false; } }; if ($raspredelenie) { $transaction = \Yii::$app->db->beginTransaction(); try { $postoyannieIspyetaniya = [PostoyannoeIspytanie::getPortfolioId()]; $variativnoeIspytanie = []; if ($zayavlenie->na_kategoriyu == KategoriyaPedRabotnika::VYSSHAYA_KATEGORIYA) { if (count($zayavlenie->otraslevoeSoglashenieZayavleniyaRel) == 0) { $variativnoeIspytanie[] = $zayavlenie->var_ispytanie_3; $postoyannieIspyetaniya[] = PostoyannoeIspytanie::getSpdId(); } } $otsenochnieListy = OtsenochnyjList::find()->joinWith('ispytanieOtsenochnogoListaRel')->where(['in', 'ispytanie_otsenochnogo_lista.postoyannoe_ispytanie', $postoyannieIspyetaniya])->orWhere(['in', 'ispytanie_otsenochnogo_lista.var_ispytanie_3', $variativnoeIspytanie])->all(); foreach ($otsenochnieListy as $list) { /** * @var OtsenochnyjList $list */ if (!OtsenochnyjListZayavleniya::find()->where(['otsenochnij_list' => $list->id])->andWhere(['rabotnik_komissii' => $fizLico])->andWhere(['zayavlenie_na_attestaciyu' => $zayavlenieId])->exists()) { $new_ol_zayvaleniya = new OtsenochnyjListZayavleniya(); $new_ol_zayvaleniya->otsenochnijList = $list->id; $new_ol_zayvaleniya->rabotnikKomissii = $fizLico; $new_ol_zayvaleniya->zayavlenieNaAttestaciyu = $zayavlenieId; $ispytanie = $first($list->ispytanieOtsenochnogoListaRel); if ($ispytanie && $ispytanie->postoyannoeIspytanie) { $new_ol_zayvaleniya->postoyannoeIspytanie = $ispytanie->postoyannoeIspytanie; } if ($ispytanie && $ispytanie->var_ispytanie_3) { $new_ol_zayvaleniya->var_ispytanie_3 = $ispytanie->var_ispytanie_3; } $new_ol_zayvaleniya->nazvanie = $list->nazvanie; $new_ol_zayvaleniya->minBallPervayaKategoriya = $list->minBallPervayaKategoriya; $new_ol_zayvaleniya->minBallVisshayaKategoriya = $list->minBallVisshayaKategoriya; $new_ol_zayvaleniya->save(); $sql = ' INSERT INTO struktura_otsenochnogo_lista_zayvaleniya (otsenochnyj_list_zayavleniya,nazvanie,max_bally, nomer, uroven, struktura_otsenochnogo_lista, roditel) select :ol, sol.nazvanie, sol.bally, case when sol.roditel is not null then sol_roditel.nomer||\'.\'||sol.nomer else cast(sol.nomer as varchar) end as nomer, case when sol.roditel is not null then 2 else 1 end as uroven, sol.id, sol.roditel from otsenochnyj_list as ol inner join struktura_otsenochnogo_lista as sol on ol.id = sol.otsenochnyj_list left join struktura_otsenochnogo_lista as sol_roditel on sol.roditel = sol_roditel.id inner join ispytanie_otsenochnogo_lista as iol on ol.id = iol.otsenochnyj_list where ol.id = ' . $list->id . ' and ' . ($ispytanie->var_ispytanie_3 ? 'iol.var_ispytanie_3=:isp' : 'iol.postoyannoe_ispytanie=:isp') . ' order by nomer '; \Yii::$app->db->createCommand($sql)->bindValue(':ol', $new_ol_zayvaleniya->id)->bindValue(':isp', $ispytanie->var_ispytanie_3 ? $ispytanie->var_ispytanie_3 : $ispytanie->postoyannoeIspytanie)->execute(); } } $transaction->commit(); } catch (Exception $e) { $transaction->rollBack(); $error = 'Оценочный лист не сформирован' . $e->getMessage(); } } else { $error = 'Недоступное действие для данного пользователя'; } $listy = OtsenochnyjListZayavleniya::find()->joinWith(['strukturaOtsenochnogoListaZayvaleniyaRel' => function ($query) { /** * @var ActiveQuery $query */ $query->orderBy(new Expression('cast(struktura_otsenochnogo_lista_zayvaleniya.nomer as FLOAT)')); }])->where(['otsenochnyj_list_zayavleniya.rabotnik_komissii' => $fizLico])->andWhere(['otsenochnyj_list_zayavleniya.zayavlenie_na_attestaciyu' => $zayavlenieId])->orderBy(new Expression('otsenochnyj_list_zayavleniya.id'))->all(); $result = []; foreach ($listy as $list) { /** * @var OtsenochnyjListZayavleniya $list */ if ($list->postoyannoeIspytanie == PostoyannoeIspytanie::getPortfolioId()) { //$result[] =$list->status; $portfolio = PostoyannoeIspytanie::find()->where(['id' => PostoyannoeIspytanie::getPortfolioId()])->one(); $result[] = new \app\models\sotrudnik_att_komissii\OtsenochnyjList(['ispytanie_name' => $portfolio->nazvanie, 'file_name' => $zayavlenie->portfolioFajlRel ? $zayavlenie->portfolioFajlRel->vneshnee_imya_fajla : '', 'file_link' => $zayavlenie->portfolioFajlRel ? $zayavlenie->portfolioFajlRel->getUri() : '', 'list' => $list, 'struktura' => $list->strukturaOtsenochnogoListaZayvaleniyaRel]); } else { if ($list->postoyannoeIspytanie == PostoyannoeIspytanie::getSpdId()) { //$result[] =$list->status; $spd = PostoyannoeIspytanie::find()->where(['id' => PostoyannoeIspytanie::getSpdId()])->one(); $result[] = new \app\models\sotrudnik_att_komissii\OtsenochnyjList(['ispytanie_name' => $spd->nazvanie, 'file_name' => $zayavlenie->prezentatsiyaFajlRel ? $zayavlenie->prezentatsiyaFajlRel->vneshnee_imya_fajla : '', 'file_link' => $zayavlenie->prezentatsiyaFajlRel ? $zayavlenie->prezentatsiyaFajlRel->getUri() : '', 'list' => $list, 'struktura' => $list->strukturaOtsenochnogoListaZayvaleniyaRel]); } else { if ($list->varIspytanie_3) { //$result[] =$list->status; $varIspytanie3 = AttestacionnoeVariativnoeIspytanie_3::find()->where(['id' => $list->varIspytanie_3])->one(); $result[] = new \app\models\sotrudnik_att_komissii\OtsenochnyjList(['ispytanie_name' => $varIspytanie3->nazvanie, 'file_name' => $zayavlenie->varIspytanie3FajlRel ? $zayavlenie->varIspytanie3FajlRel->vneshnee_imya_fajla : '', 'file_link' => $zayavlenie->varIspytanie3FajlRel ? $zayavlenie->varIspytanie3FajlRel->getUri() : '', 'list' => $list, 'struktura' => $list->strukturaOtsenochnogoListaZayvaleniyaRel]); } } } } if ($error) { $response->type = JsResponse::ERROR; $response->msg = $error; } else { $response->data = $result; } return $response; }