Beispiel #1
0
 public function updatePregunta($model)
 {
     $modelRespuestaExamen = $model->respuestaExamens;
     $oldIDs = ArrayHelper::map($modelRespuestaExamen, 'id', 'id');
     $modelRespuestaExamen = DynamicFormModel::createMultiple(RespuestaExamen::classname(), $modelRespuestaExamen);
     DynamicFormModel::loadMultiple($modelRespuestaExamen, Yii::$app->request->post());
     $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelRespuestaExamen, 'id', 'id')));
     if ($model->validate() && DynamicFormModel::validateMultiple($modelRespuestaExamen)) {
         $transaction = Yii::$app->db->beginTransaction();
         try {
             $model->file = UploadedFile::getInstance($model, 'file');
             if ($model->file != NULL) {
                 $this->getImagePregunta($model);
             }
             if ($model->save(false)) {
                 if ($model->file != NULL) {
                     $model->file->saveAs($model->imagen);
                 }
                 //                    if (! empty($deletedIDs)) {
                 //                        RespuestaExamen::deleteAll(['id' => $deletedIDs]);
                 //                    }
                 foreach ($modelRespuestaExamen as $i => $modelRespuestaExamen) {
                     $modelRespuestaExamen->imgfile = UploadedFile::getInstance($modelRespuestaExamen, "[{$i}]imgfile");
                     if ($modelRespuestaExamen->imgfile != NULL) {
                         $this->getImageRespuesta($modelRespuestaExamen);
                     }
                     if (!($flag = $modelRespuestaExamen->save(false))) {
                         $transaction->rollBack();
                         return false;
                     }
                     $modelRespuestaExamen->link('idPregunta', $model);
                     if ($modelRespuestaExamen->imgfile != NULL) {
                         $modelRespuestaExamen->imgfile->saveAs($modelRespuestaExamen->imagen);
                     }
                 }
             }
             $transaction->commit();
             return true;
         } catch (Exception $e) {
             print_r($e);
             $transaction->rollBack();
             return false;
         }
     } else {
         return false;
     }
 }