92 lines
2.7 KiB
PHP
92 lines
2.7 KiB
PHP
<?php
|
|
namespace Shopkeeper\VendorSalesReport\Controller\Adminhtml\Report;
|
|
|
|
use Magento\Backend\App\Action;
|
|
use Magento\Backend\App\Action\Context;
|
|
use Magento\Framework\App\Response\Http\FileFactory;
|
|
use Magento\Framework\App\Filesystem\DirectoryList;
|
|
use Shopkeeper\VendorSalesReport\Model\ReportGenerator;
|
|
use Shopkeeper\VendorSalesReport\Helper\Data as ConfigHelper;
|
|
|
|
class Export extends Action
|
|
{
|
|
const ADMIN_RESOURCE = 'Shopkeeper_VendorSalesReport::report';
|
|
|
|
/**
|
|
* @var FileFactory
|
|
*/
|
|
protected $fileFactory;
|
|
|
|
/**
|
|
* @var ReportGenerator
|
|
*/
|
|
protected $reportGenerator;
|
|
|
|
/**
|
|
* @var ConfigHelper
|
|
*/
|
|
protected $configHelper;
|
|
|
|
/**
|
|
* @param Context $context
|
|
* @param FileFactory $fileFactory
|
|
* @param ReportGenerator $reportGenerator
|
|
* @param ConfigHelper $configHelper
|
|
*/
|
|
public function __construct(
|
|
Context $context,
|
|
FileFactory $fileFactory,
|
|
ReportGenerator $reportGenerator,
|
|
ConfigHelper $configHelper
|
|
) {
|
|
parent::__construct($context);
|
|
$this->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');
|
|
}
|
|
}
|
|
}
|