add backand ticket/index changes, add backand\ticket\index export pdf, xls

This commit is contained in:
2016-06-29 20:18:47 +02:00
parent 06eca0fe03
commit 5438c9a038
20 changed files with 870 additions and 284 deletions

View File

@@ -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 clients 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 );