<?php
declare(strict_types=1);

namespace Autogedal\PayPo\Model;

class PayPoContext
{
    private bool $sendingApprovedEmail = false;
    private bool $approvingOrder = false;
    private bool $approvalSucceeded = false;
    private ?int $approvingOrderId = null;

    public function setSendingApprovedEmail(bool $flag): void
    {
        $this->sendingApprovedEmail = $flag;
    }

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

    public function setApprovingOrder(bool $flag): void
    {
        $this->approvingOrder = $flag;
        if ($flag) {
            $this->approvalSucceeded = false;
        } else {
            $this->approvingOrderId = null;
        }
    }

    public function setApprovingOrderId(int $orderId): void
    {
        $this->approvingOrderId = $orderId;
    }

    public function appliesToOrder(int|string|null $orderId): bool
    {
        return $this->approvingOrder && $this->approvingOrderId !== null
            && $orderId !== null && $this->approvingOrderId === (int)$orderId;
    }

    public function setApprovalSucceeded(bool $succeeded): void
    {
        $this->approvalSucceeded = $succeeded;
    }

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

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