HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/demo.sports-crowd.com/vendor/dnetix/redirection/src/Entities/Payment.php
<?php

namespace Dnetix\Redirection\Entities;

use Dnetix\Redirection\Contracts\Entity;
use Dnetix\Redirection\Traits\FieldsTrait;

class Payment extends Entity
{
    use FieldsTrait;

    protected string $reference;
    protected string $description = '';
    protected ?Amount $amount = null;
    protected bool $allowPartial = false;
    protected ?Person $shipping = null;
    /**
     * @var Item[]
     */
    protected array $items = [];
    protected ?Recurring $recurring = null;
    protected ?Discount $discount = null;
    protected ?Instrument $instrument = null;
    public bool $subscribe = false;
    protected ?int $agreement = null;
    protected string $agreementType = '';

    /** @var PaymentModifier[] */
    protected array $modifiers = [];

    public function __construct(array $data = [])
    {
        $this->load($data, ['reference', 'description', 'allowPartial', 'subscribe', 'agreement', 'agreementType']);

        $this->loadEntity($data['amount'] ?? null, 'amount', Amount::class);
        $this->loadEntity($data['recurring'] ?? null, 'recurring', Recurring::class);
        $this->loadEntity($data['shipping'] ?? null, 'shipping', Person::class);
        $this->loadEntity($data['discount'] ?? null, 'discount', Discount::class);

        if (isset($data['items'])) {
            $this->setItems($data['items']);
        }
        if (isset($data['fields'])) {
            $this->setFields($data['fields']);
        }
        if (isset($data['modifiers']) && is_array($data['modifiers'])) {
            $this->setModifiers($data['modifiers']);
        }
    }

    public function reference(): string
    {
        return $this->reference;
    }

    public function description(): string
    {
        return $this->description;
    }

    public function amount(): ?Amount
    {
        return $this->amount;
    }

    public function agreement(): ?int
    {
        return $this->agreement;
    }

    public function agreementType(): string
    {
        return $this->agreementType;
    }

    public function allowPartial(): bool
    {
        return filter_var($this->allowPartial, FILTER_VALIDATE_BOOLEAN);
    }

    public function shipping(): ?Person
    {
        return $this->shipping;
    }

    public function items(): array
    {
        return $this->items;
    }

    public function recurring(): ?Recurring
    {
        return $this->recurring;
    }

    public function subscribe(): bool
    {
        return $this->subscribe;
    }

    public function discount(): ?Discount
    {
        return $this->discount;
    }

    public function setReference($reference): self
    {
        $this->reference = $reference;
        return $this;
    }

    public function setDescription($description): self
    {
        $this->description = $description;
        return $this;
    }

    public function setItems(array $items): self
    {
        if (isset($items['item'])) {
            $items = $items['item'];
        }
        $this->items = array_map(function ($data) {
            return is_array($data) ? new Item($data) : $data;
        }, $items);

        return $this;
    }

    public function itemsToArray(): array
    {
        if ($this->items() && is_array($this->items())) {
            return array_map(function (Item $item) {
                return $item->toArray();
            }, $this->items());
        }

        return [];
    }

    /**
     * @return PaymentModifier[]
     */
    public function modifiers(): array
    {
        return $this->modifiers;
    }

    public function setModifiers(array $modifiers): self
    {
        $this->modifiers = [];

        foreach ($modifiers as $modifier) {
            $this->addModifier($modifier);
        }

        return $this;
    }

    public function addModifier($modifier): self
    {
        if (is_array($modifier)) {
            $modifier = new PaymentModifier($modifier);
        }

        if ($modifier instanceof PaymentModifier) {
            $this->modifiers[] = $modifier;
        }

        return $this;
    }

    public function modifiersToArray(): array
    {
        $modifiers = [];
        foreach ($this->modifiers as $modifier) {
            $modifiers[] = $modifier->toArray();
        }

        return $modifiers;
    }

    public function modifier(string $type, ?string $code = null): ?PaymentModifier
    {
        foreach ($this->modifiers as $modifier) {
            if ($modifier->type() === $type && (!$code || $code === $modifier->code())) {
                return $modifier;
            }
        }

        return null;
    }

    public function toArray(): array
    {
        return self::arrayFilter([
            'agreement' => $this->agreement(),
            'agreementType' => $this->agreementType(),
            'reference' => $this->reference(),
            'description' => $this->description(),
            'amount' => $this->amount() ? $this->amount()->toArray() : null,
            'shipping' => $this->shipping() ? $this->shipping()->toArray() : null,
            'items' => $this->itemsToArray(),
            'recurring' => $this->recurring() ? $this->recurring()->toArray() : null,
            'discount' => $this->discount() ? $this->discount()->toArray() : null,
            'fields' => $this->fieldsToArray(),
            'subscribe' => $this->subscribe() ?: null,
            'allowPartial' => $this->allowPartial ?: null,
            'modifiers' => $this->modifiersToArray(),
        ]);
    }
}