fileFactory = $fileFactory; $this->reportGenerator = $reportGenerator; $this->configHelper = $configHelper; } /** * Export action * * @return \Magento\Framework\App\ResponseInterface */ public function execute() { try { $startDate = $this->getRequest()->getParam('start_date'); $endDate = $this->getRequest()->getParam('end_date'); if (!$startDate || !$endDate) { $this->messageManager->addErrorMessage(__('Please select a date range.')); return $this->_redirect('*/*/index'); } // Get order statuses $orderStatuses = $this->configHelper->getOrderStatus(); // Generate report data $data = $this->reportGenerator->generateReportData($startDate, $endDate, $orderStatuses); if (empty($data)) { $this->messageManager->addWarningMessage(__('No data found for the selected date range.')); return $this->_redirect('*/*/index'); } // Generate CSV $csvContent = $this->reportGenerator->generateCsv($data); $filename = $this->reportGenerator->getFilename(); return $this->fileFactory->create( $filename, $csvContent, DirectoryList::VAR_DIR, 'text/csv' ); } catch (\Exception $e) { $this->messageManager->addErrorMessage(__('An error occurred while generating the report: %1', $e->getMessage())); return $this->_redirect('*/*/index'); } } }