<?php

namespace App\DTO;

use App\Entity\Campaign;
use DateTime;

final class KeywordPositionDTO
{
    /**
     * @var Campaign
     */
    private $campaign;
    /**
     * @var string
     */
    private $keyword;
    /**
     * @var int
     */
    private $position;
    /**
     * @var DateTime
     */
    private $date;
    /**
     * @var float|null
     */
    private $googleAdWordsCPC;
    /**
     * @var int|null
     */
    private $monthlySearches;
    /**
     * @var string|null
     */
    private $landingUrl;
    /**
     * @var int|null
     */
    private $diff;
    /**
     * @var int|null
     */
    private $diff1;
    /**
     * @var int|null
     */
    private $diff7;
    /**
     * @var int|null
     */
    private $diff30;

    public function __construct(
        Campaign $campaign,
        string $keyword,
        int $position,
        DateTime $date,
        ?float $googleAdWordsCPC,
        ?int $monthlySearches,
        ?string $landingUrl,
        ?int $diff,
        ?int $diff1,
        ?int $diff7,
        ?int $diff30
    ) {
        $this->campaign = $campaign;
        $this->keyword = $keyword;
        $this->position = $position;
        $this->date = $date;
        $this->googleAdWordsCPC = $googleAdWordsCPC;
        $this->monthlySearches = $monthlySearches;
        $this->landingUrl = $landingUrl;
        $this->diff = $diff;
        $this->diff1 = $diff1;
        $this->diff7 = $diff7;
        $this->diff30 = $diff30;
    }

    /**
     * @return Campaign
     */
    public function getCampaign(): Campaign
    {
        return $this->campaign;
    }

    /**
     * @return string
     */
    public function getKeyword(): string
    {
        return $this->keyword;
    }

    /**
     * @return int
     */
    public function getPosition(): int
    {
        return $this->position;
    }

    /**
     * @return DateTime
     */
    public function getDate(): DateTime
    {
        return $this->date;
    }

    /**
     * @return float|null
     */
    public function getGoogleAdWordsCPC(): ?float
    {
        return $this->googleAdWordsCPC;
    }

    /**
     * @return int|null
     */
    public function getMonthlySearches(): ?int
    {
        return $this->monthlySearches;
    }

    /**
     * @return string|null
     */
    public function getLandingUrl(): ?string
    {
        return $this->landingUrl;
    }

    /**
     * @return int|null
     */
    public function getDiff(): ?int
    {
        return $this->diff;
    }

    /**
     * @return int|null
     */
    public function getDiff1(): ?int
    {
        return $this->diff1;
    }

    /**
     * @return int|null
     */
    public function getDiff7(): ?int
    {
        return $this->diff7;
    }

    /**
     * @return int|null
     */
    public function getDiff30(): ?int
    {
        return $this->diff30;
    }
}
