<?php

namespace App\Services;

class SiteSyncResult
{
    private $successful;
    private $statusCode;
    private $errorMessage;

    private function __construct(bool $successful, ?int $statusCode, ?string $errorMessage)
    {
        $this->successful = $successful;
        $this->statusCode = $statusCode;
        $this->errorMessage = $errorMessage;
    }

    public static function success(int $statusCode): self
    {
        return new self(true, $statusCode, null);
    }

    public static function failure(?int $statusCode, string $errorMessage): self
    {
        return new self(false, $statusCode, $errorMessage);
    }

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

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

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