first commit

This commit is contained in:
2025-08-02 16:30:27 +02:00
commit 23646bfcee
14851 changed files with 1750626 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
<?php
declare(strict_types=1);
namespace KupShop\UserAddressesBundle\EventSubscriber;
use KupShop\KupShopBundle\Context\UserContext;
use KupShop\OrderingBundle\Event\CartEvent;
use KupShop\UserAddressesBundle\Entity\DeliveryAddressEntity;
use KupShop\UserAddressesBundle\Util\UserAddressesUtil;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Contracts\Service\Attribute\Required;
class CartSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
CartEvent::CHECK_CART => [
['checkCart', 200],
],
];
}
private UserAddressesUtil $userAddressesUtil;
private UserContext $userContext;
public function checkCart(CartEvent $event): void
{
$cart = $event->getCart();
$address = $cart->getData('new_address');
// Fields exists so we need to check if some required field is not empty
if (empty($address['street'])) {
return;
}
$createNew = $address['save'] ?? false;
unset($address['save']);
if ($createNew) {
if ($userId = $this->userContext->getActiveId()) {
$entity = (new DeliveryAddressEntity())->setName($address['name'] ?? '')
->setSurname($address['surname'] ?? '')
->setFirm($address['firm'] ?? '')
->setStreet($address['street'] ?? '')
->setCity($address['city'] ?? '')
->setZip($address['zip'] ?? '')
->setCountry($address['country'] ?? '')
->setCurrency($address['currency'] ?? '')
->setPhone($address['phone'] ?? '')
->setState($address['state'] ?? '')
->setEmail($address['email'] ?? '')
->setCustomAddress($address['custom_address'] ?? '')
->setIdUser($userId);
$this->userAddressesUtil->saveDeliveryAddress($entity);
}
}
$cart->updateAddresses($cart->invoice, $address);
}
#[Required]
public function setUserAddressesUtil(UserAddressesUtil $userAddressesUtil): void
{
$this->userAddressesUtil = $userAddressesUtil;
}
#[Required]
public function setUserContext(UserContext $userContext): void
{
$this->userContext = $userContext;
}
}