/** * Creates a new Itemcardapio model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { if (Yii::$app->user->can("create-itemcardapio") || Yii::$app->user->can("itemcardapio")) { $model = new Itemcardapio(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'idCardapio' => $model->idCardapio, 'idProduto' => $model->idProduto]); } else { return $this->render('create', ['model' => $model]); } } else { throw new ForbiddenHttpException("Acesso negado!"); } }
/** * 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]); }