From ff71eeed3b9c1ccb76d72a0d91b0c2211bf34f7d Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 17 Jan 2017 16:29:44 +0200 Subject: [PATCH] -Logs ready --- models/Order.php | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------- views/order/_log_item.php | 10 +++++----- views/order/index.php | 12 +++++++++++- views/order/log.php | 70 ++++++++++++++++++++++++++++++++++++++++------------------------------ views/order/view.php | 15 +++++++++++++-- 5 files changed, 134 insertions(+), 51 deletions(-) diff --git a/models/Order.php b/models/Order.php index 9c6cbf6..67dcb13 100755 --- a/models/Order.php +++ b/models/Order.php @@ -129,24 +129,72 @@ return $result; } + /** + * @param string $attr + * @param array $values + * + * @return array + * Return array in form ['old'=>'old value ...', 'new' => 'new value ...'] + */ public function getLogAttributes(string $attr, array $values) { - $labels = Label::find()->with('lang')->indexBy('id')->all(); if ($attr == 'deadline') { return [ - 'old' => empty($values['old']) ? '' : date('d.m.Y', $values['old']), - 'new' => empty($values['new']) ? '' : date('d.m.Y', $values['new']), + 'old' => empty($values[ 'old' ]) ? '' : date('d.m.Y', $values[ 'old' ]), + 'new' => empty($values[ 'new' ]) ? '' : date('d.m.Y', $values[ 'new' ]), + ]; + } elseif ($attr == 'reason') { + return [ + 'old' => empty($values[ 'old' ]) ? '' : self::REASONS[ $values[ 'old' ] ], + 'new' => empty($values[ 'new' ]) ? '' : self::REASONS[ $values[ 'new' ] ], + ]; + } elseif ($attr == 'label') { + $labels = Label::find() + ->with('lang') + ->indexBy('id') + ->all(); + return [ + 'old' => empty($values[ 'old' ]) ? '' : $labels[ $values[ 'old' ] ]->lang->title, + 'new' => empty($values[ 'new' ]) ? '' : $labels[ $values[ 'new' ] ]->lang->title, ]; - } elseif ($attr = 'reason') { + } elseif ($attr == 'delivery') { + $deliveries = Delivery::find() + ->with('lang') + ->indexBy('id') + ->all(); return [ - 'old' => empty($values['old']) ? '' : self::REASONS[$values['old']], - 'new' => empty($values['new']) ? '' : self::REASONS[$values['new']], + 'old' => empty($values[ 'old' ]) ? '' : $deliveries[ $values[ 'old' ] ]->lang->title, + 'new' => empty($values[ 'new' ]) ? '' : $deliveries[ $values[ 'new' ] ]->lang->title, ]; - } elseif ($attr = 'label') { + } elseif ($attr == 'manager_id') { + $users = User::find() + ->indexBy('id') + ->all(); return [ - 'old' => empty($values['old']) ? '' : $labels[$values['old']]->lang->title, - 'new' => empty($values['new']) ? '' : $labels[$values['new']]->lang->title, + 'old' => empty($values[ 'old' ]) ? '' : $users[ $values[ 'old' ] ]->username, + 'new' => empty($values[ 'new' ]) ? '' : $users[ $values[ 'new' ] ]->username, ]; + } elseif ($attr == 'payment') { + $payment = OrderPayment::find() + ->with('lang') + ->indexBy('id') + ->all(); + return [ + 'old' => empty($values[ 'old' ]) ? '' : $payment[ $values[ 'old' ] ]->lang->title, + 'new' => empty($values[ 'new' ]) ? '' : $payment[ $values[ 'new' ] ]->lang->title, + ]; + } elseif ($attr == 'shipping_by') { + return [ + 'old' => empty($values[ 'old' ]) ? '' : self::SHIPPING_BY[ $values[ 'old' ] ][ 'label' ], + 'new' => empty($values[ 'new' ]) ? '' : self::SHIPPING_BY[ $values[ 'new' ] ][ 'label' ], + ]; + } elseif ($attr == 'pay') { + return [ + 'old' => ($values[ 'old' ] == true) ? 'Оплачен' : 'Не оплачен', + 'new' => ($values[ 'new' ] == true) ? 'Оплачен' : 'Не оплачен', + ]; + } else { + return $values; } } @@ -263,13 +311,17 @@ public function afterSave($insert, $changedAttributes) { +// VarDumper::dump($changedAttributes, 10, true);die(); $data = []; foreach ($changedAttributes as $key => $attribute) { if ($this->oldAttributes[ $key ] != $attribute) { - $data[ $key ] = [ - 'old' => $attribute, - 'new' => $this->oldAttributes[ $key ], - ]; + $data[ $key ] = $this->getLogAttributes( + $key, + [ + 'old' => $attribute, + 'new' => $this->oldAttributes[ $key ], + ] + ); } } diff --git a/views/order/_log_item.php b/views/order/_log_item.php index 8bd37ee..6eca842 100644 --- a/views/order/_log_item.php +++ b/views/order/_log_item.php @@ -12,18 +12,18 @@
  • - +
    formatter->asDatetime($model->created_at) ?> -

    Title

    +

    Пользователь: user->username?>

    - +
    - - + + data) as $key => $item) { diff --git a/views/order/index.php b/views/order/index.php index cae6282..367c9fa 100755 --- a/views/order/index.php +++ b/views/order/index.php @@ -347,7 +347,7 @@ JS; [ 'class' => 'yii\grid\ActionColumn', 'template' => \Yii::$app->user->identity->isAdmin( - ) ? '{view} {update} {delete}' : '{view} {update}', + ) ? '{history} {view} {update} {delete}' : '{view} {update}', 'buttons' => [ 'update' => function($url, $model) { return Html::a( @@ -359,6 +359,16 @@ JS; ] ); }, + 'history' => function($url, $model) { + return Html::a( + Html::tag('span', '', [ 'class' => 'glyphicon glyphicon-time' ]), + ['log', 'id' => $model->id], + [ + 'target' => '_blank', + 'data-pjax' => '0', + ] + ); + }, ], ], ], diff --git a/views/order/log.php b/views/order/log.php index 92e393c..f4c3a37 100755 --- a/views/order/log.php +++ b/views/order/log.php @@ -9,41 +9,51 @@ * @var ActiveDataProvider $logData * @var Order $model */ - + + $this->title = 'История заказа #' . $model->id; + + $this->params[ 'breadcrumbs' ][] = [ + 'url' => yii\helpers\Url::to([ '/ecommerce/order/index' ]), + 'label' => \Yii::t('app', 'Заказы'), + ]; + $this->params[ 'breadcrumbs' ][] = [ + 'url' => yii\helpers\Url::to([ '/ecommerce/order/view', 'id' => $model->id ]), + 'label' => \Yii::t('app', 'Заказ #') . $model->id, + ]; + $this->params[ 'breadcrumbs' ][] = $this->title; + ?>

    История

    - - - -
    -
    +
    + $logData, + 'layout' => '{items}', + 'itemView' => '_log_item', + 'itemOptions' => [ + 'tag' => false, + ], + 'options' => [ + 'tag' => $logData->totalCount == 0 ? 'div' : 'ul', + 'class' => $logData->totalCount == 0 ? 'list-view' : 'list-view timeline', + ], + 'viewParams' => [ + 'order' => $model, + ], + 'emptyText' => 'У этого заказа пока нет истории', + 'emptyTextOptions' => [ + 'class' => 'callout callout-info' + ], + ] + ); + ?> - $logData, - 'layout' => '{items}', - 'itemView' => '_log_item', - 'itemOptions' => [ - 'tag' => false, - ], - 'options' => [ - 'tag' => 'ul', - 'class' => 'list-view timeline', - ], - 'viewParams' => [ - 'order' => $model, - ], - ] - ); - ?> - - -
    -
    -
    +
    + + diff --git a/views/order/view.php b/views/order/view.php index 18cc86f..5b39eae 100755 --- a/views/order/view.php +++ b/views/order/view.php @@ -36,7 +36,15 @@ ], [ 'class' => 'btn btn-primary' ] ) ?> - + + $model->id, + ], + [ 'class' => 'btn bg-orange' ] + ) ?>

    @@ -54,7 +62,10 @@ 'id', 'deadline', 'pay', - 'reason', + [ + 'label' => 'Причина', + 'value' => empty($model->reason) ? '' : Order::REASONS[$model->reason], + ], [ 'label' => 'Статус', 'value' => $model->orderLabel->lang->title, -- libgit2 0.21.4
    ПолеснаСтарое значениеНовое значение