diff --git a/config/routes/report.yaml b/config/routes/report.yaml index 40bba3f8..274a1268 100644 --- a/config/routes/report.yaml +++ b/config/routes/report.yaml @@ -33,7 +33,7 @@ rep_popapp_comp_form: controller: App\Controller\ReportController::popappComparisonForm methods: [GET] -rep_popapp_comp_submit: - path: /report/popapp_comparison - controller: App\Controller\ReportController::popappComparisonSubmit +rep_popapp_export_csv: + path: /report/popapp_export + controller: App\Controller\ReportController::popappExportCSV methods: [POST] diff --git a/src/Controller/ReportController.php b/src/Controller/ReportController.php index c92b071b..0577595a 100644 --- a/src/Controller/ReportController.php +++ b/src/Controller/ReportController.php @@ -420,7 +420,7 @@ class ReportController extends Controller /** * @Menu(selected="outlet_list") */ - public function popappComparisonSubmit(Request $req) + /* public function popappComparisonSubmit(Request $req) { // retrieve temporary info for file $file = $req->files->get('csv_file'); @@ -437,6 +437,49 @@ class ReportController extends Controller $params['data'] = $data; return $this->render('report/popapp/form.html.twig', $params); + } */ + + /** + * @Menu(selected="outlet_list") + */ + public function popappExportCSV(Request $req) + { + // retrieve temporary info for file + $file = $req->files->get('csv_file'); + + // process the csv file + $data = $this->processPopappFile($file); + + $resp = new StreamedResponse(); + $resp->setCallback(function() use ($data) { + // csv output + $csv_handle = fopen('php://output', 'w+'); + fputcsv($csv_handle, [ + 'Customer ID', + 'Last Name', + 'First Name', + 'Plate Number', + 'Serial', + 'Warranty Create Date', + 'Activation Status', + 'Has Mobile App?', + ]); + foreach ($data as $row) + { + fputcsv($csv_handle, $row); + } + + fclose($csv_handle); + }); + + $filename = 'popapp_comparison_report' . '.csv'; + + $resp->setStatusCode(200); + $resp->headers->set('Content-Type', 'text/csv; charset=utf-8'); + $resp->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"'); + + return $resp; + } protected function processPopappFile(UploadedFile $csv_file) @@ -507,8 +550,8 @@ class ReportController extends Controller 'plate_num' => $cv->getPlateNumber(), 'serial' => $warranty->getSerial(), 'warr_date_create' => $warranty->getDateCreate()->format("d M Y"), - 'has_mobile' => $has_mobile, - 'warr_activation_status' => $warranty->isActivated(), + 'warr_activation_status' => ($warranty->isActivated() ? 'Active' : 'Inactive'), + 'has_mobile' => ($has_mobile ? 'Yes' : 'No'), ]; } @@ -517,4 +560,5 @@ class ReportController extends Controller return $results; } + } diff --git a/templates/report/popapp/form.html.twig b/templates/report/popapp/form.html.twig index f48ada3d..82384d08 100644 --- a/templates/report/popapp/form.html.twig +++ b/templates/report/popapp/form.html.twig @@ -29,7 +29,7 @@ -
+
@@ -38,7 +38,7 @@
- +
@@ -96,8 +96,8 @@ {{ result.plate_num|default('') }} {{ result.serial|default('') }} {{ result.warr_date_create|default('') }} - {{ result.warr_activation_status ? 'Active' : 'Inactive' }} - {{ result.has_mobile ? 'Yes' : 'No' }} + {{ result.warr_activation_status }} + {{ result.has_mobile }} {% endfor %}