Commit ce75bc1d5faf2be681e54cf9885b9f1919f0a8e0

Authored by Alexey Boroda
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 15 * @property integer $updated_at
16 16 * @property integer $deleted_at
17 17 * @property integer $deadline
  18 + * @property boolean $wasted
18 19 * @property integer $reason
19 20 * @property string $check
20 21 * @property string $sms
... ... @@ -209,7 +210,7 @@
209 210 */
210 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 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 254 \ No newline at end of file
... ...
views/order/index.php
... ... @@ -7,12 +7,14 @@
7 7  
8 8 use artweb\artbox\ecommerce\models\Delivery;
9 9 use artweb\artbox\ecommerce\models\Label;
  10 + use artweb\artbox\ecommerce\models\Order;
10 11 use artweb\artbox\ecommerce\models\OrderSearch;
11 12 use kartik\daterange\DateRangePicker;
12 13 use kartik\select2\Select2;
13 14 use yii\data\ActiveDataProvider;
14 15 use yii\helpers\Html;
15   - use yii\grid\GridView;
  16 + use kartik\grid\GridView;
  17 + use yii\helpers\StringHelper;
16 18 use yii\helpers\Url;
17 19 use yii\web\View;
18 20 use yii\widgets\ActiveForm;
... ... @@ -60,11 +62,16 @@ JS;
60 62 'model' => $searchModel,
61 63 'attribute' => 'label',
62 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 75 'options' => [ 'placeholder' => 'Select a state ...' ],
69 76 'pluginOptions' => [
70 77 'allowClear' => true,
... ... @@ -94,47 +101,100 @@ JS;
94 101 );
95 102 ?>
96 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 198 </p>
139 199 <?php
140 200 ActiveForm::end();
... ...