<?php /* * Copyright (c) 2021 LatePoint LLC. All rights reserved. */ namespace LatePoint\Misc; class WorkPeriod{ public ?string $custom_date = null; public int $week_day; public int $start_time = 0; public int $end_time = 0; public int $service_id = 0; public int $agent_id = 0; public int $location_id = 0; public int $weight = 0; function calculate_weight(): int{ if($this->service_id) $this->weight++; if($this->agent_id) $this->weight++; if($this->location_id) $this->weight++; if($this->custom_date) $this->weight = $this->weight + 3; return $this->weight; } function __construct($args = []){ $allowed_props = self::allowed_props(); foreach($args as $key => $arg){ if(in_array($key, $allowed_props)) $this->$key = $arg; } $this->calculate_weight(); } public static function create_from_work_period_model(\OsWorkPeriodModel $work_period): WorkPeriod{ return new WorkPeriod([ 'custom_date' => $work_period->custom_date, 'week_day' => $work_period->week_day, 'start_time' => $work_period->start_time, 'end_time' => $work_period->end_time, 'agent_id' => $work_period->agent_id, 'location_id' => $work_period->location_id, 'service_id' => $work_period->service_id]); } public static function allowed_props(): array{ return ['custom_date', 'week_day', 'start_time', 'end_time', 'agent_id', 'location_id', 'service_id']; } }