diff --git a/config/routes/report.yaml b/config/routes/report.yaml index 40bba3f8..795ae0c6 100644 --- a/config/routes/report.yaml +++ b/config/routes/report.yaml @@ -37,3 +37,8 @@ rep_popapp_comp_submit: path: /report/popapp_comparison controller: App\Controller\ReportController::popappComparisonSubmit methods: [POST] + +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..721e7e37 100644 --- a/src/Controller/ReportController.php +++ b/src/Controller/ReportController.php @@ -439,6 +439,49 @@ class ReportController extends Controller 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) { // attempt to open 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..12106ab4 100644 --- a/templates/report/popapp/form.html.twig +++ b/templates/report/popapp/form.html.twig @@ -39,6 +39,7 @@