Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Caissin\CoreBundle\TNT;
- use Caissin\CoreBundle\Entity\Address;
- use Caissin\CoreBundle\Entity\Shipment;
- use libphonenumber\PhoneNumberUtil;
- use TNTExpress\Model\ParcelRequest;
- use TNTExpress\Model\PickUpRequest;
- use TNTExpress\Model\Receiver;
- use TNTExpress\Model\Sender;
- use winzou\Bundle\TNTExpressBundle\Entity\ExpeditionRequest;
- class ExpeditionFactory
- {
- /**
- * @var PhoneNumberUtil
- */
- protected $phoneUtil;
- public function __construct(PhoneNumberUtil $phoneUtil)
- {
- $this->phoneUtil = $phoneUtil;
- }
- public function createExpeditionFromShipment(Shipment $shipment, array $parameters)
- {
- return $this->createExpedition(
- $this->createSender($parameters['sender']),
- $this->createReceiver($shipment->getOrder()->getShippingAddress(), $shipment->getOrder()->getCustomer()->getEmail()),
- $this->createParcelRequest($shipment),
- $this->createPickupRequest($parameters['pickup']),
- $parameters['account_number']
- );
- }
- public function createExpedition(Sender $sender, Receiver $receiver, ParcelRequest $parcelRequest, PickUpRequest $pickupRequest, $accountNumber)
- {
- $expeditionRequest = new ExpeditionRequest();
- // If we're in the weekend, or if later than 2pm, then we ship the day after
- if (6 <= date('N') || 14 < date('G')) {
- $date = new \Datetime('+1 weekdays');
- } else {
- $date = new \Datetime();
- }
- $expeditionRequest->setShippingDate($date);
- $expeditionRequest->setAccountNumber($accountNumber);
- $expeditionRequest->setSender($sender);
- $expeditionRequest->setReceiver($receiver);
- $expeditionRequest->setQuantity(1);
- $expeditionRequest->setParcelsRequest(array($parcelRequest));
- $expeditionRequest->setPickupRequest($pickupRequest);
- return $expeditionRequest;
- }
- public function createSender(array $parameters)
- {
- $sender = new Sender();
- $sender->setName(substr($parameters['name'], 0, 32));
- $sender->setAddress1(substr($parameters['address1'], 0, 32));
- $sender->setAddress2(substr($parameters['address2'], 0, 32));
- $sender->setZipCode($parameters['zipcode']);
- $sender->setCity(substr($parameters['city'], 0, 27));
- return $sender;
- }
- public function createReceiver(Address $address, $email)
- {
- $receiver = new Receiver();
- $receiver->setAddress1(substr($address->getStreet(), 0, 32));
- $receiver->setAddress2(substr($address->getStreet2(), 0, 32));
- $receiver->setZipCode($address->getPostcode());
- $receiver->setCity(substr($address->getCity(), 0, 27));
- $receiver->setContactFirstName(substr($address->getFirstName(), 0, 12));
- $receiver->setContactLastName(substr($address->getLastName(), 0, 19));
- $receiver->setEmailAddress(substr($email, 0, 80));
- $receiver->setInstructions(substr($address->getIndication(), 0, 60));
- $receiver->setPhoneNumber('0'.$this->phoneUtil->parse($address->getPhoneNumber(), 'FR')->getNationalNumber());
- if (!$address->isDropoffPoint()) {
- if (null === $address->getCompany()) {
- $receiver->setType('INDIVIDUAL');
- } else {
- $receiver->setType('ENTERPRISE');
- $receiver->setName(substr($address->getCompany(), 0, 32));
- }
- } else {
- $receiver->setType('DROPOFFPOINT');
- $receiver->setTypeId($address->getTntCode());
- $receiver->setName(substr($address->getCompany(), 0, 32));
- }
- return $receiver;
- }
- public function createParcelRequest(Shipment $shipment)
- {
- $parcelRequest = new ParcelRequest();
- $parcelRequest->setSequenceNumber(1);
- $parcelRequest->setWeight($shipment->getShippingWeight());
- $parcelRequest->setCustomerReference(substr($shipment->getOrder()->getNumber(), 0, 30));
- return $parcelRequest;
- }
- public function createPickupRequest(array $parameters)
- {
- return new PickUpRequest(
- $parameters['phone_number'],
- $parameters['email'],
- $parameters['opening_hour']
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement