EFL
Builders

AssetToCalculationBuilder

Fluent builder for constructing AssetToCalculation baskets for basic offer calculations.

Namespace and purpose

Imoli\EflLeasingSdk\Builder\AssetToCalculationBuilder is a fluent helper for building AssetToCalculation instances. It is typically used before calling EflClient::calculateBasicOffer() or the low‑level CalculationApiClient::calculateBasicOffer().

Class definition

  • Namespace: Imoli\EflLeasingSdk\Builder
  • Class: final AssetToCalculationBuilder
  • Builds: Imoli\EflLeasingSdk\Model\Calculation\AssetToCalculation
namespace Imoli\EflLeasingSdk\Builder;

use Imoli\EflLeasingSdk\Model\Calculation\AssetToCalculation;
use Imoli\EflLeasingSdk\Model\Calculation\OfferItem;

final class AssetToCalculationBuilder
{
    public function withTransactionId(string $transactionId): self;

    /** @return $this */
    public function addOfferItem(OfferItem $item): self;

    /**
     * @param OfferItem[] $items
     * @return $this
     */
    public function withOfferItems(array $items): self;

    public function withReturnToBasketUrl(?string $returnToBasketUrl): self;

    public function withBasketCalculation(?bool $basketCalculation): self;

    public function build(): AssetToCalculation;

    public static function create(string $transactionId): self;
}

Fluent API

  • withTransactionId(string $transactionId): self
    Sets the transaction identifier for the calculation request.
  • addOfferItem(OfferItem $item): self
    Appends a single OfferItem to the basket.
  • withOfferItems(OfferItem $items): self
    Replaces the current list of offer items with the provided array.
  • withReturnToBasketUrl(?string $returnToBasketUrl): self
    Optionally sets the returnToBasketUrl used to redirect the user back to the basket.
  • withBasketCalculation(?bool $basketCalculation): self
    Controls whether the calculation is performed for the entire basket.
  • build(): AssetToCalculation
    • Validates that transactionId is set and at least one OfferItem is present.
    • Throws \LogicException if required data is missing.
    • Returns a fully‑initialised AssetToCalculation instance.
  • static create(string $transactionId): self
    Convenience factory that returns a new builder with transactionId already set.

Usage examples

Basic basket for calculation

use Imoli\EflLeasingSdk\Builder\AssetToCalculationBuilder;
use Imoli\EflLeasingSdk\Builder\OfferItemBuilder;
use Imoli\EflLeasingSdk\Builder\ItemDetailBuilder;

$itemDetail = ItemDetailBuilder::create('asset-code', 'Laptop X')
    ->build();

$offerItem = OfferItemBuilder::create(1, 'asset-guid-1', 23.0, [$itemDetail])
    ->build();

$basket = AssetToCalculationBuilder::create('tx-1')
    ->addOfferItem($offerItem)
    ->withReturnToBasketUrl('https://shop.example.com/basket')
    ->withBasketCalculation(true)
    ->build();

Using with EflClient

use Imoli\EflLeasingSdk\EflClient;

// $eflClient is an instance of EflClient configured for sandbox or production
$result = $eflClient->calculateBasicOffer($basket, $bearerToken);