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


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

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

class StationDiskValidate
{
	/** Declaro as variavéis da classe */
    private $Main = null;
    private $errors = array();
    private $info = null;
	private $stationDiskId = null;
	private $stationId = null;
	private $description = null;
	private $capacity = null;
	private $used = null;
	private $available = null;
	private $availablePercentage = null;
	private $registrationDate = null;

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

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

	}

	/** Método trata campo station_disk_id */
	public function setStationDiskId(int $stationDiskId) : void
	{

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

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

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

		}

	}

	/** Método trata campo station_id */
	public function setStationId(int $stationId) : void
	{

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

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

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

		}

	}

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

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

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

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

		}

	}

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

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

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

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

		}

	}

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

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

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

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

		}

	}

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

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

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

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

		}

	}

	/** Método trata campo available_percentage */
	public function setAvailablePercentage(string $availablePercentage) : void
	{

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

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

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

		}

	}

	/** Método trata campo registration_date */
	public function setRegistrationDate(string $registrationDate) : void
	{

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

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

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

		}

	}

	/** Método retorna campo station_disk_id */
	public function getStationDiskId() : ? int
	{

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

	}

	/** Método retorna campo station_id */
	public function getStationId() : ? int
	{

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

	}

	/** Método retorna campo description */
	public function getDescription() : ? string
	{

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

	}

	/** Método retorna campo capacity */
	public function getCapacity() : ? string
	{

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

	}

	/** Método retorna campo used */
	public function getUsed() : ? string
	{

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

	}

	/** Método retorna campo available */
	public function getAvailable() : ? string
	{

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

	}

	/** Método retorna campo available_percentage */
	public function getAvailablePercentage() : ? string
	{

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

	}

	/** Método retorna campo registration_date */
	public function getRegistrationDate() : ? string
	{

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

	}

	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(){}

}
