Recettes : presque OK sur addToCart

This commit is contained in:
2021-05-05 21:05:08 +02:00
parent a34b17a47c
commit 347fbf2d77
6 changed files with 77 additions and 13 deletions

View File

@@ -5,10 +5,11 @@
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="recipe.save" path="/admin/module/Recettes/save" methods="post">
<default key="_controller">Recettes\Controller\MainController::saveRecipe</default>
<default key="_controller">Recettes\Controller\BackController::saveRecipe</default>
</route>
<route id="recipe.addtocart" path="/admin/module/Recettes/addtocart" methods="post">
<default key="_controller">Recettes\Controller\MainController::addToCart</default>
<default key="_controller">Recettes\Controller\FrontController::addToCart</default>
</route>
</routes>

View File

@@ -22,10 +22,10 @@ use Thelia\Tools\URL;
/**
* Class MainController
* Class BackController
* @package Recettes\Controller
*/
class MainController extends BaseAdminController
class BackController extends BaseAdminController
{
public function saveRecipe(Request $request)
@@ -99,9 +99,4 @@ class MainController extends BaseAdminController
return new RedirectResponse(URL::getInstance()->absoluteUrl("/admin/content"));
}
public function addToCart(Request $request)
{
$order = $request->getSession()->getOrder();
}
}

View File

@@ -0,0 +1,54 @@
<?php
namespace Recettes\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Thelia\Controller\Front\BaseFrontController;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Core\HttpFoundation\Request;
use Thelia\Core\Event\Cart\CartEvent;
use Thelia\Exception\TheliaProcessException;
use Thelia\Model\ProductSaleElementsQuery;
use Thelia\Tools\URL;
/**
* Class FrontController
* @package Recettes\Controller
*/
class FrontController extends BaseFrontController
{
public function addToCart(Request $request)
{
$parameters = $request->request;
$dispatcher = $this->getDispatcher();
$produitsHorsStock = false;
foreach ($parameters as $key=>$value) {
$string = explode("-", $key);
$pseId = $string[1];;
$qty = $string[3];
$productId = ProductSaleElementsQuery::create()->findOneById($pseId)->getProductId();
$stock = ProductSaleElementsQuery::create()->findOneById($pseId)->getQuantity();
if ($stock > 0) {
$eventAjout = new CartEvent($request->getSession()->getSessionCart($dispatcher));
$eventAjout
->setQuantity($qty)
->setProduct($productId)
->setProductSaleElementsId($pseId);
$dispatcher->dispatch(TheliaEvents::CART_ADDITEM, $eventAjout);
}
else {
$produitsHorsStock = true;
}
}
if (! $produitsHorsStock)
return new RedirectResponse(URL::getInstance()->absoluteUrl('/cart'));
}
}

View File

@@ -3,12 +3,17 @@
namespace Recettes\Loop;
use Recettes\Model\RecipeProductsQuery;
use Thelia\Action\AttributeAv;
use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Model\AttributeAvI18nQuery;
use Thelia\Model\AttributeCombinationQuery;
use Thelia\Model\AttributeI18n;
use Thelia\Model\AttributeI18nQuery;
use Thelia\Model\ProductI18nQuery;
use Thelia\Model\ProductSaleElementsQuery;
@@ -33,6 +38,8 @@ class ProductsLoop extends BaseLoop implements PropelSearchLoopInterface
$pse = ProductSaleElementsQuery::create()->findOneById($product->getPseId());
$productLabel = ProductI18nQuery::create()->findOneById($pse->getProductId())->getTitle();
$attributeCombination = AttributeCombinationQuery::create()->findOneByProductSaleElementsId($product->getPseId());
$unity = AttributeAvI18nQuery::create()->findOneById($attributeCombination->getAttributeAvId())->getTitle();
$loopResultRow = new LoopResultRow($product);
$loopResultRow
@@ -41,6 +48,7 @@ class ProductsLoop extends BaseLoop implements PropelSearchLoopInterface
->set("PRODUCT_LABEL", $productLabel)
->set("QUANTITY_NEEDED", $product->getQuantity())
->set("QUANTITY_PROPOSED", $product->getNbOfProducts())
->set('UNITY', $unity)
;
$loopResult->addRow($loopResultRow);
}

View File

@@ -78,4 +78,7 @@ div.entete span b {
.table-steps td.number{
padding-left: 30px;
font-weight: bold;
}
.bouton-imprimer {
text-align: center;
}