Example #1
0
 public function actionUpdate($id, $patienttype)
 {
     $dopparams = ['dopparams' => []];
     $model = $this->findModel($id);
     $modelloaded = $model->load(Yii::$app->request->post());
     $GlaukuchetIsNew = false;
     // Адрес
     $Fias = new Fias();
     // отправлена форма
     if (isset($_POST['Fias']['AOGUID']) && Yii::$app->user->can('GlaukOperatorPermission')) {
         // город не заполнен
         if (empty($_POST['Fias']['AOGUID'])) {
             $model->id_fias = NULL;
             $model->patient_dom = NULL;
             $model->patient_korp = NULL;
             $model->patient_kvartira = NULL;
         } else {
             // город заполнен (Если улица есть, иначе Если улицы нет)
             $Fias->AOGUID = $_POST['Fias']['AOGUID'];
             // Если есть улицы
             $model->id_fias = Fias::Checkstreets($_POST['Fias']['AOGUID']) > 0 ? $_POST['Patient']['id_fias'] : Fias::findOne($_POST['Fias']['AOGUID'])->AOGUID;
             $model->scenario = 'streetrequired';
             // Адрес обязателен
         }
     } elseif (!empty($model->id_fias)) {
         // просто загрузка страницы, если адрес заполнен
         $address = Fias::findOne($model->id_fias);
         // Если адрес Улица, иначе Если адрес поселок без улиц
         $Fias = $address->AOLEVEL == 7 ? Fias::findOne($address->PARENTGUID) : $address;
     }
     if ($patienttype === 'glauk' && Yii::$app->user->can('GlaukUserPermission')) {
         $dopparams['dopparams']['DisableElements'] = !Yii::$app->user->can('GlaukOperatorPermission');
         $Glaukuchet = Glaukuchet::findOne(['id_patient' => $model->primaryKey]);
         if (empty($Glaukuchet)) {
             $Glaukuchet = new Glaukuchet();
             $Glaukuchet->id_patient = $model->primaryKey;
             $GlaukuchetIsNew = true;
         }
         $dopparams['dopparams']['Glaukuchet'] = $Glaukuchet;
         if (!$Glaukuchet->isNewRecord && Yii::$app->user->can('GlaukOperatorPermission')) {
             $Glprep = new Glprep();
             $Glprep->load(Yii::$app->request->get(), 'Glprep');
             $Glprep->id_glaukuchet = $Glaukuchet->primaryKey;
             if ($Glprep->validate()) {
                 $Glprep->save(false);
             }
         }
         $searchModelglprep = new GlprepSearch();
         $dataProviderglprep = $searchModelglprep->search(Yii::$app->request->queryParams);
         $dopparams['dopparams']['Glprep'] = $Glprep;
         $dopparams['dopparams']['searchModelglprep'] = $searchModelglprep;
         $dopparams['dopparams']['dataProviderglprep'] = $dataProviderglprep;
     }
     $Fias->scenario = 'citychooserequired';
     // Адрес обязателен
     if (Yii::$app->user->can('GlaukOperatorPermission')) {
         $transaction = Yii::$app->db->beginTransaction();
         try {
             if ($patienttype === 'glauk' && $modelloaded && $Glaukuchet->load(Yii::$app->request->post()) && Model::validateMultiple([$model, $Glaukuchet, $Fias])) {
                 $model->save(false);
                 $Glaukuchet->save(false);
                 $transaction->commit();
                 if ($GlaukuchetIsNew) {
                     return $this->render('update', array_merge(['model' => $model, 'Fias' => $Fias, 'patienttype' => $patienttype], $dopparams));
                 } else {
                     return $this->redirect(Proc::GetPreviousURLBreadcrumbsFromSession());
                 }
             } else {
                 // Откатываем транзакцию
                 $transaction->rollBack();
                 return $this->render('update', array_merge(['model' => $model, 'Fias' => $Fias, 'patienttype' => $patienttype], $dopparams));
             }
         } catch (Exception $e) {
             $transaction->rollBack();
             throw new Exception($e->getMessage());
         }
     } elseif (Yii::$app->user->can('GlaukUserPermission')) {
         return $this->render('update', array_merge(['model' => $model, 'Fias' => $Fias, 'patienttype' => $patienttype], $dopparams));
     }
 }