<?php
/**
* Classe BackupValidate.class.php
* @filesource
* @autor		Kenio de Souza
* @copyright	Copyright 2024 - Souza Consultoria Tecnológica
* @package		vendor
* @subpackage	controller/backup
* @version		1.0
* @date		 	10/08/2024
*/


/** Defino o local onde esta a classe */
namespace vendor\controller\backup;

/** Importação de classes */
use vendor\controller\main\Main;

class BackupValidate
{
	/** Declaro as variavéis da classe */
    private $Main = null;
    private $errors = array();
    private $info = null;
	private $backupId = null;
	private $clientId = null;
	private $file = null;
	private $fileDate = null;
	private $fileHour = null;
	private $period = null;
	private $day = null;
	private $size = null;
	private $path = null;
	private $dateRegister = null;

	/** Construtor da classe */
	function __construct()
	{

		/** Instânciamento da classe de validação */
		$this->Main = new Main();

	}

	/** Método trata campo backup_id */
	public function setBackupId(int $backupId) : void
	{

		/** Trata a entrada da informação  */
		$this->backupId = isset($backupId) ? $this->Main->antiInjection($backupId) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->backupId))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "backup_id", deve ser informado');

		}

	}

	/** Método trata campo client_id */
	public function setClientId(int $clientId) : void
	{

		/** Trata a entrada da informação  */
		$this->clientId = isset($clientId) ? $this->Main->antiInjection($clientId) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->clientId))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "client_id", deve ser informado');

		}

	}

	/** Método trata campo file */
	public function setFile(string $file) : void
	{

		/** Trata a entrada da informação  */
		$this->file = isset($file) ? $this->Main->antiInjection($file) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->file))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "file", deve ser informado');

		}

	}

	/** Método trata campo file_date */
	public function setFileDate(string $fileDate) : void
	{

		/** Trata a entrada da informação  */
		$this->fileDate = isset($fileDate) ? $this->Main->antiInjection($fileDate) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->fileDate))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "file_date", deve ser informado');

		}

	}

	/** Método trata campo file_hour */
	public function setFileHour(string $fileHour) : void
	{

		/** Trata a entrada da informação  */
		$this->fileHour = isset($fileHour) ? $this->Main->antiInjection($fileHour) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->fileHour))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "file_hour", deve ser informado');

		}

	}

	/** Método trata campo period */
	public function setPeriod(int $period) : void
	{

		/** Trata a entrada da informação  */
		$this->period = isset($period) ? $this->Main->antiInjection($period) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->period))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "period", deve ser informado');

		}

	}

	/** Método trata campo day */
	public function setDay(string $day) : void
	{

		/** Trata a entrada da informação  */
		$this->day = isset($day) ? $this->Main->antiInjection($day) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->day))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "day", deve ser informado');

		}

	}

	/** Método trata campo size */
	public function setSize(string $size) : void
	{

		/** Trata a entrada da informação  */
		$this->size = isset($size) ? $this->Main->antiInjection($size) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->size))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "size", deve ser informado');

		}

	}

	/** Método trata campo path */
	public function setPath(string $path) : void
	{

		/** Trata a entrada da informação  */
		$this->path = isset($path) ? $this->Main->antiInjection($path) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->path))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "path", deve ser informado');

		}

	}

	/** Método trata campo date_register */
	public function setDateRegister(string $dateRegister) : void
	{

		/** Trata a entrada da informação  */
		$this->dateRegister = isset($dateRegister) ? $this->Main->antiInjection($dateRegister) : null;

		/** Verifica se a informação foi informada */
		if(empty($this->dateRegister))
		{

			/** Adição de elemento */
			array_push($this->errors, 'O campo "date_register", deve ser informado');

		}

	}

	/** Método retorna campo backup_id */
	public function getBackupId() : ? int
	{

		/** Retorno da informação */
		return (int)$this->backupId;

	}

	/** Método retorna campo client_id */
	public function getClientId() : ? int
	{

		/** Retorno da informação */
		return (int)$this->clientId;

	}

	/** Método retorna campo file */
	public function getFile() : ? string
	{

		/** Retorno da informação */
		return (string)$this->file;

	}

	/** Método retorna campo file_date */
	public function getFileDate() : ? string
	{

		/** Retorno da informação */
		return (string)$this->fileDate;

	}

	/** Método retorna campo file_hour */
	public function getFileHour() : ? string
	{

		/** Retorno da informação */
		return (string)$this->fileHour;

	}

	/** Método retorna campo period */
	public function getPeriod() : ? int
	{

		/** Retorno da informação */
		return (int)$this->period;

	}

	/** Método retorna campo day */
	public function getDay() : ? string
	{

		/** Retorno da informação */
		return (string)$this->day;

	}

	/** Método retorna campo size */
	public function getSize() : ? string
	{

		/** Retorno da informação */
		return (string)$this->size;

	}

	/** Método retorna campo path */
	public function getPath() : ? string
	{

		/** Retorno da informação */
		return (string)$this->path;

	}

	/** Método retorna campo date_register */
	public function getDateRegister() : ? string
	{

		/** Retorno da informação */
		return (string)$this->dateRegister;

	}

	public function getErrors(): ? string
	{

		/** Verifico se deve informar os erros */
		if (count($this->errors)) {

	   		/** Verifica a quantidade de erros para informar a legenda */
	   		$this->info = count($this->errors) > 1 ? '<center>Os seguintes erros foram encontrados</center>' : '<center>O seguinte erro foi encontrado</center>';

	    	/** Lista os erros  */
	    	foreach ($this->errors as $keyError => $error) {

	        	/** Monto a mensagem de erro */
	        	$this->info .= '</br>' . ($keyError + 1) . ' - ' . $error;

    		}

    		/** Retorno os erros encontrados */
    		return (string)$this->info;

		} else {

    		return false;

		}

	}

	function __destruct(){}

}
