feat(main): Task #5 is done
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace Websmid\GiftDropdown\Command\CommandHandler;
|
||||
|
||||
use Websmid\GiftDropdown\Command\SaveGiftDropdownCommand;
|
||||
use Websmid\GiftDropdown\Entity\GiftDropdown;
|
||||
use DateTime;
|
||||
use PrestaShop\PrestaShop\Adapter\SymfonyContainer;
|
||||
|
||||
final class SaveGiftDropdownCommandHandler
|
||||
{
|
||||
public function __invoke(SaveGiftDropdownCommand $command)
|
||||
{
|
||||
return $this->handle($command);
|
||||
}
|
||||
|
||||
public function handle(SaveGiftDropdownCommand $command)
|
||||
{
|
||||
$entityManager = SymfonyContainer::getInstance()->get('doctrine.orm.entity_manager');
|
||||
$repo = $entityManager->getRepository(GiftDropdown::class);
|
||||
|
||||
$entity = $repo->findOneBy(['idCart' => $command->getIdCart()]);
|
||||
|
||||
if (!$entity) {
|
||||
$entity = new GiftDropdown();
|
||||
$entity->setIdCart($command->getIdCart());
|
||||
$entity->setIdOrder(0);
|
||||
$entity->setDateAdd(new DateTime());
|
||||
}
|
||||
|
||||
$entity->setPaperChoice($command->getPaperChoice());
|
||||
|
||||
$entityManager->persist($entity);
|
||||
$entityManager->flush();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Websmid\GiftDropdown\Command;
|
||||
|
||||
class SaveGiftDropdownCommand
|
||||
{
|
||||
private $idCart;
|
||||
private $paperChoice;
|
||||
|
||||
public function __construct(int $idCart, string $paperChoice)
|
||||
{
|
||||
$this->idCart = $idCart;
|
||||
$this->paperChoice = $paperChoice;
|
||||
}
|
||||
|
||||
public function getIdCart(): int
|
||||
{
|
||||
return $this->idCart;
|
||||
}
|
||||
|
||||
public function getPaperChoice(): string
|
||||
{
|
||||
return $this->paperChoice;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace Websmid\GiftDropdown\Entity;
|
||||
|
||||
use DateTime;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
/**
|
||||
* @ORM\Table(name="ws_gift_dropdown")
|
||||
* @ORM\Entity()
|
||||
*/
|
||||
class GiftDropdown
|
||||
{
|
||||
/**
|
||||
* @ORM\Id
|
||||
* @ORM\Column(name="id_ws_gift_dropdown", type="integer")
|
||||
* @ORM\GeneratedValue(strategy="AUTO")
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="id_cart", type="integer")
|
||||
*/
|
||||
private $idCart;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="id_order", type="integer")
|
||||
*/
|
||||
private $idOrder;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="paper_choice", type="string", length=64)
|
||||
*/
|
||||
private $paperChoice;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="date_add", type="datetime")
|
||||
*/
|
||||
private $dateAdd;
|
||||
|
||||
public function getId(): ?int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getIdCart(): int
|
||||
{
|
||||
return $this->idCart;
|
||||
}
|
||||
|
||||
public function setIdCart(int $idCart): self
|
||||
{
|
||||
$this->idCart = $idCart;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getIdOrder(): int
|
||||
{
|
||||
return $this->idOrder;
|
||||
}
|
||||
|
||||
public function setIdOrder(int $idOrder): self
|
||||
{
|
||||
$this->idOrder = $idOrder;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getPaperChoice(): string
|
||||
{
|
||||
return $this->paperChoice;
|
||||
}
|
||||
|
||||
public function setPaperChoice(string $paperChoice): self
|
||||
{
|
||||
$this->paperChoice = $paperChoice;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDateAdd(): ?DateTime
|
||||
{
|
||||
return $this->dateAdd;
|
||||
}
|
||||
|
||||
public function setDateAdd(DateTime $dateAdd): self
|
||||
{
|
||||
$this->dateAdd = $dateAdd;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'id_ws_gift_dropdown' => $this->id,
|
||||
'id_cart' => $this->idCart,
|
||||
'id_order' => $this->idOrder,
|
||||
'paper_choice' => $this->paperChoice,
|
||||
'date_add' => $this->dateAdd ? $this->dateAdd->format('Y-m-d H:i:s') : null,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace Websmid\GiftDropdown\Entity;
|
||||
|
||||
use Doctrine\Common\EventSubscriber;
|
||||
use Doctrine\ORM\Event\LoadClassMetadataEventArgs;
|
||||
use Doctrine\ORM\Events;
|
||||
|
||||
class TablePrefixSubscriber implements EventSubscriber
|
||||
{
|
||||
private $prefix;
|
||||
|
||||
public function __construct(string $prefix)
|
||||
{
|
||||
$this->prefix = $prefix;
|
||||
}
|
||||
|
||||
public function getSubscribedEvents(): array
|
||||
{
|
||||
return [Events::loadClassMetadata];
|
||||
}
|
||||
|
||||
public function loadClassMetadata(LoadClassMetadataEventArgs $args): void
|
||||
{
|
||||
$classMetadata = $args->getClassMetadata();
|
||||
|
||||
if (strpos($classMetadata->getName(), 'Websmid\\GiftDropdown\\') !== 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$tableName = $classMetadata->getTableName();
|
||||
|
||||
if (strpos($tableName, $this->prefix) === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$classMetadata->setPrimaryTable(['name' => $this->prefix . $tableName]);
|
||||
}
|
||||
}
|
||||
@@ -89,9 +89,16 @@ trait DisplayHooks
|
||||
|
||||
private function loadGiftPaperChoice(int $idOrder): ?string
|
||||
{
|
||||
$idCart = (int) Db::getInstance()->getValue(
|
||||
'SELECT `id_cart` FROM `' . _DB_PREFIX_ . 'orders` WHERE `id_order` = ' . $idOrder
|
||||
);
|
||||
if (!$idCart) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$value = Db::getInstance()->getValue(
|
||||
'SELECT `paper_choice` FROM `' . _DB_PREFIX_ . 'ws_gift_dropdown`
|
||||
WHERE `id_order` = ' . $idOrder
|
||||
WHERE `id_cart` = ' . $idCart
|
||||
);
|
||||
|
||||
return $value !== false ? (string) $value : null;
|
||||
|
||||
Reference in New Issue
Block a user