<?php
namespace App\Controller;
use Sonata\AdminBundle\Controller\CRUDController;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use App\Controller\EventsController;
use App\Controller\OrderController;
use App\Entity\Events;
use App\Entity\Orders;
use App\Entity\Customers;
use App\Entity\Coupons;
use App\Entity\BlogPosts;
use App\Entity\Sites;
use App\Entity\Locations;
use App\Entity\Organisers;
class AdminCRUDController extends CRUDController
{
public function getClassName($classname) {
$classname = (new \ReflectionClass($this))->getShortName();
return $classname; // Return default as it contains an already clean class name
}
/**
* @param ProxyQueryInterface $selectedModelQuery
* @param Request $request
*
* @return RedirectResponse
*/
public function batchActionPaid(ProxyQueryInterface $selectedModelQuery, Request $request = null)
{
$this->admin->checkAccess('edit');
$modelManager = $this->admin->getModelManager();
$target = $modelManager->find($this->admin->getClass(), $request->get('targetId'));
if ($target === null){
$this->addFlash('sonata_flash_info', 'flash_batch_paid_no_target');
return new RedirectResponse(
$this->admin->generateUrl('list', [
'filter' => $this->admin->getFilterParameters()
])
);
}
$selectedModels = $selectedModelQuery->execute();
// do the merge work here
try {
foreach ($selectedModels as $selectedModel) {
if(in_array($selectedModel->getStatus(),array(
Orders::ORDER_STATUS_EXPIRED,
Orders::ORDER_STATUS_CANCELED,
)
)
) {
$selectedModel->setStatus(Orders::ORDER_STATUS_PAID);
$modelManager->update($selectedModel);
}
}
//$modelManager->update($selectedModel);
} catch (\Exception $e) {
$this->addFlash('sonata_flash_error', 'flash_batch_paid_error');
return new RedirectResponse(
$this->admin->generateUrl('list', [
'filter' => $this->admin->getFilterParameters()
])
);
}
$this->addFlash('sonata_flash_success', 'flash_batch_paid_success');
return new RedirectResponse(
$this->admin->generateUrl('list', [
'filter' => $this->admin->getFilterParameters()
])
);
}
function handleUpdate($object,$oldObject) {
$classname = $this->getClassName($object);
$method = 'handle'.$classname.'Update';
if(method_exists($this,$method)) {
$this->$method($object,$oldObject);
}
}
function handleOrdersUpdate($object,$oldObject) {
$controller = $this->container->get(OrderController::class);
if($object->getStatus()) {
}
}
function handleEventsUpdate($object,$oldObject) {
$controller = $this->container->get(EventsController::class);
}
}