add backand ticket/index changes, add backand\ticket\index export pdf, xls
This commit is contained in:
@@ -2,9 +2,11 @@
|
||||
|
||||
namespace backend\controllers;
|
||||
|
||||
use common\models\Transfer;
|
||||
use Yii;
|
||||
use common\models\Ticket;
|
||||
use backend\models\TicketSearch;
|
||||
use yii\helpers\ArrayHelper;
|
||||
use yii\web\Controller;
|
||||
use yii\web\NotFoundHttpException;
|
||||
use yii\filters\VerbFilter;
|
||||
@@ -23,7 +25,6 @@ use common\components\DetStatTetelProcessor;
|
||||
use yii\helpers\VarDumper;
|
||||
use backend\models\TicketUpdate;
|
||||
use yii\helpers\Url;
|
||||
use frontend\components\HtmlHelper;
|
||||
use common\components\Helper;
|
||||
|
||||
/**
|
||||
@@ -68,17 +69,255 @@ class TicketController extends \backend\controllers\BackendController {
|
||||
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 ();
|
||||
if ( $searchModel->output != 'pdf' && $searchModel->output != 'xls' ){
|
||||
$searchModel->searchTotals ();
|
||||
$searchModel->users = User::read ();
|
||||
$searchModel->accounts = Account::read ();
|
||||
$searchModel->ticketTypes = TicketType::read ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if ( $searchModel->output == 'pdf' ){
|
||||
return $this->downloadIndexPdf($searchModel,$dataProvider);
|
||||
}else if ( $searchModel->output == 'xls'){
|
||||
return $this->downloadIndexXls($searchModel,$dataProvider);
|
||||
}
|
||||
|
||||
return $this->render ( 'index', [
|
||||
'searchModel' => $searchModel,
|
||||
'dataProvider' => $dataProvider
|
||||
] );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $searchModel \backend\models\TicketSearch
|
||||
* @param $dataProvider \yii\data\ActiveDataProvider
|
||||
*/
|
||||
private function downloadIndexXls($searchModel, $dataProvider){
|
||||
$objPHPExcel = new \PHPExcel ();
|
||||
$sheet = $objPHPExcel->setActiveSheetIndex ( 0 );
|
||||
$formatter = \Yii::$app->formatter;
|
||||
|
||||
$admin = User::findOne(\Yii::$app->user->id);
|
||||
|
||||
$row = 1;
|
||||
|
||||
$sheet->setCellValue('A'.$row, 'Exportálta');
|
||||
$sheet->setCellValue('B'.$row, $admin->username);
|
||||
$sheet->setCellValue('C'.$row, 'Exportálás ideje');
|
||||
$sheet->setCellValue('D'.$row, $formatter->asDatetime(new \DateTime()));
|
||||
|
||||
$row++;
|
||||
$user = User::findOne($searchModel->id_user);
|
||||
$ticketType = TicketType::findOne($searchModel->id_ticket_type);
|
||||
$account = Account::findOne($searchModel->id_account);
|
||||
$cardNumber = !empty($searchModel->card_number) ? $searchModel->card_number : "Mind";
|
||||
$ticketStatus = !empty($searchModel->status) ? Ticket::toStatusName($searchModel->status) : "Mind";
|
||||
$customerIdCustomer = !empty($searchModel->id_customer) ? $searchModel->id_customer : "Mind";
|
||||
$customerName = !empty($searchModel->customer_name) ? $searchModel->customer_name : "Mind";
|
||||
$start = isset($searchModel->start) ? $formatter->asDateTime($searchModel->timestampStart) : '';
|
||||
$end = isset($searchModel->end) ? $formatter->asDateTime($searchModel->timestampEnd) : '';
|
||||
$ticketIdTicket = !empty($searchModel->id_ticket ) ? $searchModel->id_ticket : 'Mind';
|
||||
|
||||
$allDateConditionOn = $searchModel->isAllDateConditionOn();
|
||||
$ticketIntervalIsValid = ( $allDateConditionOn || "1" == $searchModel->valid_in_interval )? "Igen" : "";
|
||||
$ticketIntervalIsCreated =( $allDateConditionOn || "1" == $searchModel->created_in_interval) ? "Igen" : "";
|
||||
$ticketIntervalIsExpire = ( $allDateConditionOn || "1" == $searchModel->expire_in_interval) ? "Igen" : "";
|
||||
$ticketIntervalIsPaid = ( $allDateConditionOn || "1" == $searchModel->paid_in_interval) ? "Igen" : "";
|
||||
|
||||
$sheet->setCellValue('A'.$row, 'Felhasználó');
|
||||
$sheet->setCellValue('B'.$row, isset($user) ? $user->username : 'Mind');
|
||||
$sheet->setCellValue('C'.$row, 'Bérlet típus');
|
||||
$sheet->setCellValue('D'.$row, isset($ticketType) ? $ticketType->name : 'Mind');
|
||||
$sheet->setCellValue('E'.$row, 'Kassza');
|
||||
$sheet->setCellValue('F'.$row, isset($account) ? $account->name : 'Mind');
|
||||
|
||||
$row++;
|
||||
$sheet->setCellValue('A'.$row, 'Bérlet státusz');
|
||||
$sheet->setCellValue('B'.$row, $ticketStatus);
|
||||
|
||||
$sheet->setCellValue('C'.$row, 'Vendég azonosító');
|
||||
$sheet->setCellValue('D'.$row, $customerIdCustomer);
|
||||
|
||||
$sheet->setCellValue('E'.$row, 'Vendég neve');
|
||||
$sheet->setCellValue('F'.$row, $customerName);
|
||||
|
||||
$row++;
|
||||
$sheet->setCellValue('A'.$row, 'Időszak kezdete');
|
||||
$sheet->setCellValue('B'.$row, $start);
|
||||
$sheet->setCellValue('C'.$row, 'Időszak vége');
|
||||
$sheet->setCellValue('D'.$row, $end);
|
||||
$sheet->setCellValue('E'.$row, 'Bérlet azonosító');
|
||||
$sheet->setCellValue('F'.$row, $ticketIdTicket);
|
||||
$sheet->setCellValue('G'.$row, 'Kártya szám');
|
||||
$sheet->setCellValue('H'.$row, $cardNumber);
|
||||
|
||||
$row++;
|
||||
$sheet->setCellValue('A'.$row, 'Érvényes az időszakban');
|
||||
$sheet->setCellValue('B'.$row, $ticketIntervalIsValid);
|
||||
$sheet->setCellValue('C'.$row, 'Kiadva az időszakban');
|
||||
$sheet->setCellValue('D'.$row, $ticketIntervalIsCreated);
|
||||
$sheet->setCellValue('E'.$row, 'Lejár az időszakban');
|
||||
$sheet->setCellValue('F'.$row, $ticketIntervalIsExpire);
|
||||
$sheet->setCellValue('G'.$row, 'Fizetve az időszakban');
|
||||
$sheet->setCellValue('H'.$row, $ticketIntervalIsPaid);
|
||||
|
||||
$row++;
|
||||
$sheet->setCellValue('A'.$row, 'B. Azonosító')
|
||||
->setCellValue('B'.$row, 'Vendég')
|
||||
->setCellValue('C'.$row, 'Kártya')
|
||||
->setCellValue('D'.$row, 'Érvényes -tól')
|
||||
->setCellValue('E'.$row, 'Érvényes -ig')
|
||||
->setCellValue('F'.$row, 'Létrehozva')
|
||||
->setCellValue('G'.$row, 'Bérlet típus')
|
||||
->setCellValue('H'.$row, 'Felhasználó')
|
||||
->setCellValue('I'.$row, 'Kassza')
|
||||
->setCellValue('J'.$row, 'Státusz')
|
||||
->setCellValue('K'.$row, 'Belépések száma')
|
||||
->setCellValue('L'.$row, 'Maximum belépések száma')
|
||||
->setCellValue('M'.$row, 'Nála fizették')
|
||||
->setCellValue('N'.$row, 'Fizetési mód')
|
||||
->setCellValue('O'.$row, 'Összeg')
|
||||
->setCellValue('P'.$row, 'Fizetés státusza')
|
||||
->setCellValue('Q'.$row, 'Vendég azonosító')
|
||||
;
|
||||
|
||||
|
||||
foreach ( $dataProvider->getModels() as $model ) {
|
||||
$row ++;
|
||||
$sheet
|
||||
->setCellValue('A'.$row, $model['ticket_id_ticket'])
|
||||
->setCellValue('B'.$row, $model['customer_name'])
|
||||
->setCellValue('C'.$row, $model['card_number'])
|
||||
->setCellValue('D'.$row, $formatter->asDate($model['ticket_start']))
|
||||
->setCellValue('E'.$row, $formatter->asDate($model['ticket_end']))
|
||||
->setCellValue('F'.$row, $formatter->asDateTime($model['ticket_created_at']))
|
||||
->setCellValue('G'.$row, $model['ticket_type_name'])
|
||||
->setCellValue('H'.$row, $model['user_username'])
|
||||
->setCellValue('I'.$row, $model['account_name'])
|
||||
->setCellValue('J'.$row, Ticket::toStatusName( $model['ticket_status']))
|
||||
->setCellValue('K'.$row, $model['ticket_usage_count'])
|
||||
->setCellValue('L'.$row, $model['ticket_max_usage_count'])
|
||||
->setCellValue('M'.$row, $model['paid_by_username'])
|
||||
->setCellValue('N'.$row, Transfer::toPaymentMethodName( $model['transfer_payment_method']))
|
||||
->setCellValue('O'.$row, $model['ticket_price_brutto'])
|
||||
->setCellValue('P'.$row, Transfer::toStatusName( $model['transfer_status']))
|
||||
->setCellValue('Q'.$row, $model['customer_id_customer'])
|
||||
;
|
||||
}
|
||||
|
||||
$styleArray = array (
|
||||
'font' => array (
|
||||
'bold' => true
|
||||
)
|
||||
);
|
||||
|
||||
foreach ( range ( 'A', 'Q' ) as $columnID ) {
|
||||
$sheet->getColumnDimension ( $columnID )->setAutoSize ( true );
|
||||
$sheet->getStyle ( $columnID . '6' )->applyFromArray ( $styleArray );
|
||||
}
|
||||
|
||||
foreach ( ['A','C','E' ,'G']as $columnID ) {
|
||||
for ($i = 1 ; $i < 6; $i++){
|
||||
$sheet->getStyle ( $columnID . $i )->applyFromArray ( $styleArray );
|
||||
}
|
||||
}
|
||||
|
||||
$fileName = "berletek";
|
||||
$fileName .= "_" . date ( "Ymd_His" );
|
||||
$fileName .= ".xls";
|
||||
|
||||
// Redirect output to a client’s web browser (Excel5)
|
||||
header ( 'Content-Type: application/vnd.ms-excel' );
|
||||
header ( 'Content-Disposition: attachment;filename="' . $fileName . '"' );
|
||||
header ( 'Cache-Control: max-age=0' );
|
||||
// If you're serving to IE 9, then the following may be needed
|
||||
header ( 'Cache-Control: max-age=1' );
|
||||
// If you're serving to IE over SSL, then the following may be needed
|
||||
header ( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); // Date in the past
|
||||
header ( 'Last-Modified: ' . gmdate ( 'D, d M Y H:i:s' ) . ' GMT' ); // always modified
|
||||
header ( 'Cache-Control: cache, must-revalidate' ); // HTTP/1.1
|
||||
header ( 'Pragma: public' ); // HTTP/1.0
|
||||
$objWriter = \PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' );
|
||||
$objWriter->save ( 'php://output' );
|
||||
exit ();
|
||||
}
|
||||
|
||||
private function downloadIndexPdf($searchModel,$dataProvider){
|
||||
|
||||
$formatter = \Yii::$app->formatter;
|
||||
$admin = User::findOne(\Yii::$app->user->id);
|
||||
$exported_at = $formatter->asDatetime(new \DateTime());
|
||||
|
||||
$user = User::findOne($searchModel->id_user);
|
||||
$ticketType = TicketType::findOne($searchModel->id_ticket_type);
|
||||
$account = Account::findOne($searchModel->id_account);
|
||||
$ticketStatus = !empty($searchModel->status) ? Ticket::toStatusName($searchModel->status) : "Mind";
|
||||
$customerIdCustomer = !empty($searchModel->id_customer) ? $searchModel->id_customer : "Mind";
|
||||
$customerName = !empty($searchModel->customer_name) ? $searchModel->customer_name : "Mind";
|
||||
$start = isset($searchModel->start) ? $formatter->asDateTime($searchModel->timestampStart) : '';
|
||||
$end = isset($searchModel->end) ? $formatter->asDateTime($searchModel->timestampEnd) : '';
|
||||
$ticketIdTicket = !empty($searchModel->id_ticket ) ? $searchModel->id_ticket : 'Mind';
|
||||
|
||||
$allDateConditionOn = $searchModel->isAllDateConditionOn();
|
||||
$ticketIntervalIsValid = ( $allDateConditionOn || "1" == $searchModel->valid_in_interval )? "Igen" : "";
|
||||
$ticketIntervalIsCreated =( $allDateConditionOn || "1" == $searchModel->created_in_interval) ? "Igen" : "";
|
||||
$ticketIntervalIsExpire = ( $allDateConditionOn || "1" == $searchModel->expire_in_interval) ? "Igen" : "";
|
||||
$ticketIntervalIsPaid = ( $allDateConditionOn || "1" == $searchModel->paid_in_interval) ? "Igen" : "";
|
||||
|
||||
$username = isset($user) ? $user->username : 'Mind';
|
||||
$ticketTypeName = isset($ticketType) ? $ticketType->name : 'Mind';
|
||||
$accountName = isset($account) ? $account->name : 'Mind';
|
||||
$cardNumber = !empty($searchModel->card_number) ? $searchModel->card_number : "Mind";
|
||||
|
||||
$filters = [
|
||||
'admin' => $admin->username,
|
||||
'exported_at' => $exported_at,
|
||||
'ticketStatus' =>$ticketStatus,
|
||||
'customerIdCustomer' => $customerIdCustomer,
|
||||
'customerName' => $customerName,
|
||||
'start' => $start,
|
||||
'end' => $end,
|
||||
'ticketIdTicket' => $ticketIdTicket,
|
||||
'ticketIntervalIsValid' => $ticketIntervalIsValid,
|
||||
'ticketIntervalIsCreated' => $ticketIntervalIsCreated,
|
||||
'ticketIntervalIsExpire' => $ticketIntervalIsExpire,
|
||||
'ticketIntervalIsPaid' => $ticketIntervalIsPaid,
|
||||
'username' => $username,
|
||||
'ticketTypeName' => $ticketTypeName,
|
||||
'accountName' => $accountName,
|
||||
'cardNumber' => $cardNumber
|
||||
];
|
||||
|
||||
$fileName = "berletek";
|
||||
$fileName .= "_" . date ( "Ymd_His" );
|
||||
$fileName .= ".pdf";
|
||||
$mpdf = new \mPDF ( 'utf-8', 'A4' );
|
||||
|
||||
$mpdf->useSubstitutions = false;
|
||||
$mpdf->simpleTables = true;
|
||||
$mpdf->SetHeader( \Yii::$app->params[ "company_name" ] . " - Bérletek - Létrehozva: " .$admin->username . ", ".\Yii::$app->formatter->asDatetime(time()) );
|
||||
$mpdf->setFooter ( '{PAGENO} / {nb}' );
|
||||
|
||||
$stylesheet = file_get_contents( \Yii::getAlias('@backend/web/css/ticket-index-pdf.css')); // external css
|
||||
$mpdf->WriteHTML($stylesheet,1);
|
||||
|
||||
$mpdf->WriteHTML ( $this->renderPartial ( '_index_pdf.php', [
|
||||
'model' => $searchModel,
|
||||
'dataProvider' => $dataProvider,
|
||||
'filters' => $filters
|
||||
] ) );
|
||||
$mpdf->Output ( $fileName, 'D' );
|
||||
exit ();
|
||||
/*
|
||||
return $this->render ( '_index_pdf', [
|
||||
'searchModel' => $searchModel,
|
||||
'dataProvider' => $dataProvider
|
||||
] );
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists all Ticket models.
|
||||
@@ -125,11 +364,13 @@ class TicketController extends \backend\controllers\BackendController {
|
||||
] );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Lists all Ticket models.
|
||||
*
|
||||
*
|
||||
* @param $id
|
||||
* @return mixed
|
||||
* @throws NotFoundHttpException
|
||||
*/
|
||||
public function actionIndexCustomer($id) {
|
||||
$customer = Customer::findOne ( $id );
|
||||
|
||||
Reference in New Issue
Block a user