Пример #1
0
 public function actionCreateProfesional()
 {
     // Instancio modelos que se van a usar en el formulario
     $model = new Profesional();
     $model_conyuge = new Conyuge();
     $model_domicilioprofesional = new Domicilioprofesional();
     $model_contacto = new Contacto();
     $model_domicilio = new Domicilio();
     $modellocalidad = new Localidad();
     $model_datoimpositivo = new Datoimpositivo();
     if (isset($_POST['Profesional'], $_POST['Domicilio'])) {
         $model->setAttributes($_POST['Profesional']);
         $model->idlocalidad = isset($_POST['Localidad']['idlocalidad']) ? $_POST['Localidad']['idlocalidad'] : null;
         $model_domicilio->setAttributes($_POST['Domicilio']);
         $model_domicilio->iddomiciliotipo = Domiciliotipo::PARTICULAR;
         try {
             $transac = Yii::app()->db->beginTransaction();
             // si se carga conyuge, este modelo es opcional en el formulario
             if (strlen($_POST['Conyuge']['apellido']) != 0) {
                 $model_conyuge->setAttributes($_POST['Conyuge']);
                 if ($model_conyuge->save()) {
                     $model->idconyuge = $model_conyuge->idconyuge;
                 } else {
                     throw new Exception("Hubo un error al grabar datos del Cónyuge");
                 }
             }
             if ($model->validate() && $model_domicilio->validate()) {
                 // estos dos modelos del formulario son obligatorios
                 // si se cargan datos impositivos
                 if (strlen($_POST['Datoimpositivo']['cuit']) != 0) {
                     $model_datoimpositivo->setAttributes($_POST['Datoimpositivo']);
                     if ($model_datoimpositivo->save()) {
                         $model->iddatoimpositivo = $model_datoimpositivo->iddatoimpositivo;
                     } else {
                         throw new Exception("Hubo un error al grabar datos impositivos del Profesional");
                     }
                 }
                 if ($model->save(false)) {
                     $model_domicilio->identidad = $model->identidad;
                 } else {
                     throw new Exception("Hubo un error al grabar datos del Profesional");
                 }
                 if (!$model_domicilio->save(false)) {
                     throw new Exception("Hubo un error al grabar datos del Domicilio");
                 }
                 $transac->commit();
                 // segun boton de grabar o agregar domicilios
                 if (isset($_POST['savebutton'])) {
                     $this->redirect(array('manageProfesional'));
                 } else {
                     // se usó boton domicilio, se redirige  a la vista update para cargar domicilios
                     $this->redirect(array('updateProfesional', 'id' => $model->identidad, "opendialog" => true));
                     // redirecciona a update para permitir cargar contactos
                 }
             }
         } catch (Exception $e) {
             $transac->rollback();
             $model->addError('', $e->getMessage());
         }
     }
     $this->render('create_profesional', array('model' => $model, 'model_conyuge' => $model_conyuge, 'model_domicilio' => $model_domicilio, 'model_domicilioprofesional' => $model_domicilioprofesional, 'model_datoimpositivo' => $model_datoimpositivo, 'model_contacto' => $model_contacto, 'modellocalidad' => $modellocalidad, 'opendialog' => false));
 }