|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / dev2.destoffenstraat.com / app / code / TIG / PostNL / Helper / DeliveryOptions / |
Filename | /home/dev2.destoffenstraat.com/app/code/TIG/PostNL/Helper/DeliveryOptions/PickupAddress.php |
Size | 4.79 kb |
Permission | rwxrwxrwx |
Owner | root : root |
Create time | 17-Aug-2025 10:26 |
Last modified | 20-Dec-2022 13:13 |
Last accessed | 22-Aug-2025 10:54 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
/**
*
* ..::..
* ..::::::::::::..
* ::'''''':''::'''''::
* ::.. ..: : ....::
* :::: ::: : : ::
* :::: ::: : ''' ::
* ::::..:::..::.....::
* ''::::::::::::''
* ''::''
*
*
* NOTICE OF LICENSE
*
* This source file is subject to the Creative Commons License.
* It is available through the world-wide-web at this URL:
* http://creativecommons.org/licenses/by-nc-nd/3.0/nl/deed.en_US
* If you are unable to obtain it through the world-wide-web, please send an email
* to servicedesk@tig.nl so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future. If you wish to customize this module for your
* needs please contact servicedesk@tig.nl for more information.
*
* @copyright Copyright (c) Total Internet Group B.V. https://tig.nl/copyright
* @license http://creativecommons.org/licenses/by-nc-nd/3.0/nl/deed.en_US
*/
namespace TIG\PostNL\Helper\DeliveryOptions;
use Magento\Checkout\Model\Session;
use Magento\Quote\Api\Data\AddressInterface;
use Magento\Quote\Model\Quote\AddressFactory;
class PickupAddress
{
const PG_ADDRESS_TYPE = 'pakjegemak';
/**
* @var bool|AddressInterface
*/
private $pickupAddress = false;
/**
* @var Session
*/
private $checkoutSession;
/**
* @var AddressFactory
*/
private $addressFactory;
/**
* @param Session $checkoutSession
* @param AddressFactory $addressFactory
*/
public function __construct(
Session $checkoutSession,
AddressFactory $addressFactory
) {
$this->checkoutSession = $checkoutSession;
$this->addressFactory = $addressFactory;
}
/**
* @return bool|AddressInterface
*/
public function get()
{
return $this->pickupAddress;
}
/**
* @param $address
* @throws \Magento\Framework\Exception\LocalizedException
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function set($address)
{
/** @var \Magento\Quote\Model\Quote $quote */
$quote = $this->checkoutSession->getQuote();
$this->remove();
$this->pickupAddress = $this->create($address, $quote);
$quote->addAddress($this->pickupAddress);
$quote->save();
}
/**
* @throws \Magento\Framework\Exception\LocalizedException
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function remove()
{
/** @var \Magento\Quote\Model\Quote $quote */
$quote = $this->checkoutSession->getQuote();
/** @var array|\Magento\Quote\Model\Quote\Address $foundAddress */
$foundAddress = $this->getPakjeGemakAddressInQuote($quote->getId());
if (!empty($foundAddress) && $foundAddress->getId()) {
$foundAddress->isDeleted(true);
$quote->removeAddress($foundAddress->getId());
}
$quote->save();
}
/**
* @param int $quoteId
*
* @return array|\Magento\Quote\Model\Quote\Address
*/
public function getPakjeGemakAddressInQuote($quoteId)
{
$quoteAddress = $this->addressFactory->create();
$collection = $quoteAddress->getCollection();
$collection->addFieldToFilter('quote_id', $quoteId);
$collection->addFieldToFilter('address_type', self::PG_ADDRESS_TYPE);
// @codingStandardsIgnoreLine
return $collection->setPageSize(1)->getFirstItem();
}
/**
* @param $pgData
* @param \Magento\Quote\Model\Quote $quote
* @return \Magento\Quote\Model\Quote\Address
* @throws \Exception
*/
private function create($pgData, $quote)
{
$address = $this->addressFactory->create();
$address->setQuoteId($quote->getId());
$address->setAddressType(self::PG_ADDRESS_TYPE);
$address->setCompany($pgData['Name']);
$address->setCity($pgData['City']);
$address->setCountryId($pgData['Countrycode']);
$address->setStreet($this->getStreet($pgData));
$address->setPostcode($pgData['Zipcode']);
$address->setFirstname($pgData['customer']['firstname']);
$address->setLastname($pgData['customer']['lastname']);
$telephone = $pgData['customer']['telephone'] ?? '';
$address->setTelephone($telephone);
$address->save();
return $address;
}
/**
* @param $address
*
* @return array
*/
private function getStreet($address)
{
$houseNr = $address['HouseNr'];
$houseNrExt = isset($address['HouseNrExt']) ? $address['HouseNrExt'] : null;
$street = [$address['Street'], $houseNr, $houseNrExt];
$street = (implode("\n", $street));
return $street;
}
}
/**
*
* ..::..
* ..::::::::::::..
* ::'''''':''::'''''::
* ::.. ..: : ....::
* :::: ::: : : ::
* :::: ::: : ''' ::
* ::::..:::..::.....::
* ''::::::::::::''
* ''::''
*
*
* NOTICE OF LICENSE
*
* This source file is subject to the Creative Commons License.
* It is available through the world-wide-web at this URL:
* http://creativecommons.org/licenses/by-nc-nd/3.0/nl/deed.en_US
* If you are unable to obtain it through the world-wide-web, please send an email
* to servicedesk@tig.nl so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future. If you wish to customize this module for your
* needs please contact servicedesk@tig.nl for more information.
*
* @copyright Copyright (c) Total Internet Group B.V. https://tig.nl/copyright
* @license http://creativecommons.org/licenses/by-nc-nd/3.0/nl/deed.en_US
*/
namespace TIG\PostNL\Helper\DeliveryOptions;
use Magento\Checkout\Model\Session;
use Magento\Quote\Api\Data\AddressInterface;
use Magento\Quote\Model\Quote\AddressFactory;
class PickupAddress
{
const PG_ADDRESS_TYPE = 'pakjegemak';
/**
* @var bool|AddressInterface
*/
private $pickupAddress = false;
/**
* @var Session
*/
private $checkoutSession;
/**
* @var AddressFactory
*/
private $addressFactory;
/**
* @param Session $checkoutSession
* @param AddressFactory $addressFactory
*/
public function __construct(
Session $checkoutSession,
AddressFactory $addressFactory
) {
$this->checkoutSession = $checkoutSession;
$this->addressFactory = $addressFactory;
}
/**
* @return bool|AddressInterface
*/
public function get()
{
return $this->pickupAddress;
}
/**
* @param $address
* @throws \Magento\Framework\Exception\LocalizedException
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function set($address)
{
/** @var \Magento\Quote\Model\Quote $quote */
$quote = $this->checkoutSession->getQuote();
$this->remove();
$this->pickupAddress = $this->create($address, $quote);
$quote->addAddress($this->pickupAddress);
$quote->save();
}
/**
* @throws \Magento\Framework\Exception\LocalizedException
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function remove()
{
/** @var \Magento\Quote\Model\Quote $quote */
$quote = $this->checkoutSession->getQuote();
/** @var array|\Magento\Quote\Model\Quote\Address $foundAddress */
$foundAddress = $this->getPakjeGemakAddressInQuote($quote->getId());
if (!empty($foundAddress) && $foundAddress->getId()) {
$foundAddress->isDeleted(true);
$quote->removeAddress($foundAddress->getId());
}
$quote->save();
}
/**
* @param int $quoteId
*
* @return array|\Magento\Quote\Model\Quote\Address
*/
public function getPakjeGemakAddressInQuote($quoteId)
{
$quoteAddress = $this->addressFactory->create();
$collection = $quoteAddress->getCollection();
$collection->addFieldToFilter('quote_id', $quoteId);
$collection->addFieldToFilter('address_type', self::PG_ADDRESS_TYPE);
// @codingStandardsIgnoreLine
return $collection->setPageSize(1)->getFirstItem();
}
/**
* @param $pgData
* @param \Magento\Quote\Model\Quote $quote
* @return \Magento\Quote\Model\Quote\Address
* @throws \Exception
*/
private function create($pgData, $quote)
{
$address = $this->addressFactory->create();
$address->setQuoteId($quote->getId());
$address->setAddressType(self::PG_ADDRESS_TYPE);
$address->setCompany($pgData['Name']);
$address->setCity($pgData['City']);
$address->setCountryId($pgData['Countrycode']);
$address->setStreet($this->getStreet($pgData));
$address->setPostcode($pgData['Zipcode']);
$address->setFirstname($pgData['customer']['firstname']);
$address->setLastname($pgData['customer']['lastname']);
$telephone = $pgData['customer']['telephone'] ?? '';
$address->setTelephone($telephone);
$address->save();
return $address;
}
/**
* @param $address
*
* @return array
*/
private function getStreet($address)
{
$houseNr = $address['HouseNr'];
$houseNrExt = isset($address['HouseNrExt']) ? $address['HouseNrExt'] : null;
$street = [$address['Street'], $houseNr, $houseNrExt];
$street = (implode("\n", $street));
return $street;
}
}