<?php
namespace App\Domain\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use App\Domain\Entity\Behavior\Identifiable;
use App\Domain\Entity\PointOfInterest\Revision;
use DateTime;
use Gedmo\Timestampable\Traits\Timestampable;
/**
* Class TripMapPoint
*
* @package App\Domain\Entity
*/
#[ApiResource(
operations: [
new Get(),
],
normalizationContext: ['groups' => ['trip_map_point_read']],
denormalizationContext: ['groups' => ['trip_map_point_write']]
)]
class TripMapPoint
{
use Identifiable;
use Timestampable;
public function __construct(
public ?string $placeId,
public int $position,
public string $name,
public array $location,
public float $distance,
public int $duration,
public ?Revision $revisionInitial,
public ?PointOfInterest $pointOfInterest,
public ?string $remoteId = null,
public ?string $recoRemoteId = null,
public ?DateTime $zhistUpdate = null,
) {}
public function __clone()
{
$this->id = null;
$this->uuid = null;
}
public function getDurationString(): string
{
if ($this->duration <= 0) {
return '0h 0min';
}
$timeInMinutes = floor($this->duration / 60);
$hours = floor($timeInMinutes / 60);
$minutes = ($timeInMinutes % 60);
return "{$hours}h {$minutes}min";
}
}