Guest User

Untitled

a guest
Mar 29th, 2020
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.66 KB | None | 0 0
  1. <?php
  2.  
  3. namespace app\controllers;
  4.  
  5. use Yii;
  6. use yii\web\Controller;
  7. use yii\filters\VerbFilter;
  8. use app\models\EntradaProduto;
  9. use app\models\Entrada;
  10. use app\models\Produto;
  11. use app\models\Lote;
  12. use yii\i18n\Formatter;
  13.  
  14. class EntradaController extends Controller {
  15.  
  16.     /**
  17.      * {@inheritdoc}
  18.      */
  19.     public function behaviors() {
  20.         return [
  21.             'verbs'=>[
  22.                 'class'=>VerbFilter::className(),
  23.                 'actions'=>[
  24.                     'delete'=>['POST'],
  25.                 ],
  26.             ],
  27.         ];
  28.     }
  29.  
  30.     /**
  31.      * Renderiza a página index
  32.      * @return type
  33.      */
  34.     public function actionIndex() {
  35.         return $this->render('index');
  36.     }
  37.  
  38.     /**
  39.      * Renderiza a página de cadastro de entradas
  40.      * @return type
  41.      * @todo Refatorar de modo que a função não ultrapasse 20 linhas (boa prática de programação)
  42.      */
  43.     public function actionCreate() {
  44.         $searchModel = new EntradaProduto();
  45.         $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  46.  
  47.  
  48.         if((Yii::$app->request->post())) {
  49.             $aErrosProdutoEntrada = [];
  50.             $aErrosEntrada = [];
  51.             $aErrosLote = [];
  52.            
  53.             $oDados         = Yii::$app->request->post();
  54.             $aDadosProdutos = json_decode($oDados['produtos']);
  55.  
  56.             foreach($aDadosProdutos as $oProduto) {
  57.                 $oLote = new Lote();
  58.                 $oLote->setNextId();
  59.                 $oLote->setAttributes(['lote_validade' => $oProduto->validade, 'lote_descricao' => $oProduto->lote]);
  60.    
  61.                 if($oLote->save()) {
  62.                     $oEntrada = new Entrada();
  63.                     $oEntrada->setNextId();
  64.                     $oEntrada->setAttributes($oDados['Entrada']);
  65.  
  66.                     if($oEntrada->save()) {
  67.                         $aErrosProdutoEntrada = false;
  68.  
  69.                         $oEntradaProduto = new EntradaProduto();
  70.                         $oEntradaProduto->setNextId();
  71.                         $oEntradaProduto->setAttributes(['lote_sequencial'=>$oLote->getAttribute('lote_sequencial'),
  72.                             'entr_sequencial'=>$oEntrada->getAttribute('entr_sequencial'),
  73.                             'entr_prod_quantidade'=>$oProduto->quantidade,
  74.                             'prod_codigo'=>$oProduto->produto
  75.                         ]);
  76.  
  77.                         if($oEntradaProduto->save()) {
  78.                             return $this->render('create', [
  79.                                     'searchModel'=>$searchModel,
  80.                                     'dataProvider'=>$dataProvider
  81.                             ]);
  82.                         }
  83.                         else {
  84.                             $aErrosProdutoEntrada[] = $oEntradaProduto->getErrors();
  85.                             $bErro = true;
  86.                         }
  87.                     }
  88.                     else {
  89.                         $aErrosEntrada[] = $oEntrada->getErrors();
  90.                         $bErro = true;
  91.                     }
  92.                 }
  93.                 else {
  94.                     $aErrosLote[] = $oLote->getErrors();
  95.                     $bErro = true;
  96.                 }
  97.             }
  98.            
  99.             if($bErro){
  100.                 var_dump($aErrosProdutoEntrada);
  101.                 var_dump($aErrosEntrada);
  102.                 var_dump($aErrosLote);
  103.             }
  104.         }
  105.         else {
  106.             return $this->render('create', [
  107.                     'searchModel'=>$searchModel,
  108.                     'dataProvider'=>$dataProvider
  109.             ]);
  110.         }
  111.     }
  112.  
  113. }
Advertisement
Add Comment
Please, Sign In to add comment