<?php

namespace App\Library\Action\Result;

use OneToMany\RichBundle\Contract\ResultInterface;

class GetMediaFromLibraryResult implements ResultInterface
{
    private bool $exists;
    private ?string $title = null;
    private ?string $imdbId = null;
    private ?string $mediaType = null;
    private ?array $episodes = null;
    private ?array $missingEpisodes = null;
    private ?array $seasons = null;
    private ?array $partialSeasons = null;
    private ?array $missingSeasons = null;
    private ?int $monitorCount = null; // Monitor Repo
    private ?int $activeMonitorCount = null; // Monitor Repo
    private ?int $completeMonitorCount = null; // Monitor Repo

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

    public function notExists(): bool
    {
        return !$this->exists;
    }

    public function setExists(bool $exists): void
    {
        $this->exists = $exists;
    }

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

    public function setTitle(?string $title): void
    {
        $this->title = $title;
    }

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

    public function setImdbId(?string $imdbId): void
    {
        $this->imdbId = $imdbId;
    }

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

    public function setMediaType(?string $mediaType): void
    {
        $this->mediaType = $mediaType;
    }

    public function getEpisodes(): ?array
    {
        return $this->episodes;
    }

    public function setEpisodes(?array $episodes): void
    {
        $this->episodes = $episodes;
    }

    public function getEpisodeCount(): ?int
    {
        return count($this->episodes);
    }

    public function getMissingEpisodes(): ?array
    {
        return $this->missingEpisodes;
    }

    public function setMissingEpisodes(?array $missingEpisodes): void
    {
        $this->missingEpisodes = $missingEpisodes;
    }

    public function getMissingEpisodeCount(): ?int
    {
        return count($this->missingEpisodes);
    }

    public function getSeasons(): ?array
    {
        return $this->seasons;
    }

    public function setSeasons(?array $seasons): void
    {
        $this->seasons = $seasons;
    }

    public function getSeasonCount(): ?int
    {
        return count($this->seasons);
    }

    public function getPartialSeasons(): ?array
    {
        return $this->partialSeasons;
    }

    public function setPartialSeasons(?array $partialSeasons): void
    {
        $this->partialSeasons = $partialSeasons;
    }

    public function getPartialSeasonCount(): ?int
    {
        return count($this->partialSeasons);
    }

    public function getMissingSeasons(): ?array
    {
        return $this->missingSeasons;
    }

    public function setMissingSeasons(?array $missingSeasons): void
    {
        $this->missingSeasons = $missingSeasons;
    }

    public function getMissingSeasonCount(): ?int
    {
        return count($this->missingSeasons);
    }

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

    public function setMonitorCount(?int $monitorCount): void
    {
        $this->monitorCount = $monitorCount;
    }

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

    public function setActiveMonitorCount(?int $activeMonitorCount): void
    {
        $this->activeMonitorCount = $activeMonitorCount;
    }

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

    public function setCompleteMonitorCount(?int $completeMonitorCount): void
    {
        $this->completeMonitorCount = $completeMonitorCount;
    }
}
