/**
  * Updates an existing Compra model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $modelCompra = $this->findModel($id);
     $conta = Conta::findOne($modelCompra->idconta);
     $mensagem = "";
     //Informa ao usuário mensagens de erro na view
     $compraProduto = new Compraproduto();
     $produtos = ArrayHelper::map(Produto::find()->where(['isInsumo' => 1])->orderBy('nome ASC')->all(), 'idProduto', 'nome');
     $produtosDaCompras = Compraproduto::find()->where(['idCompra' => $id])->all();
     //Recebe o valor total da compra
     $valorTotalDaCompra = 0;
     $novoProduto = new Produto();
     $produtosValorAlterado = [];
     $arrayFinal = [];
     $arrayIds = [];
     if (Yii::$app->request->post()) {
         $itensInseridos = true;
         //Inicia a transação:
         $transaction = \Yii::$app->db->beginTransaction();
         //            try {
         $compraProdutoAux = Yii::$app->request->post()['Compraproduto'];
         $compraProdutos = Compraproduto::find()->where(['idCompra' => $id])->all();
         if (count($compraProdutos) > 0) {
             foreach ($compraProdutos as $cp) {
                 $cp->delete();
             }
         }
         for ($i = 0; $i < count($compraProdutoAux['idProduto']); $i++) {
             $cp = new Compraproduto();
             $cp->idCompra = $id;
             $cp->idProduto = $compraProdutoAux['idProduto'][$i];
             $cp->quantidade = $compraProdutoAux['quantidade'][$i];
             $cp->valorCompra = Yii::$app->request->post()['compraproduto-valorcompra-disp'][$i];
             if ($cp->comparaPrecoProduto($cp)) {
                 $lp = $novoProduto->getListaInsumos($cp->idProduto);
                 foreach ($lp as $key) {
                     $produto = Yii::$app->db->createCommand('SELECT idProduto, nome FROM produto WHERE idProduto = :id ', ['id' => $key['idprodutoVenda']])->queryOne();
                     array_push($produtosValorAlterado, $produto);
                 }
             }
             for ($j = 0; $j < count($produtosValorAlterado); $j++) {
                 array_push($arrayIds, $produtosValorAlterado[$j]['idProduto']);
             }
             if (!$cp->save(false)) {
                 $mensagem = "Não foi possível salvar os dados de algum";
                 $transaction->rollBack();
                 //desfaz alterações no BD
                 $itensInseridos = false;
                 break;
                 //encerra o laço for
             } else {
                 $valorTotalDaCompra += floatval($cp->valorCompra);
             }
         }
         $arrayIds = array_unique($arrayIds);
         foreach ($arrayIds as $idProduto) {
             $produto = Yii::$app->db->createCommand('SELECT idProduto, nome FROM produto WHERE idProduto = :id ', ['id' => $idProduto])->queryOne();
             array_push($arrayFinal, $produto);
         }
         $modelCompra->valor = $valorTotalDaCompra;
         if (!$modelCompra->save(false)) {
             $mensagem = "Não foi possível salvar os dados ";
             $transaction->rollBack();
             //desfaz alterações no BD
             $itensInseridos = false;
         } else {
             $conta->valor = $modelCompra->valor;
             if (!$conta->save(false)) {
                 $mensagem = "Não foi possível salvar os dados ";
                 $transaction->rollBack();
                 //desfaz alterações no BD
                 $itensInseridos = false;
             }
         }
         if ($itensInseridos) {
             $transaction->commit();
             return $this->redirect(['view', 'id' => $modelCompra->idconta, 'produtosValorAlterado' => $arrayFinal]);
         }
         /*} catch (\Exception $exception) {
               $transaction->rollBack();
               $mensagem = "Ocorreu uma falha inesperada ao tentar salvar ";
           }*/
     }
     return $this->render('update', ['modelCompra' => $modelCompra, 'compraProduto' => $compraProduto, 'produtos' => $produtos, 'produtosDaCompras' => $produtosDaCompras, 'mensagem' => $mensagem]);
 }