Files
module-vendor-sales-report/Controller/Adminhtml/Report/Grid.php

87 lines
2.3 KiB
PHP
Raw Normal View History

<?php
namespace Shopkeeper\VendorSalesReport\Controller\Adminhtml\Report;
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Framework\Controller\Result\JsonFactory;
use Shopkeeper\VendorSalesReport\Model\ReportGenerator;
use Shopkeeper\VendorSalesReport\Helper\Data as ConfigHelper;
class Grid extends Action
{
const ADMIN_RESOURCE = 'Shopkeeper_VendorSalesReport::report';
/**
* @var JsonFactory
*/
protected $resultJsonFactory;
/**
* @var ReportGenerator
*/
protected $reportGenerator;
/**
* @var ConfigHelper
*/
protected $configHelper;
/**
* @param Context $context
* @param JsonFactory $resultJsonFactory
* @param ReportGenerator $reportGenerator
* @param ConfigHelper $configHelper
*/
public function __construct(
Context $context,
JsonFactory $resultJsonFactory,
ReportGenerator $reportGenerator,
ConfigHelper $configHelper
) {
parent::__construct($context);
$this->resultJsonFactory = $resultJsonFactory;
$this->reportGenerator = $reportGenerator;
$this->configHelper = $configHelper;
}
/**
* Grid data action
*
* @return \Magento\Framework\Controller\Result\Json
*/
public function execute()
{
$result = $this->resultJsonFactory->create();
try {
$startDate = $this->getRequest()->getParam('start_date');
$endDate = $this->getRequest()->getParam('end_date');
if (!$startDate || !$endDate) {
return $result->setData([
'success' => false,
'message' => 'Please select a date range.'
]);
}
// Get order statuses
$orderStatuses = $this->configHelper->getOrderStatus();
// Generate report data
$data = $this->reportGenerator->generateReportData($startDate, $endDate, $orderStatuses);
return $result->setData([
'success' => true,
'data' => $data,
'total' => count($data)
]);
} catch (\Exception $e) {
return $result->setData([
'success' => false,
'message' => $e->getMessage()
]);
}
}
}