public function build(BasketInterface $basket)
    {
        $basket->setProductPool($this->productPool);

        foreach ($basket->getBasketElements() as $basketElement) {
            if (null === $basketElement->getProduct()) {
                // restore information
                if (null === $basketElement->getProductCode()) {
                    throw new \RuntimeException('The product code is empty');
                }

                $productDefinition = $this->productPool->getProduct($basketElement->getProductCode());
                $basketElement->setProductDefinition($productDefinition);
            }
        }

        // load the delivery address
        $deliveryAddressId = $basket->getDeliveryAddressId();

        if ($deliveryAddressId) {
            $address = $this->addressManager->findOneBy(['id' => $deliveryAddressId]);

            $basket->setDeliveryAddress($address);
        }

        $deliveryMethodCode = $basket->getDeliveryMethodCode();

        if ($deliveryMethodCode) {
            $basket->setDeliveryMethod($this->deliveryPool->getMethod($deliveryMethodCode));
        }

        // load the payment address
        $billingAddressId = $basket->getBillingAddressId();

        if ($billingAddressId) {
            $address = $this->addressManager->findOneBy(['id' => $billingAddressId]);
            $basket->setBillingAddress($address);
        }

        // load the payment method
        $paymentMethodCode = $basket->getPaymentMethodCode();

        if ($paymentMethodCode) {
            $basket->setPaymentMethod($this->paymentPool->getMethod($paymentMethodCode));
        }

        $basket->buildPrices();
    }
public function build(BasketInterface $basket)
    {
        $basket->setProductPool($this->productPool);

        foreach ($basket->getBasketElements() as $basketElement) {
            if (null === $basketElement->getProduct()) {
                // restore information
                if (null === $basketElement->getProductCode()) {
                    throw new \RuntimeException('The product code is empty');
                }

                $productDefinition = $this->productPool->getProduct($basketElement->getProductCode());
                $basketElement->setProductDefinition($productDefinition);
            }
        }

        // load the delivery address
        $deliveryAddressId = $basket->getDeliveryAddressId();

        if ($deliveryAddressId) {
            $address = $this->addressManager->findOneBy(['id' => $deliveryAddressId]);

            $basket->setDeliveryAddress($address);
        }

        $deliveryMethodCode = $basket->getDeliveryMethodCode();

        if ($deliveryMethodCode) {
            $basket->setDeliveryMethod($this->deliveryPool->getMethod($deliveryMethodCode));
        }

        // load the payment address
        $billingAddressId = $basket->getBillingAddressId();

        if ($billingAddressId) {
            $address = $this->addressManager->findOneBy(['id' => $billingAddressId]);
            $basket->setBillingAddress($address);
        }

        // load the payment method
        $paymentMethodCode = $basket->getPaymentMethodCode();

        if ($paymentMethodCode) {
            $basket->setPaymentMethod($this->paymentPool->getMethod($paymentMethodCode));
        }

        $basket->buildPrices();
    }
public function build ( BasketInterface $ basket ) { $ basket -> setProductPool ( $ this -> productPool ) ; foreach ( $ basket -> getBasketElements ( ) as $ basketElement ) { if ( null === $ basketElement -> getProduct ( ) ) { // restore information if ( null === $ basketElement -> getProductCode ( ) ) { throw new \ RuntimeException ( 'The product code is empty' ) ; } $ productDefinition = $ this -> productPool -> getProduct ( $ basketElement -> getProductCode ( ) ) ; $ basketElement -> setProductDefinition ( $ productDefinition ) ; } } // load the delivery address $ deliveryAddressId = $ basket -> getDeliveryAddressId ( ) ; if ( $ deliveryAddressId ) { $ address = $ this -> addressManager -> findOneBy ( [ 'id' => $ deliveryAddressId ] ) ; $ basket -> setDeliveryAddress ( $ address ) ; } $ deliveryMethodCode = $ basket -> getDeliveryMethodCode ( ) ; if ( $ deliveryMethodCode ) { $ basket -> setDeliveryMethod ( $ this -> deliveryPool -> getMethod ( $ deliveryMethodCode ) ) ; } // load the payment address $ billingAddressId = $ basket -> getBillingAddressId ( ) ; if ( $ billingAddressId ) { $ address = $ this -> addressManager -> findOneBy ( [ 'id' => $ billingAddressId ] ) ; $ basket -> setBillingAddress ( $ address ) ; } // load the payment method $ paymentMethodCode = $ basket -> getPaymentMethodCode ( ) ; if ( $ paymentMethodCode ) { $ basket -> setPaymentMethod ( $ this -> paymentPool -> getMethod ( $ paymentMethodCode ) ) ; } $ basket -> buildPrices ( ) ; }
Build a basket.

@param \Sonata\Component\Basket\BasketInterface $basket

@throws \RuntimeException
Build a basket .