241 lines
6.0 KiB
PHP
241 lines
6.0 KiB
PHP
<?php
|
|
|
|
namespace backend\controllers;
|
|
|
|
use Yii;
|
|
use common\models\Ticket;
|
|
use backend\models\TicketSearch;
|
|
use yii\web\Controller;
|
|
use yii\web\NotFoundHttpException;
|
|
use yii\filters\VerbFilter;
|
|
use common\models\Discount;
|
|
use common\models\TicketType;
|
|
use common\models\Account;
|
|
use common\models\User;
|
|
use common\models\Customer;
|
|
use common\models\Card;
|
|
use backend\models\TicketSearchStatisitcs;
|
|
|
|
/**
|
|
* TicketController implements the CRUD actions for Ticket model.
|
|
*/
|
|
class TicketController extends \backend\controllers\BackendController {
|
|
public function behaviors() {
|
|
return [
|
|
'access' => [
|
|
'class' => \yii\filters\AccessControl::className (),
|
|
'rules' => [
|
|
// allow authenticated users
|
|
[
|
|
'actions' => [
|
|
'create',
|
|
'index',
|
|
'view',
|
|
'update',
|
|
'index-customer',
|
|
'statistics'
|
|
],
|
|
'allow' => true,
|
|
'roles' => [
|
|
'admin',
|
|
'employee',
|
|
'reception'
|
|
]
|
|
]
|
|
]
|
|
// everything else is denied
|
|
|
|
]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Lists all Ticket models.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function actionIndex() {
|
|
$searchModel = new TicketSearch ();
|
|
$dataProvider = $searchModel->search ( Yii::$app->request->queryParams );
|
|
$searchModel->searchTotals ();
|
|
|
|
$searchModel->users = User::read ();
|
|
$searchModel->accounts = Account::read ();
|
|
$searchModel->ticketTypes = TicketType::read ();
|
|
|
|
return $this->render ( 'index', [
|
|
'searchModel' => $searchModel,
|
|
'dataProvider' => $dataProvider
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* Lists all Ticket models.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function actionStatistics() {
|
|
$searchModel = new TicketSearchStatisitcs();
|
|
$searchModel->search ( Yii::$app->request->queryParams );
|
|
$searchModel->searchTotals ();
|
|
|
|
$searchModel->users = User::read ();
|
|
$searchModel->accounts = Account::read ();
|
|
$searchModel->ticketTypes = TicketType::read ();
|
|
|
|
if ($searchModel->output == 'pdf') {
|
|
$user = User::findOne ( \Yii::$app->user->id );
|
|
$mpdf = new \mPDF ( 'utf-8', 'A4-L' );
|
|
$fn = "";
|
|
$ov = '_total_content_pdf';
|
|
$dt = "_letrehozva_" . date ( "Ymd_His" ) . "_" . $user->username;
|
|
$interval = "";
|
|
$account = "";
|
|
$currentUser = "";
|
|
$fn = $fn . $interval . $dt . $account . $currentUser . ".pdf";
|
|
|
|
$mpdf->useSubstitutions = false;
|
|
$mpdf->simpleTables = true;
|
|
$mpdf->SetHeader ( \Yii::$app->params ["company_name"] . " - Létrehozva: " . $user->username . ", " . \Yii::$app->formatter->asDatetime ( time () ) );
|
|
$mpdf->setFooter ( '{PAGENO} / {nb}' );
|
|
|
|
$stylesheet = file_get_contents ( \Yii::getAlias ( '@vendor' . '/bower/bootstrap/dist/css/bootstrap.css' ) ); // external css
|
|
$mpdf->WriteHTML ( $stylesheet, 1 );
|
|
|
|
$mpdf->WriteHTML ( $this->renderPartial ( 'statistics_pdf', [
|
|
'searchModel' => $searchModel
|
|
] ) );
|
|
$mpdf->Output ( $fn, 'D' );
|
|
exit ();
|
|
} else {
|
|
|
|
return $this->render ( 'statistics', [
|
|
'searchModel' => $searchModel
|
|
] );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Lists all Ticket models.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function actionIndexCustomer($id) {
|
|
$customer = Customer::findOne ( $id );
|
|
$card = Card::findOne ( $id );
|
|
|
|
if ($customer == null) {
|
|
throw new NotFoundHttpException ( 'The requested page does not exist.' );
|
|
}
|
|
|
|
$searchModel = new TicketSearch ();
|
|
$searchModel->id_card = $customer->id_customer_card;
|
|
$dataProvider = $searchModel->search ( Yii::$app->request->queryParams );
|
|
$searchModel->searchTotals ();
|
|
|
|
$searchModel->users = User::read ();
|
|
$searchModel->accounts = Account::read ();
|
|
$searchModel->ticketTypes = TicketType::read ();
|
|
|
|
return $this->render ( 'index_customer', [
|
|
'searchModel' => $searchModel,
|
|
'dataProvider' => $dataProvider,
|
|
'customer' => $customer,
|
|
'card' => $card
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* Displays a single Ticket model.
|
|
*
|
|
* @param integer $id
|
|
* @return mixed
|
|
*/
|
|
public function actionView($id) {
|
|
return $this->render ( 'view', [
|
|
'model' => $this->findModel ( $id )
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* Creates a new Ticket model.
|
|
* If creation is successful, the browser will be redirected to the 'view' page.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function actionCreate() {
|
|
$model = new Ticket ();
|
|
|
|
$discounts = Discount::read ();
|
|
$ticketTypes = TicketType::read ();
|
|
$accounts = Account::readAccounts ();
|
|
|
|
if ($model->load ( Yii::$app->request->post () ) && $model->save ()) {
|
|
return $this->redirect ( [
|
|
'view',
|
|
'id' => $model->id_ticket
|
|
] );
|
|
} else {
|
|
return $this->render ( 'create', [
|
|
'model' => $model,
|
|
'discounts' => $discounts,
|
|
'ticketTypes' => $ticketTypes,
|
|
'accounts' => $accounts
|
|
] );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Updates an existing Ticket model.
|
|
* If update is successful, the browser will be redirected to the 'view' page.
|
|
*
|
|
* @param integer $id
|
|
* @return mixed
|
|
*/
|
|
public function actionUpdate($id) {
|
|
$model = $this->findModel ( $id );
|
|
|
|
if ($model->load ( Yii::$app->request->post () ) && $model->save ()) {
|
|
return $this->redirect ( [
|
|
'view',
|
|
'id' => $model->id_ticket
|
|
] );
|
|
} else {
|
|
return $this->render ( 'update', [
|
|
'model' => $model
|
|
] );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Deletes an existing Ticket model.
|
|
* If deletion is successful, the browser will be redirected to the 'index' page.
|
|
*
|
|
* @param integer $id
|
|
* @return mixed
|
|
*/
|
|
public function actionDelete($id) {
|
|
$this->findModel ( $id )->delete ();
|
|
|
|
return $this->redirect ( [
|
|
'index'
|
|
] );
|
|
}
|
|
|
|
/**
|
|
* Finds the Ticket model based on its primary key value.
|
|
* If the model is not found, a 404 HTTP exception will be thrown.
|
|
*
|
|
* @param integer $id
|
|
* @return Ticket the loaded model
|
|
* @throws NotFoundHttpException if the model cannot be found
|
|
*/
|
|
protected function findModel($id) {
|
|
if (($model = Ticket::findOne ( $id )) !== null) {
|
|
return $model;
|
|
} else {
|
|
throw new NotFoundHttpException ( 'The requested page does not exist.' );
|
|
}
|
|
}
|
|
}
|