<?php

namespace App\Models\Usage;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;

use App\Models\Service\Broadband as ServiceBroadband;

class Broadband extends Model
{
	protected $casts = [
		'date'=>'datetime:Y-m-d',
	];

	protected $table = 'usage_broadband';
	public $timestamps = FALSE;

	private $traffic_end = 14;

	/* RELATIONS */

	public function broadband()
	{
		return $this->belongsTo(ServiceBroadband::class);
	}

	/* ATTRIBUTES */

	public function getTotalAttribute() {
		return $this->up_peak+$this->down_peak+$this->up_offpeak+$this->down_offpeak;
	}

	public function getTrafficMonthEndAttribute() {
		if ($this->date->day > $this->traffic_end) {
			// If we are the last day of the month, we'll temporarily take 3 days since Jan 31 and addMonth() results in March.
			if ($this->date->addMonth()->day != $this->date->day)
				$this->date=$this->date->subDays(3);

			return Carbon::createFromFormat('Y-m-d',$this->date->addMonth()->format('Y-m-').$this->traffic_end);
		} else {
			return Carbon::createFromFormat('Y-m-d',$this->date->format('Y-m-').$this->traffic_end);
		}
	}

	public function getTrafficMonthStartAttribute() {
		if ($this->date->day > $this->traffic_end) {
			return Carbon::createFromFormat('Y-m-d',$this->date->format('Y-m-').($this->traffic_end+1));
		} else {
			return Carbon::createFromFormat('Y-m-d',$this->date->subMonth()->format('Y-m-').($this->traffic_end+1));
		}
	}
}