add coronavirus activate/inactivate
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace frontend\controllers;
|
||||
|
||||
use backend\models\CustomerActivateForm;
|
||||
use frontend\models\SingleCustomerActivateForm;
|
||||
use frontend\models\TowelForm;
|
||||
use Yii;
|
||||
use common\models\Customer;
|
||||
@@ -35,7 +37,7 @@ class CustomerController extends Controller
|
||||
],
|
||||
'access' => [
|
||||
'class' => \yii\filters\AccessControl::className(),
|
||||
'only' => ['create', 'update','reception','contract','towel'],
|
||||
'only' => ['create', 'update','reception','contract','towel','activate'],
|
||||
'rules' => [
|
||||
// allow authenticated users
|
||||
[
|
||||
@@ -49,6 +51,23 @@ class CustomerController extends Controller
|
||||
];
|
||||
}
|
||||
|
||||
public function actionActivate($number = "")
|
||||
{
|
||||
$model = new ReceptionForm();
|
||||
$model->number = $number;
|
||||
$model->readCard();
|
||||
|
||||
$form = new SingleCustomerActivateForm( );
|
||||
$form->number = $number;
|
||||
$form->validate();
|
||||
$ticketsDataProvider = $form->loadTicketsDataProvider();
|
||||
|
||||
if (\Yii::$app->request->isPost && $form->activate()) {
|
||||
return $this->redirect(['customer/activate', 'number' => $number]);
|
||||
}
|
||||
return $this->render('activate', ['model' => $model, 'formModel' => $form, 'ticketsDataProvider' => $ticketsDataProvider]);
|
||||
}
|
||||
|
||||
public function actionReception($number = ""){
|
||||
$model = new ReceptionForm();
|
||||
|
||||
|
||||
134
frontend/models/SingleCustomerActivateForm.php
Normal file
134
frontend/models/SingleCustomerActivateForm.php
Normal file
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace frontend\models;
|
||||
|
||||
|
||||
use common\models\Card;
|
||||
use common\models\Ticket;
|
||||
use Yii;
|
||||
use yii\base\Model;
|
||||
use yii\data\ArrayDataProvider;
|
||||
use yii\db\Query;
|
||||
|
||||
/**
|
||||
* Class SingleCustomerActivateForm
|
||||
* @package backend\models
|
||||
*
|
||||
* @property Card $card
|
||||
*
|
||||
*/
|
||||
class SingleCustomerActivateForm extends Model{
|
||||
|
||||
public $message ;
|
||||
public $number ;
|
||||
public $card;
|
||||
public $tickets;
|
||||
public $daysPassed;
|
||||
|
||||
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['number'], 'required'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function loadTicketsToActivate(){
|
||||
$this->card = Card::readCard($this->number);
|
||||
|
||||
$query = new Query();
|
||||
|
||||
$this->daysPassed = $query
|
||||
->select(
|
||||
[
|
||||
'datediff(current_date, card.inactivated_at ) '
|
||||
]
|
||||
)
|
||||
->from(Card::tableName())
|
||||
->andWhere(['id_card' => $this->card->id_card])
|
||||
->scalar();
|
||||
|
||||
$query = new Query();
|
||||
$this->tickets = $query
|
||||
->select(
|
||||
[
|
||||
'ticket.id_ticket as id_ticket',
|
||||
'ticket.start as start',
|
||||
'ticket.end as end',
|
||||
'ticket.created_at as created_at',
|
||||
'ticket.usage_count as usage_count',
|
||||
'ticket.max_usage_count as max_usage_count',
|
||||
'date_add( ticket.end, INTERVAL datediff(current_date, card.inactivated_at) DAY ) as end2'
|
||||
]
|
||||
)
|
||||
->from(Ticket::tableName())
|
||||
->innerJoin(Card::tableName(), 'card.id_card = ticket.id_card')
|
||||
->andWhere(['ticket.id_card' => $this->card->id_card])
|
||||
->andWhere(
|
||||
['or',
|
||||
['and',
|
||||
['<=','ticket.start',$this->card->inactivated_at ],
|
||||
['>=','ticket.end',$this->card->inactivated_at ]
|
||||
],
|
||||
['>=','ticket.start',$this->card->inactivated_at ],
|
||||
]
|
||||
)
|
||||
->orderBy(
|
||||
[
|
||||
'ticket.start' => SORT_DESC
|
||||
]
|
||||
)
|
||||
->all();
|
||||
|
||||
}
|
||||
|
||||
public function loadTicketsDataProvider()
|
||||
{
|
||||
$this->loadTicketsToActivate();
|
||||
return new ArrayDataProvider(
|
||||
[
|
||||
'allModels' => $this->tickets,
|
||||
'sort' => false,
|
||||
'pagination' => false
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function activate()
|
||||
{
|
||||
if (!$this->validate()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$tx = \Yii::$app->db->beginTransaction();
|
||||
assert(isset($tx));
|
||||
try {
|
||||
|
||||
Yii::$app->db->createCommand(Ticket::$SQL_UPDATE_TICKETS_END_DATE_ON_CARD_ACTIVATION
|
||||
. " AND id_card = '" . $this->card->id_card . "'")->execute();
|
||||
Card::updateAll(
|
||||
[
|
||||
'status' => Card::STATUS_ACTIVE,
|
||||
],
|
||||
[
|
||||
'status' => Card::STATUS_INACTIVE,
|
||||
'id_card' => $this->card->id_card
|
||||
]
|
||||
);
|
||||
Card::updateFlagStatus();
|
||||
$tx->commit();
|
||||
} catch (\Exception $exception) {
|
||||
$tx->rollBack();
|
||||
throw $exception;
|
||||
}
|
||||
Yii::$app->session->setFlash('success', 'Kártya aktiválva');
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,6 +17,17 @@ if (count($model->tickets) > 0) {
|
||||
$ticket = $model->tickets[0];
|
||||
}
|
||||
|
||||
if ( isset($model,$model->card)){
|
||||
if ( $model->card->status == \common\models\Card::STATUS_INACTIVE ){
|
||||
echo Html::beginTag("div", ['class' => "alert alert-danger", "role" => "alert"]);
|
||||
echo Html::beginTag("strong", []);
|
||||
echo "A vendég inaktív!";
|
||||
echo Html::a("Aktiválás", ["customer/activate",'number' => $model->card->number ]);
|
||||
echo Html::endTag("strong");
|
||||
echo Html::endTag("div");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($model->card)) {
|
||||
if (isset($model->customer)) {
|
||||
if ($model->card->validity == 0) {
|
||||
|
||||
101
frontend/views/customer/activate.php
Normal file
101
frontend/views/customer/activate.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<h1>Recepció</h1>
|
||||
<?php
|
||||
|
||||
use common\models\Card;
|
||||
use frontend\components\ReceptionWidget;
|
||||
|
||||
use yii\grid\GridView;
|
||||
use yii\widgets\ActiveForm;
|
||||
use yii\helpers\Html;
|
||||
|
||||
?>
|
||||
<?php echo ReceptionWidget::widget(['form' => $model, 'route' => ['customer/reception']]) ?>
|
||||
<h2>Aktiválás</h2>
|
||||
|
||||
|
||||
<?php if ($formModel->card->status == Card::STATUS_INACTIVE) { ?>
|
||||
<div class="customer-form">
|
||||
|
||||
<?php $form = ActiveForm::begin(); ?>
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
Inaktiválási dátum:
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<?= \Yii::$app->formatter->asDate($formModel->card->inactivated_at) ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
Eltelt napok:
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<?= $formModel->daysPassed ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $ticketsDataProvider,
|
||||
'columns' => [
|
||||
|
||||
[
|
||||
'attribute' => 'id_ticket',
|
||||
'label' => 'Bérlet Azonosító'
|
||||
],
|
||||
[
|
||||
'attribute' => 'created_at',
|
||||
'label' => 'Vásárlás ideje',
|
||||
'format' => 'datetime'
|
||||
],
|
||||
[
|
||||
'attribute' => 'start',
|
||||
'label' => 'Érvényesség kezdete',
|
||||
'format' => 'date'
|
||||
],
|
||||
[
|
||||
'attribute' => 'end',
|
||||
'label' => 'Érvényesség vége',
|
||||
'format' => 'date'
|
||||
],
|
||||
[
|
||||
'attribute' => 'max_usage_count',
|
||||
'label' => 'Max alkalmak'
|
||||
],
|
||||
[
|
||||
'attribute' => 'usage_count',
|
||||
'label' => 'Felhasznált alkalmak'
|
||||
],
|
||||
[
|
||||
'attribute' => 'end2',
|
||||
'label' => 'Új Érvényesség vége',
|
||||
'format' => 'date'
|
||||
],
|
||||
|
||||
],
|
||||
]); ?>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<?= Html::submitButton('Aktiválás', ['class' => 'btn btn-success']) ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php ActiveForm::end(); ?>
|
||||
|
||||
</div>
|
||||
<?php } else { ?>
|
||||
|
||||
<div class="alert alert-success" role="alert">
|
||||
<p>
|
||||
A kártya aktív
|
||||
</p>
|
||||
</div>
|
||||
<?php } ?>
|
||||
Reference in New Issue
Block a user