/**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Itemcardapio::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['idCardapio' => $this->idCardapio, 'idProduto' => $this->idProduto, 'status' => $this->status, 'ordem' => $this->ordem]);
     return $dataProvider;
 }
 /**
  * Updates an existing Cardapio model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $modelCardapio = $this->findModel($id);
     $modelItemCardapio = new Itemcardapio();
     $mensagem = "";
     $itensCardapio = Itemcardapio::find()->where(['idCardapio' => $id])->orderBy('ordem ASC')->all();
     $produtos = ArrayHelper::map(Produto::find()->where(['isInsumo' => 0])->all(), 'idProduto', 'nome');
     if ($modelCardapio->load(Yii::$app->request->post())) {
         //Inicia a transação:
         $transaction = \Yii::$app->db->beginTransaction();
         try {
             $itensInseridos = true;
             if ($modelCardapio->save()) {
                 if (Itemcardapio::deleteAll(['idCardapio' => $id]) > 0) {
                     $itensCardapio = Yii::$app->request->post()['Itemcardapio'];
                     for ($i = 0; $i < count($itensCardapio['idProduto']); $i++) {
                         $itemCardapio = new Itemcardapio();
                         $itemCardapio->idCardapio = $modelCardapio->idCardapio;
                         $itemCardapio->idProduto = $itensCardapio['idProduto'][$i];
                         $itemCardapio->ordem = $itensCardapio['ordem'][$i];
                         if (!$itemCardapio->save()) {
                             $itensInseridos = false;
                         }
                     }
                     if ($itensInseridos) {
                         $transaction->commit();
                         return $this->redirect(['view', 'id' => $modelCardapio->idCardapio]);
                     } else {
                         $mensagem = "Não foi possível salvar os dados";
                         $transaction->rollBack();
                         //desfaz alterações no BD
                     }
                 }
             }
         } catch (\Exception $exception) {
             $transaction->rollBack();
             $mensagem = "Ocorreu uma falha inesperada ao tentar salvar";
         }
     }
     //Seta o fuso horário brasileiro
     date_default_timezone_set('America/Sao_Paulo');
     return $this->render('update', ['modelCardapio' => $modelCardapio, 'modelItemCardapio' => $modelItemCardapio, 'mensagem' => $mensagem, 'itensCardapio' => $itensCardapio, 'produtos' => $produtos]);
 }
 /**
  * Finds the Itemcardapio model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $idCardapio
  * @param integer $idProduto
  * @return Itemcardapio the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($idCardapio, $idProduto)
 {
     if (($model = Itemcardapio::findOne(['idCardapio' => $idCardapio, 'idProduto' => $idProduto])) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Ejemplo n.º 4
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getItemcardapios()
 {
     return $this->hasMany(Itemcardapio::className(), ['idProduto' => 'idProduto']);
 }