<?php
namespace App\Controller;
use App\Ecommerce\Checkout\CommitOrderProcessor;
use App\Ecommerce\Model\Order;
use App\EventSubscriber\Order\SendEmailsSubscriber;
use App\Helper\DataMapper\NavigationDataMapper;
use Factory\CartBundle\Classes\DataMapper\CartDataMapper;
use Pimcore\Event\Model\Ecommerce\SendConfirmationMailEvent;
use Pimcore\Navigation\Builder;
use App\Classes\Controller\AbstractFrontController as AbstractFrontController;
use App\Classes\DataMapper\Invoice\InvoiceDataMapper;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController extends AbstractFrontController
{
protected $navigationBuilder;
protected $emailSubscriber;
protected $orderCommitProcessor;
public function __construct(Builder $navigationBuilder, SendEmailsSubscriber $emailSubscriber, CommitOrderProcessor $orderCommitProcessor)
{
$this->navigationBuilder = $navigationBuilder;
$this->emailSubscriber = $emailSubscriber;
$this->orderCommitProcessor = $orderCommitProcessor;
}
/**
* @Route("/order-email/{order}/send")
*/
public function testOrderEmail(Request $request, $order)
{
$order = Order::getById($order);
if (!$order) {
dd('Order Not Found');
}
$evt = new SendConfirmationMailEvent($this->orderCommitProcessor, $order, '');
$this->emailSubscriber->sendOrderPlacedEmail($evt);
dd('Email Sent');
}
/**
* @Route("/order-email/{order}/preview")
*/
public function previewOrderEmail(Request $request, $order)
{
$order = Order::getById($order);
if (!$order) {
dd('Order Not Found');
}
return $this->render('email/invoice.html.twig', [
'data' => (new InvoiceDataMapper($order))->toArray($request),
'summary' => (new CartDataMapper($order))->toArray($request)
]);
}
#[Template()]
public function defaultAction(Request $request)
{
}
public function installAction(Request $request)
{
// $this->install();
}
public function headerAction(Request $request)
{
$masterRequest = $this->get('request_stack')->getMasterRequest();
$parentDocument = $masterRequest->get('contentDocument');
$mainNavigation = $this->navigationBuilder->getNavigation($parentDocument, $parentDocument);
$navigationMapped = NavigationDataMapper::list(
$mainNavigation->getPages()
)->all($request);
$navigationGrouped = [];
foreach ($navigationMapped as $navItem) {
$navigationGrouped[$navItem['menu_group']][] = $navItem;
}
$this->view->mainNavigation = $navigationGrouped;
$this->view->routeName = $masterRequest->get('_route');
}
}