55 lines
1.1 KiB
PHP
55 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Modules\ManagementTools\Entities;
|
|
|
|
use App\User;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class MtUserTimeLine extends Model
|
|
{
|
|
protected $table = 'mt_user_time_lines';
|
|
|
|
protected $guarded = ['id'];
|
|
|
|
protected $casts = [
|
|
'starts_at' => 'datetime',
|
|
'ends_at' => 'datetime',
|
|
];
|
|
|
|
public function user()
|
|
{
|
|
return $this->belongsTo(User::class);
|
|
}
|
|
|
|
public function userTask()
|
|
{
|
|
return $this->belongsTo(MtUserTask::class, 'user_task_id');
|
|
}
|
|
|
|
public function scopeForBusiness($query, $business_id)
|
|
{
|
|
return $query->where('business_id', $business_id);
|
|
}
|
|
|
|
public function durationMinutes(): ?int
|
|
{
|
|
if (! $this->starts_at || ! $this->ends_at) {
|
|
return null;
|
|
}
|
|
|
|
return $this->starts_at->diffInMinutes($this->ends_at);
|
|
}
|
|
|
|
public function durationFormatted(): string
|
|
{
|
|
$minutes = $this->durationMinutes();
|
|
if ($minutes === null) {
|
|
return '—';
|
|
}
|
|
$hours = intdiv($minutes, 60);
|
|
$mins = $minutes % 60;
|
|
|
|
return sprintf('%d:%02d', $hours, $mins);
|
|
}
|
|
}
|