Commit ce75bc1d5faf2be681e54cf9885b9f1919f0a8e0
1 parent
ccfc5763
-Grid view half way done
Showing
2 changed files
with
121 additions
and
47 deletions
Show diff stats
models/Order.php
| @@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
| 15 | * @property integer $updated_at | 15 | * @property integer $updated_at |
| 16 | * @property integer $deleted_at | 16 | * @property integer $deleted_at |
| 17 | * @property integer $deadline | 17 | * @property integer $deadline |
| 18 | + * @property boolean $wasted | ||
| 18 | * @property integer $reason | 19 | * @property integer $reason |
| 19 | * @property string $check | 20 | * @property string $check |
| 20 | * @property string $sms | 21 | * @property string $sms |
| @@ -209,7 +210,7 @@ | @@ -209,7 +210,7 @@ | ||
| 209 | */ | 210 | */ |
| 210 | public function getOrderLabel() | 211 | public function getOrderLabel() |
| 211 | { | 212 | { |
| 212 | - return $this->hasOne(Label::className(), [ 'id' => 'status' ]); | 213 | + return $this->hasOne(Label::className(), [ 'id' => 'label' ]); |
| 213 | } | 214 | } |
| 214 | 215 | ||
| 215 | /** | 216 | /** |
| @@ -235,5 +236,18 @@ | @@ -235,5 +236,18 @@ | ||
| 235 | return ''; | 236 | return ''; |
| 236 | } | 237 | } |
| 237 | } | 238 | } |
| 238 | - | 239 | + |
| 240 | + /** | ||
| 241 | + * If deadline is fucked up returns true, | ||
| 242 | + * if deadline is not setted return false, like everything is ok | ||
| 243 | + * @return bool | ||
| 244 | + */ | ||
| 245 | + public function getWasted() | ||
| 246 | + { | ||
| 247 | + if (empty($this->deadline)) { | ||
| 248 | + return false; | ||
| 249 | + } else { | ||
| 250 | + return time() > $this->deadline; | ||
| 251 | + } | ||
| 252 | + } | ||
| 239 | } | 253 | } |
| 240 | \ No newline at end of file | 254 | \ No newline at end of file |
views/order/index.php
| @@ -7,12 +7,14 @@ | @@ -7,12 +7,14 @@ | ||
| 7 | 7 | ||
| 8 | use artweb\artbox\ecommerce\models\Delivery; | 8 | use artweb\artbox\ecommerce\models\Delivery; |
| 9 | use artweb\artbox\ecommerce\models\Label; | 9 | use artweb\artbox\ecommerce\models\Label; |
| 10 | + use artweb\artbox\ecommerce\models\Order; | ||
| 10 | use artweb\artbox\ecommerce\models\OrderSearch; | 11 | use artweb\artbox\ecommerce\models\OrderSearch; |
| 11 | use kartik\daterange\DateRangePicker; | 12 | use kartik\daterange\DateRangePicker; |
| 12 | use kartik\select2\Select2; | 13 | use kartik\select2\Select2; |
| 13 | use yii\data\ActiveDataProvider; | 14 | use yii\data\ActiveDataProvider; |
| 14 | use yii\helpers\Html; | 15 | use yii\helpers\Html; |
| 15 | - use yii\grid\GridView; | 16 | + use kartik\grid\GridView; |
| 17 | + use yii\helpers\StringHelper; | ||
| 16 | use yii\helpers\Url; | 18 | use yii\helpers\Url; |
| 17 | use yii\web\View; | 19 | use yii\web\View; |
| 18 | use yii\widgets\ActiveForm; | 20 | use yii\widgets\ActiveForm; |
| @@ -60,11 +62,16 @@ JS; | @@ -60,11 +62,16 @@ JS; | ||
| 60 | 'model' => $searchModel, | 62 | 'model' => $searchModel, |
| 61 | 'attribute' => 'label', | 63 | 'attribute' => 'label', |
| 62 | 'data' => Label::find() | 64 | 'data' => Label::find() |
| 63 | - ->joinWith('lang') | ||
| 64 | - ->select(['CONCAT(order_label.label,order_label_lang.title) AS name', 'id']) | ||
| 65 | - ->indexBy('id') | ||
| 66 | - ->asArray() | ||
| 67 | - ->column(), | 65 | + ->joinWith('lang') |
| 66 | + ->select( | ||
| 67 | + [ | ||
| 68 | + 'CONCAT(order_label.label,order_label_lang.title) AS name', | ||
| 69 | + 'id', | ||
| 70 | + ] | ||
| 71 | + ) | ||
| 72 | + ->indexBy('id') | ||
| 73 | + ->asArray() | ||
| 74 | + ->column(), | ||
| 68 | 'options' => [ 'placeholder' => 'Select a state ...' ], | 75 | 'options' => [ 'placeholder' => 'Select a state ...' ], |
| 69 | 'pluginOptions' => [ | 76 | 'pluginOptions' => [ |
| 70 | 'allowClear' => true, | 77 | 'allowClear' => true, |
| @@ -94,47 +101,100 @@ JS; | @@ -94,47 +101,100 @@ JS; | ||
| 94 | ); | 101 | ); |
| 95 | ?> | 102 | ?> |
| 96 | <p> | 103 | <p> |
| 97 | -<?php | ||
| 98 | - echo GridView::widget( | ||
| 99 | - [ | ||
| 100 | - 'dataProvider' => $dataProvider, | ||
| 101 | - 'filterModel' => $searchModel, | ||
| 102 | - 'columns' => [ | ||
| 103 | - [ | ||
| 104 | - 'attribute' => 'id', | ||
| 105 | - 'filter' => $searchForm->field($searchModel, 'id') | ||
| 106 | - ->textInput(), | ||
| 107 | - ], | ||
| 108 | - [ | ||
| 109 | - 'attribute' => 'created_at', | ||
| 110 | - 'format' => 'date', | ||
| 111 | - 'filter' => $searchForm->field($searchModel, 'date_range') | ||
| 112 | - ->widget( | ||
| 113 | - DateRangePicker::className(), | ||
| 114 | - [ | ||
| 115 | - 'convertFormat' => false, | ||
| 116 | - 'pluginOptions' => [ | ||
| 117 | - 'locale' => [ | ||
| 118 | - 'format' => 'D-M-Y', | ||
| 119 | - 'separator' => ' to ', | 104 | + <?php |
| 105 | + echo GridView::widget( | ||
| 106 | + [ | ||
| 107 | + 'dataProvider' => $dataProvider, | ||
| 108 | + 'filterModel' => $searchModel, | ||
| 109 | + 'rowOptions' => function($model) { | ||
| 110 | + if ($model->wasted) { | ||
| 111 | + return [ 'class' => 'danger' ]; | ||
| 112 | + } else { | ||
| 113 | + return []; | ||
| 114 | + } | ||
| 115 | + }, | ||
| 116 | + 'columns' => [ | ||
| 117 | + [ | ||
| 118 | + 'attribute' => 'id', | ||
| 119 | + 'filter' => $searchForm->field($searchModel, 'id') | ||
| 120 | + ->textInput(), | ||
| 121 | + ], | ||
| 122 | + [ | ||
| 123 | + 'attribute' => 'created_at', | ||
| 124 | + 'format' => 'date', | ||
| 125 | + 'filter' => $searchForm->field($searchModel, 'date_range') | ||
| 126 | + ->widget( | ||
| 127 | + DateRangePicker::className(), | ||
| 128 | + [ | ||
| 129 | + 'convertFormat' => false, | ||
| 130 | + 'pluginOptions' => [ | ||
| 131 | + 'locale' => [ | ||
| 132 | + 'format' => 'D-M-Y', | ||
| 133 | + 'separator' => ' to ', | ||
| 134 | + ], | ||
| 135 | + 'opens' => 'left', | ||
| 120 | ], | 136 | ], |
| 121 | - 'opens' => 'left', | ||
| 122 | - ], | ||
| 123 | - ] | ||
| 124 | - ) | ||
| 125 | - ->label(false) | ||
| 126 | - ->render(), | ||
| 127 | - ], | ||
| 128 | - 'name', | ||
| 129 | - 'phone', | ||
| 130 | - 'status', | ||
| 131 | - [ | ||
| 132 | - 'class' => 'yii\grid\ActionColumn', | 137 | + ] |
| 138 | + ) | ||
| 139 | + ->label(false) | ||
| 140 | + ->render(), | ||
| 141 | + ], | ||
| 142 | + [ | ||
| 143 | + 'attribute' => 'deadline', | ||
| 144 | + 'content' => function($model) { | ||
| 145 | + if ($model->deadline == ''){ | ||
| 146 | + return ''; | ||
| 147 | + } else { | ||
| 148 | + return \Yii::$app->formatter->asDate($model->deadline); | ||
| 149 | + } | ||
| 150 | + } | ||
| 151 | + ], | ||
| 152 | + 'name', | ||
| 153 | + 'total', | ||
| 154 | + [ | ||
| 155 | + 'attribute' => 'pay', | ||
| 156 | + 'content' => function($model) { | ||
| 157 | + if ($model->pay == false) { | ||
| 158 | + return '<span class="glyphicon glyphicon-remove"></span>'; | ||
| 159 | + } else { | ||
| 160 | + return '<span class="glyphicon glyphicon-ok"></span>'; | ||
| 161 | + } | ||
| 162 | + }, | ||
| 163 | + ], | ||
| 164 | + 'phone', | ||
| 165 | + 'adress', | ||
| 166 | + [ | ||
| 167 | + 'attribute' => 'label', | ||
| 168 | + 'value' => function($model) { | ||
| 169 | + /** | ||
| 170 | + * @var Order $modl | ||
| 171 | + */ | ||
| 172 | + if (empty( $model->orderLabel )) { | ||
| 173 | + return '--'; | ||
| 174 | + } else { | ||
| 175 | + return $model->orderLabel->label; | ||
| 176 | + } | ||
| 177 | + }, | ||
| 178 | + ], | ||
| 179 | + | ||
| 180 | + [ | ||
| 181 | + 'attribute' => 'body', | ||
| 182 | + 'content' => function($model) { | ||
| 183 | + if (!empty( $model->body )) { | ||
| 184 | + return StringHelper::truncate($model->body, 8, '...'); | ||
| 185 | + } else { | ||
| 186 | + return ''; | ||
| 187 | + } | ||
| 188 | + }, | ||
| 189 | + ], | ||
| 190 | + 'sms', | ||
| 191 | + [ | ||
| 192 | + 'class' => 'yii\grid\ActionColumn', | ||
| 193 | + ], | ||
| 133 | ], | 194 | ], |
| 134 | - ], | ||
| 135 | - ] | ||
| 136 | - ); | ||
| 137 | -?> | 195 | + ] |
| 196 | + ); | ||
| 197 | + ?> | ||
| 138 | </p> | 198 | </p> |
| 139 | <?php | 199 | <?php |
| 140 | ActiveForm::end(); | 200 | ActiveForm::end(); |