コード例 #1
0
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function actionUpdate($id)
 {
     $model = $this->loadModel($id);
     $modelIM = new ItensMultimidia();
     $modelSU = new Status();
     $modelSN = new StatusNegocios();
     /* Pega o usuario_id através do id itens da tabela itensTroca */
     $modelItens = Itens::model()->find(array('select' => '*', 'condition' => 'itens_id=:itens_id', 'params' => array(':itens_id' => $model->itens_id)));
     $modelSU2 = StatusNegocios::model()->findAll(array('select' => '*', 'condition' => 'itens_id=:itens_id', 'params' => array(':itens_id' => $id)));
     $sts_selected = array();
     foreach ($modelSU2 as $values) {
         $sts_selected[$values->status_id] = $values->status_id;
     }
     $modelIM2 = ItensMultimidia::model()->find(array('select' => '*', 'condition' => 'itens_id=:itens_id', 'params' => array(':itens_id' => $id), 'order' => 'itens_multimidia_id DESC'));
     // Uncomment the following line if AJAX validation is needed
     $this->performAjaxValidation($model);
     if (isset($_POST['Itens'])) {
         $model->attributes = $_POST['Itens'];
         $modelIM->attributes = $_POST['ItensMultimidia'];
         $modelIM->itens_multimidia_caminho = CUploadedFile::getInstance($modelIM, 'itens_multimidia_caminho');
         $sts_selected_form = array();
         if (isset($_POST['Status'])) {
             //$sts_selected_form=$_POST['Status'];
             if (isset($_POST['Status']) && !empty($_POST['Status'])) {
                 foreach ($_POST['Status'] as $key => $values) {
                     if (!empty($values)) {
                         foreach ($values as $values2) {
                             $sts_selected_form[$values2] = $values2;
                         }
                     }
                 }
             }
         }
         //print_r($sts_selected).'<br>';
         //print_r($sts_selected_form).'<br>'; exit;
         /* Compara o array do status do banco com os status do form e retorna a diferença */
         $diff_sts = array_diff_assoc($sts_selected, $sts_selected_form);
         if (count($diff_sts) > 0) {
             $sts_del = implode(",", $diff_sts);
             /* Exclui os que não vieram no form */
             $cri = new CDbCriteria();
             $cri->condition = "itens_id='{$id}' AND status_id in({$sts_del})";
             StatusNegocios::model()->deleteAll($cri);
         }
         /* Compara o array do status do form com os status do banco e retorna. Se retornar um novo registro a inserir */
         $diff_sts2 = array_diff_assoc($sts_selected_form, $sts_selected);
         foreach ($diff_sts2 as $values) {
             $modelSN = new StatusNegocios();
             $modelSN->itens_id = $id;
             $modelSN->status_id = $values;
             $modelSN->save();
         }
         $model->itens_dt_modificacao = new CDbExpression('NOW()');
         $transaction = Yii::app()->db->beginTransaction();
         try {
             $itens_precos = "";
             $itens_receita_anual = "";
             $itens_ebitda = "";
             $itens_resultado_operacional = "";
             $itens_fluxo_de_caixa = "";
             for ($i = 2; $i <= 5; $i++) {
                 $i_preco = $_POST['Itens']['itens_preco_' . $i];
                 $i_receita_anual = $_POST['Itens']['itens_receita_anual_' . $i];
                 $i_ebitda = $_POST['Itens']['itens_ebitda_' . $i];
                 $i_resultado_operacional = $_POST['Itens']['itens_resultado_operacional_' . $i];
                 $i_fluxo_de_caixa = $_POST['Itens']['itens_fluxo_de_caixa_' . $i];
                 if (!empty($i_preco)) {
                     $itens_precos .= $i_preco . ";";
                 }
                 if (!empty($i_receita_anual)) {
                     $itens_receita_anual .= $i_receita_anual . ";";
                 }
                 if (!empty($i_ebitda)) {
                     $itens_ebitda .= $i_ebitda . ";";
                 }
                 if (!empty($i_resultado_operacional)) {
                     $itens_resultado_operacional .= $i_resultado_operacional . ";";
                 }
                 if (!empty($i_fluxo_de_caixa)) {
                     $itens_fluxo_de_caixa .= $i_fluxo_de_caixa . ";";
                 }
             }
             $model->itens_preco .= ";" . $itens_precos;
             $model->itens_receita_anual .= ";" . $itens_receita_anual;
             $model->itens_ebitda .= ";" . $itens_ebitda;
             $model->itens_resultado_operacional .= ";" . $itens_resultado_operacional;
             $model->itens_fluxo_de_caixa .= ";" . $itens_fluxo_de_caixa;
             if ($model->save()) {
                 //Yii::app()->upload->atualizar($model, Yii::app()->params['uploadPath'] . DIRECTORY_SEPARATOR . Yii::app()->params['uploadPathMultimidiaItens']);
                 $model2 = Itens::model()->findByPk($model->itens_id);
                 if (isset($_POST['ItensMultimidia']) && !empty($_FILES['ItensMultimidia']['name']['itens_multimidia_caminho'])) {
                     $seq_rand = md5(date("Ymd h:i:s")) . rand(5, 15);
                     $nm = $seq_rand . "." . $model->extensionImg($modelIM->itens_multimidia_caminho->type);
                     $nm_thumb = $seq_rand . "_." . $model->extensionImg($modelIM->itens_multimidia_caminho->type);
                     $caminho = Yii::app()->params['uploadPath'] . DIRECTORY_SEPARATOR . Yii::app()->params['uploadPathMultimidiaItens'];
                     $file = $caminho . $model->itens_id . DIRECTORY_SEPARATOR . $nm;
                     $file_thumb = $caminho . $model->itens_id . DIRECTORY_SEPARATOR . $nm_thumb;
                     if (!is_dir($caminho . $model->itens_id)) {
                         mkdir($caminho . $model->itens_id);
                     }
                     $modelIM->itens_id = $model2->itens_id;
                     $modelIM->itens_multimidia_caminho->saveAs($caminho . $model->itens_id . DIRECTORY_SEPARATOR . $nm, true);
                     $modelIM->itens_multimidia_caminho = $nm;
                     $modelIM->save();
                     //Yii::app()->canvas->carrega($file)->redimensiona( 242, 202, 'crop' )->grava($file);
                     //Yii::app()->canvas->carrega($file)->redimensiona( 96, 80, 'crop' )->grava($file_thumb);
                     Yii::app()->canvas->carrega($file)->redimensiona(242, 202, '')->grava($file);
                     Yii::app()->canvas->carrega($file)->redimensiona(96, 80, '')->grava($file_thumb);
                 }
                 $transaction->commit();
                 $this->redirect(array('admin'));
             }
         } catch (CDbException $e) {
             $transaction->rollback();
             $model->addError(null, $e->getMessage());
         }
     }
     $this->render('update', array('model' => $model, 'modelIM' => $modelIM, 'modelIM2' => $modelIM2, 'modelSU' => $modelSU, 'sts_selected' => $sts_selected, 'modelSN' => $modelSN));
 }