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;
 }
 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;
 }