Initial commit: Vendor Sales Report Magento 2 module
This commit is contained in:
91
Controller/Adminhtml/Report/Export.php
Normal file
91
Controller/Adminhtml/Report/Export.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?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');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user