コード例 #1
0
ファイル: TramitExt.php プロジェクト: rzamarripa/du
 private function psalvar($paso)
 {
     $transaction = Yii::$app->db->beginTransaction();
     $datos = [];
     try {
         $this->pasoActualId = $paso->id;
         $this->tipoTramiteId = $this->tipoDeTramite();
         $datos['tipoTramiteId'] = $this->tipoDeTramite();
         $this->scenario = $this->pasoActualId;
         if (!$this->save()) {
             print_r($this->errors);
             return false;
         }
         foreach ($paso->atributos as $atributo) {
             $valor = $this->retriveAttr($atributo->id, $paso->id);
             $valor->tramiteId = $this->id;
             if ($valor->isNewRecord && !$this->permisosPorPaso[$paso->id][USUARIOS::$CREAR]) {
                 $transaction->rollBack();
                 throw new ForbiddenHttpException('No tiene Permiso para generar esta operacion');
                 return false;
             }
             if (!$valor->isNewRecord && !$this->permisosPorPaso[$paso->id][USUARIOS::$ACTUALIZAR]) {
                 $transaction->rollBack();
                 throw new ForbiddenHttpException('No tiene Permiso para actualizar estos datos');
                 return false;
             }
             if (!$valor->save()) {
                 print_r($this->errors);
                 $transaction->rollBack();
                 return false;
             }
             $datos[$atributo->nombre] = $valor->valor;
         }
         $paso = $this->retriveSiguientePaso();
         $this->pasoActualId = $paso->id;
         $datos['pasoActualId'] = $paso->id;
         $datos['id'] = $this->id;
         $datos['observaciones'] = $this->observaciones;
         TiposTramite::findOne($this->pasoActualId);
         if (empty($this->folio)) {
             $ciclo = $this->ciclo;
             if (empty($ciclo)) {
                 $configuracion = Configuracion::findOne(1);
                 //print_r($configuracion);
                 $this->ciclo = $configuracion->cicloActual;
             }
             $folio = Folios::find()->where(['ciclo_id' => $this->ciclo, 'tipoTramite_id' => $this->tipoTramiteId])->one();
             if (empty($folio)) {
                 $folio = new Folios();
                 $folio->ciclo_id = $this->ciclo;
                 $folio->tipoTramite_id = $this->tipoTramiteId;
                 $folio->proximofolio = 1;
             }
             $this->folio = $folio->proximofolio;
             $folio->proximofolio = $folio->proximofolio + 1;
             if (!$folio->save()) {
                 $transaction->rollBack();
                 //print_r($folio);
                 return false;
             }
         }
         if (!$this->save()) {
             $transaction->rollBack();
             return false;
         }
         $transaction->commit();
         return $datos;
     } catch (Exception $e) {
         $transaction->rollBack();
         return false;
     }
     return false;
 }