/** * Creates a new Cardapio model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $modelCardapio = new Cardapio(); $modelItemCardapio = new Itemcardapio(); $mensagem = ""; $produtos = ArrayHelper::map(Produto::find()->where(['isInsumo' => 0])->orderBy('nome ASC')->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()) { $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'); $modelCardapio->data = date('Y-m-d'); return $this->render('create', ['modelCardapio' => $modelCardapio, 'modelItemCardapio' => $modelItemCardapio, 'mensagem' => $mensagem, 'produtos' => $produtos]); }