/**
  * 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]);
 }