<?php

namespace App\Models\Service;

/**
 * Class Phone (Service)
 * Services that are Voice Telephony
 */
class Phone extends Type
{
	protected $dates = [
		'connect_at',
		'expire_at',
	];
	protected $table = 'service_phone';

	/* INTERFACES */

	/**
	 * Return the service address
	 *
	 * @return string
	 */
	public function getServiceDescriptionAttribute(): string
	{
		return strtoupper($this->service_address) ?: '-';
	}

	/**
	 * Return the service number
	 *
	 * @return string
	 */
	public function getServiceNameAttribute(): string
	{
		return $this->service_number ?: ($this->service_address ?: '-');
	}

	/* ATTRIBUTES */

	/**
	 * The type of technology used to provide this Internet Service
	 *
	 * @param $value
	 * @return null|string
	 */
	public function getTechnologyAttribute($value): ?string
	{
		return $value ?: $this->supplied()->technology;
	}

	/* OVERRIDES */

	/**
	 * Service update validation
	 *
	 * @return array
	 */
	public function validation(): array
	{
		return [
			'service_number' => 'nullable|string|min:10|max:10',
			'service_address' => 'nullable|string|min:3',
			'service_username' => 'nullable|string',
			'service_password' => 'nullable|string',
			'connect_at' => 'nullable|date',
			'start_at' => 'nullable|date',
			'expire_at' => 'nullable|date|after:start_at',
		];
	}
}