<?php

namespace Easymailing\App\Model;

class SynchronizationConfig
{
	private $shopId;
	private $shopName;
	private $audience = null;
	private $audienceJson = null;
	private $group;
	private $shopDomain;
	private $appDomain;
	private $language;
	private $timeZone;
	private $lastBatchOperationId = null;
	private $treatmentPurposes = [];
	private $booleanListFields = [];
	private $onlyCustomers = false;
	private $enableLogs = false;
	private $useAccountEmail = false;
	private $validateCheckoutPhone = false;

	public static function create(): self
	{
		return new self();
	}

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

	public function setShopId(?string $shopId): self
	{
		$this->shopId = $shopId;
		return $this;
	}

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

	public function setShopName(?string $shopName): self
	{
		$this->shopName = $shopName;
		return $this;
	}

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

	public function setAudience(?string $audience): self
	{
		$this->audience = $audience;
		return $this;
	}

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

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

	/**
	 * @return mixed
	 */
	public function getGroup()
	{
		return $this->group;
	}

	/**
	 * @param mixed $group
	 */
	public function setGroup($group): self
	{
		$this->group = $group;
		return $this;
	}

	/**
	 * @return mixed
	 */
	public function getShopDomain()
	{
		return $this->shopDomain;
	}

	/**
	 * @param mixed $shopDomain
	 */
	public function setShopDomain($shopDomain): self
	{
		$this->shopDomain = $shopDomain;
		return $this;
	}

	/**
	 * @return mixed
	 */
	public function getAppDomain()
	{
		return $this->appDomain;
	}

	/**
	 * @param mixed $appDomain
	 */
	public function setAppDomain($appDomain): void
	{
		$this->appDomain = $appDomain;
	}



	/**
	 * @return mixed
	 */
	public function getLanguage()
	{
		return $this->language;
	}

	/**
	 * @param mixed $language
	 */
	public function setLanguage($language): self
	{
		$this->language = $language;
		return $this;
	}

	/**
	 * @return mixed
	 */
	public function getTimeZone()
	{
		return $this->timeZone;
	}

	/**
	 * @param mixed $timeZone
	 */
	public function setTimeZone($timeZone): self
	{
		$this->timeZone = $timeZone;
		return $this;
	}

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

	public function setLastBatchOperationId( ?string $lastBatchOperationId): self
	{
		$this->lastBatchOperationId = $lastBatchOperationId;
		return $this;
	}

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

	public function setTreatmentPurposes(array $treatmentPurposes): self
	{
		$this->treatmentPurposes = $treatmentPurposes;
		return $this;
	}

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

	public function setBooleanListFields(array $booleanListFields): self
	{
		$this->booleanListFields = $booleanListFields;
		return $this;
	}

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

	public function setOnlyCustomers(bool $onlyCustomers): self
	{
		$this->onlyCustomers = $onlyCustomers;
		return $this;
	}

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

	public function setEnableLogs(bool $enableLogs): self
	{
		$this->enableLogs = $enableLogs;
		return $this;
	}

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

	public function setUseAccountEmail(bool $useAccountEmail): self
	{
		$this->useAccountEmail = $useAccountEmail;
		return $this;
	}

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

	public function setValidateCheckoutPhone(bool $validateCheckoutPhone): self
	{
		$this->validateCheckoutPhone = $validateCheckoutPhone;
		return $this;
	}

}
