Advertisement
Guest User

Untitled

a guest
May 30th, 2016
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Caissin\CoreBundle\TNT;
  4.  
  5. use Caissin\CoreBundle\Entity\Address;
  6. use Caissin\CoreBundle\Entity\Shipment;
  7. use libphonenumber\PhoneNumberUtil;
  8. use TNTExpress\Model\ParcelRequest;
  9. use TNTExpress\Model\PickUpRequest;
  10. use TNTExpress\Model\Receiver;
  11. use TNTExpress\Model\Sender;
  12. use winzou\Bundle\TNTExpressBundle\Entity\ExpeditionRequest;
  13.  
  14. class ExpeditionFactory
  15. {
  16. /**
  17. * @var PhoneNumberUtil
  18. */
  19. protected $phoneUtil;
  20.  
  21. public function __construct(PhoneNumberUtil $phoneUtil)
  22. {
  23. $this->phoneUtil = $phoneUtil;
  24. }
  25.  
  26. public function createExpeditionFromShipment(Shipment $shipment, array $parameters)
  27. {
  28. return $this->createExpedition(
  29. $this->createSender($parameters['sender']),
  30. $this->createReceiver($shipment->getOrder()->getShippingAddress(), $shipment->getOrder()->getCustomer()->getEmail()),
  31. $this->createParcelRequest($shipment),
  32. $this->createPickupRequest($parameters['pickup']),
  33. $parameters['account_number']
  34. );
  35. }
  36.  
  37. public function createExpedition(Sender $sender, Receiver $receiver, ParcelRequest $parcelRequest, PickUpRequest $pickupRequest, $accountNumber)
  38. {
  39. $expeditionRequest = new ExpeditionRequest();
  40.  
  41. // If we're in the weekend, or if later than 2pm, then we ship the day after
  42. if (6 <= date('N') || 14 < date('G')) {
  43. $date = new \Datetime('+1 weekdays');
  44. } else {
  45. $date = new \Datetime();
  46. }
  47.  
  48. $expeditionRequest->setShippingDate($date);
  49. $expeditionRequest->setAccountNumber($accountNumber);
  50. $expeditionRequest->setSender($sender);
  51. $expeditionRequest->setReceiver($receiver);
  52. $expeditionRequest->setQuantity(1);
  53. $expeditionRequest->setParcelsRequest(array($parcelRequest));
  54. $expeditionRequest->setPickupRequest($pickupRequest);
  55.  
  56. return $expeditionRequest;
  57. }
  58.  
  59. public function createSender(array $parameters)
  60. {
  61. $sender = new Sender();
  62.  
  63. $sender->setName(substr($parameters['name'], 0, 32));
  64. $sender->setAddress1(substr($parameters['address1'], 0, 32));
  65. $sender->setAddress2(substr($parameters['address2'], 0, 32));
  66. $sender->setZipCode($parameters['zipcode']);
  67. $sender->setCity(substr($parameters['city'], 0, 27));
  68.  
  69. return $sender;
  70. }
  71.  
  72. public function createReceiver(Address $address, $email)
  73. {
  74. $receiver = new Receiver();
  75.  
  76. $receiver->setAddress1(substr($address->getStreet(), 0, 32));
  77. $receiver->setAddress2(substr($address->getStreet2(), 0, 32));
  78. $receiver->setZipCode($address->getPostcode());
  79. $receiver->setCity(substr($address->getCity(), 0, 27));
  80. $receiver->setContactFirstName(substr($address->getFirstName(), 0, 12));
  81. $receiver->setContactLastName(substr($address->getLastName(), 0, 19));
  82. $receiver->setEmailAddress(substr($email, 0, 80));
  83. $receiver->setInstructions(substr($address->getIndication(), 0, 60));
  84. $receiver->setPhoneNumber('0'.$this->phoneUtil->parse($address->getPhoneNumber(), 'FR')->getNationalNumber());
  85.  
  86. if (!$address->isDropoffPoint()) {
  87. if (null === $address->getCompany()) {
  88. $receiver->setType('INDIVIDUAL');
  89. } else {
  90. $receiver->setType('ENTERPRISE');
  91. $receiver->setName(substr($address->getCompany(), 0, 32));
  92. }
  93. } else {
  94. $receiver->setType('DROPOFFPOINT');
  95. $receiver->setTypeId($address->getTntCode());
  96. $receiver->setName(substr($address->getCompany(), 0, 32));
  97. }
  98.  
  99. return $receiver;
  100. }
  101.  
  102. public function createParcelRequest(Shipment $shipment)
  103. {
  104. $parcelRequest = new ParcelRequest();
  105.  
  106. $parcelRequest->setSequenceNumber(1);
  107. $parcelRequest->setWeight($shipment->getShippingWeight());
  108. $parcelRequest->setCustomerReference(substr($shipment->getOrder()->getNumber(), 0, 30));
  109.  
  110. return $parcelRequest;
  111. }
  112.  
  113. public function createPickupRequest(array $parameters)
  114. {
  115. return new PickUpRequest(
  116. $parameters['phone_number'],
  117. $parameters['email'],
  118. $parameters['opening_hour']
  119. );
  120. }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement