Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

144 lines
4.7KB

  1. <?php
  2. namespace backend\controllers;
  3. use Yii;
  4. use common\models\Production;
  5. use yii\filters\AccessControl;
  6. use yii\web\Controller;
  7. use common\models\LoginForm;
  8. use yii\filters\VerbFilter;
  9. use common\models\Commande;
  10. use common\models\CommandeProduit;
  11. use common\models\PointVente;
  12. use common\models\Produit;
  13. use common\models\User;
  14. use common\models\CommandeAutoForm ;
  15. use common\models\ProductionProduit;
  16. use yii\data\ActiveDataProvider;
  17. use common\models\CommandeAuto ;
  18. use common\models\CommandeAutoProduit ;
  19. use yii\web\NotFoundHttpException;
  20. class CommandeautoController extends BackendController {
  21. var $enableCsrfValidation = false;
  22. public function behaviors()
  23. {
  24. return [
  25. 'access' => [
  26. 'class' => AccessControl::className(),
  27. 'rules' => [
  28. [
  29. 'allow' => true,
  30. 'roles' => ['@'],
  31. 'matchCallback' => function ($rule, $action) {
  32. return Yii::$app->user->identity->status == USER::STATUS_ADMIN
  33. || Yii::$app->user->identity->status == USER::STATUS_BOULANGER;
  34. }
  35. ]
  36. ],
  37. ],
  38. ];
  39. }
  40. public function actionIndex()
  41. {
  42. $dataProvider = new ActiveDataProvider([
  43. 'query' => CommandeAuto::find()
  44. ->with('user', 'etablissement', 'pointVente','commandeAutoProduit')
  45. ->where(['id_etablissement'=>Yii::$app->user->identity->id_etablissement]),
  46. 'pagination' => [
  47. 'pageSize' => 1000,
  48. ],
  49. ]);
  50. return $this->render('index',[
  51. 'dataProvider' => $dataProvider
  52. ]) ;
  53. }
  54. public function actionCreate()
  55. {
  56. // form
  57. $model = new CommandeAutoForm ;
  58. $model->id_etablissement = Yii::$app->user->identity->id_etablissement ;
  59. // produits
  60. $produits = Produit::find()
  61. ->where(['id_etablissement' => $model->id_etablissement])
  62. ->orderBy('order ASC')
  63. ->all();
  64. if($model->load(Yii::$app->request->post()) && $model->validate() && $model->save())
  65. {
  66. $this->redirect(['commandeauto/index']) ;
  67. }
  68. return $this->render('create',[
  69. 'model' => $model,
  70. 'produits' => $produits
  71. ]) ;
  72. }
  73. public function actionUpdate($id)
  74. {
  75. // form
  76. $model = new CommandeAutoForm ;
  77. $commandeauto = CommandeAuto::findOne($id) ;
  78. if($commandeauto)
  79. {
  80. $model->id = $id ;
  81. $model->id_etablissement = $commandeauto->id_etablissement ;
  82. $model->id_user = $commandeauto->id_user ;
  83. $model->username = $commandeauto->username ;
  84. $model->id_point_vente = $commandeauto->id_point_vente ;
  85. $model->date_debut = date('d/m/Y',strtotime($commandeauto->date_debut)) ;
  86. if(strlen($model->date_fin))
  87. $model->date_fin = date('d/m/Y',strtotime($commandeauto->date_fin)) ;
  88. $model->lundi = $commandeauto->lundi ;
  89. $model->lundi = $commandeauto->lundi ;
  90. $model->mardi = $commandeauto->mardi ;
  91. $model->mercredi = $commandeauto->mercredi ;
  92. $model->jeudi = $commandeauto->jeudi ;
  93. $model->vendredi = $commandeauto->vendredi ;
  94. $model->samedi = $commandeauto->samedi ;
  95. $model->dimanche = $commandeauto->dimanche ;
  96. // produits
  97. $commandeauto_produits = CommandeAutoProduit::find()->where(['id_commande_auto' => $model->id])->all() ;
  98. foreach($commandeauto_produits as $commandeauto_produit)
  99. {
  100. $model->produits['produit_'.$commandeauto_produit->id_produit] = $commandeauto_produit->quantite ;
  101. }
  102. }
  103. else {
  104. throw new NotFoundHttpException('La commande automatique est introuvable.', 404);
  105. }
  106. // produits
  107. $produits = Produit::find()
  108. ->where(['id_etablissement' => $model->id_etablissement])
  109. ->orderBy('order ASC')
  110. ->all();
  111. if($model->load(Yii::$app->request->post()) && $model->validate() && $model->save())
  112. {
  113. $this->redirect(['commandeauto/index']) ;
  114. }
  115. return $this->render('update',[
  116. 'model' => $model,
  117. 'produits' => $produits
  118. ]) ;
  119. }
  120. public function actionDelete($id)
  121. {
  122. CommandeAutoProduit::deleteAll(['id_commande_auto' => $id]) ;
  123. CommandeAuto::findOne($id)->delete() ;
  124. $this->redirect(['commandeauto/index']) ;
  125. }
  126. }