<?php
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Products;
use Pimcore\Model\DataObject\Trendingrecipes;
use Pimcore\Model\DataObject\Recipe;
use Pimcore\Model\DataObject\Recipecategory;
use Pimcore\Model\DataObject\Category;
use Pimcore\Model\DataObject\Brands;
use Pimcore\Model\DataObject\NewsLetterHeader;
use Pimcore\Model\DataObject\Resourcecategory;
use Pimcore\Model\DataObject\Newsletter;
use Pimcore\Bundle\EcommerceFrameworkBundle\Exception\VoucherServiceException;
use Pimcore\Bundle\EcommerceFrameworkBundle\Factory;
use Pimcore\Localization\LocaleServiceInterface;
use Pimcore\Model;
use Pimcore\Model\DataObject\ClassDefinition\Service;
use Pimcore\Bundle\EcommerceFrameworkBundle\EnvironmentInterface;
use Pimcore\Bundle\EcommerceFrameworkBundle\CartManager\MultiCartManager;
use Pimcore\Db;
class commonController extends FrontendController
{
const DEFAULT_CART_NAME = 'cart';
protected $factory;
protected $environment;
protected $event;
public function __construct(Factory $factory, EnvironmentInterface $environment)
{
$this->factory = $factory;
$this->environment = $environment;
}
protected function getCart()
{
$cartManager = Factory::getInstance()->getCartManager();
return $cartManager->getOrCreateCartByName(self::DEFAULT_CART_NAME);
}
public function cartItems()
{
$cartCount = 0;
$cart = $this->getCart();
foreach($cart->getItems() as $item){
$cartCount += $item->getCount();
}
return $cartCount;
}
public function headAction(Request $request)
{
$countries = \Pimcore::getContainer()->get(LocaleServiceInterface::class)->getDisplayRegions();
asort($countries);
$categories = new Category\Listing();
$categories->setOrderKey('order');
$categories->setOrder("ASC");
$categories->setLimit('10');
$brands = new Brands\Listing();
$brands->setOrderKey('order');
$brands->setOrder("ASC");
$brands->setLimit('5');
$resources = new Resourcecategory\Listing();
$resources->setCondition("o_parentId = 269");
$resources->setOrderKey('name');
$resources->setLimit('20');
$resources->setOrder("ASC");
$recipes = new Recipe\Listing();
$recipes->setOrderKey('name');
$recipes->setLimit('5');
$recipes->setOrder("ASC");
$recipescategory = new Recipecategory\Listing();
$newsletter = NewsLetterHeader::getByPath("/NewsLetterHead/Newsletter");
//latestPdf
$newsletterLatest = new NewsLetterHeader\Listing();
$newsletterLatest->setCondition('o_id NOT IN (?)',[$newsletter->getId()]);
$newsletterLatest->setOrderKey("oo_id");
$newsletterLatest->setOrder("desc");
$newsletterLatest->setLimit('1');
$newsletterLatest->load();
$newsletterLatest= $newsletterLatest->current() ?? null;
$pdf = "";
if ($newsletterLatest) {
$pdf = $newsletterLatest->getPdf();
}else{
$pdf = $newsletter->getPdf();
}
$cartCount = $this->cartItems();
return $this->render('includes/top-head.html.twig',
[
'categories' => $categories,
'brands' => $brands,
'resources' => $resources,
'cartCount' => $cartCount,
'recipes' => $recipes,
'recipescategory' => $recipescategory,
'newsletter' => $newsletter,
'newsletterPdf' => $pdf,
]);
}
public function footerAction(Request $request)
{
$countries = \Pimcore::getContainer()->get(LocaleServiceInterface::class)->getDisplayRegions();
asort($countries);
$categories = new Category\Listing();
$categories->setOrderKey('order');
$categories->setOrder("ASC");
$categories->setLimit('10');
// $brands = new Brands\Listing();
// $brands->setOrderKey('name');
// $brands->setLimit('5');
// $brands->setOrder("ASC");
$recipes = new Recipe\Listing();
$recipes->setOrderKey('name');
$recipes->setLimit('5');
$recipes->setOrder("ASC");
$recipescategory = new Recipecategory\Listing();
return $this->render('includes/footer.html.twig',
[
'categories' => $categories,
'recipes' => $recipes,
'recipescategory' => $recipescategory,
]);
}
/**
* @Route("/validate-newsletter", name="validate-newsletter")
*/
public function newsletterValidation(Request $request){
if($request->get('email')){
$user = Newsletter::getByEmail($request->get('email'));
$user->load();
if($user->getData()){
$text = 'This email address has already Subscribe.';
}else{
$text = '';
}
}
return $this->json(array('success'=>$text));
}
public function newsletterAction(Request $request)
{ $success = false;
if( $request->get('email')){
$success = false;
$Newsletter = new Newsletter();
$Newsletter->setKey(\Pimcore\File::getValidFilename($request->get('email')));
$Newsletter->setParent(DataObject\Folder::getByPath('/Newsletter/'));
$Newsletter->setEmail(strip_tags($request->get('email')));
$Newsletter->setPublished(true);
$result = $Newsletter->save();
if($result){
$success = true;
}else{
$success = false;
}
}else{
$success = false;
}
return $this->json(array('success'=> $success));
//return $this->render('includes/footer.html.twig');
}
}
?>