Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/ipol.sdek/classes/lib/SDEK/Controller/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/ipol.sdek/classes/lib/SDEK/Controller/RequestCalculate.php

<?php
namespace Ipolh\SDEK\SDEK\Controller;

use Ipolh\SDEK\Api\Entity\UniversalPart\CdekLocation;
use Ipolh\SDEK\Api\Entity\UniversalPart\PackageList;
use Ipolh\SDEK\Api\Entity\UniversalPart\Package;
use Ipolh\SDEK\Core\Delivery\Shipment;

trait RequestCalculate
{
    /**
     * @var Shipment
     */
    protected $coreShipment;

    /**
     * @return string
     */
    public function getSelfHash()
    {
        return $this->getSelfHashByRequestObj() . $this->coreShipment->getHash();
    }

    /**
     * @return CdekLocation
     */
    protected function generateLocationFrom()
    {
        $coreFrom = $this->coreShipment->getFrom();
        $cdekFrom = new CdekLocation();
        $cdekFrom
            ->setCode($coreFrom->getId())
            ->setPostalCode($coreFrom->getZip())
            ->setCountryCode($coreFrom->getField('countryCode')) // ISO_3166-1_alpha-2
            ->setCity($coreFrom->getName())
            ->setAddress($coreFrom->getField('fullAddress'));

        return $cdekFrom;
    }

    /**
     * @return CdekLocation
     */
    protected function generateLocationTo()
    {
        $coreTo = $this->coreShipment->getTo();
        $cdekTo = new CdekLocation();
        $cdekTo
            ->setCode($coreTo->getId())
            ->setPostalCode($coreTo->getZip())
            ->setCountryCode($coreTo->getField('countryCode')) // ISO_3166-1_alpha-2
            ->setCity($coreTo->getName())
            ->setAddress($coreTo->getField('fullAddress'));

        return $cdekTo;
    }

    /**
     * @return PackageList
     */
    protected function generatePackages()
    {
        $packCollection = new PackageList();

        $this->coreShipment->getCargoes()->reset();
        while($cargo = $this->coreShipment->getCargoes()->getNext()){
            $pack = new Package();
            $pack->setHeight((int)(ceil($cargo->getDimensions()['H']/10) ?: 1))
                ->setWidth((int)(ceil($cargo->getDimensions()['W']/10) ?: 1))
                ->setLength((int)(ceil($cargo->getDimensions()['L']/10) ?: 1))
                ->setWeight((int)(ceil($cargo->getWeight()) ?: 1));
            $packCollection->add($pack);
        }

        return $packCollection;
    }
}