first draft of case addresses and itineraries
This commit is contained in:
194
src/Entity/CaseItinerary.php
Normal file
194
src/Entity/CaseItinerary.php
Normal file
@ -0,0 +1,194 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\CaseItineraryRepository;
|
||||
use DateInterval;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||
use Symfony\Component\Uid\Uuid;
|
||||
use Symfony\UX\Map\Point;
|
||||
|
||||
#[ORM\Entity(repositoryClass: CaseItineraryRepository::class)]
|
||||
class CaseItinerary
|
||||
{
|
||||
#[ORM\Id]
|
||||
#[ORM\Column(type: UuidType::NAME, unique: true)]
|
||||
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
|
||||
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
|
||||
private ?Uuid $id = null;
|
||||
|
||||
#[ORM\Column(type: Types::TIME_MUTABLE, nullable: true)]
|
||||
private ?\DateTimeInterface $departure = null;
|
||||
|
||||
#[ORM\ManyToOne]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?Location $originLocation = null;
|
||||
|
||||
#[ORM\Column(type: Types::TIME_MUTABLE, nullable: true)]
|
||||
private ?\DateTimeInterface $arrival = null;
|
||||
|
||||
#[ORM\ManyToOne]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?Location $destLocation = null;
|
||||
|
||||
#[ORM\Column]
|
||||
private ?bool $caseMileage = null;
|
||||
|
||||
#[ORM\Column]
|
||||
private ?DateInterval $duration = null;
|
||||
|
||||
#[ORM\ManyToOne]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?MemberCase $memberCase = null;
|
||||
|
||||
#[ORM\Column(type: Types::DATE_MUTABLE)]
|
||||
private ?\DateTimeInterface $date = null;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
private ?float $distance = null;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
private ?array $gpsRoute = null;
|
||||
|
||||
public function getId(): ?Uuid
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getDeparture(): ?\DateTimeInterface
|
||||
{
|
||||
return $this->departure;
|
||||
}
|
||||
|
||||
public function setDeparture(?\DateTimeInterface $departure): static
|
||||
{
|
||||
$this->departure = $departure;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getOriginLocation(): ?Location
|
||||
{
|
||||
return $this->originLocation;
|
||||
}
|
||||
|
||||
public function setOriginLocation(?Location $originLocation): static
|
||||
{
|
||||
$this->originLocation = $originLocation;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getArrival(): ?\DateTimeInterface
|
||||
{
|
||||
return $this->arrival;
|
||||
}
|
||||
|
||||
public function setArrival(?\DateTimeInterface $arrival): static
|
||||
{
|
||||
$this->arrival = $arrival;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDestLocation(): ?Location
|
||||
{
|
||||
return $this->destLocation;
|
||||
}
|
||||
|
||||
public function setDestLocation(?Location $destLocation): static
|
||||
{
|
||||
$this->destLocation = $destLocation;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isCaseMileage(): ?bool
|
||||
{
|
||||
return $this->caseMileage;
|
||||
}
|
||||
|
||||
public function setCaseMileage(bool $caseMileage): static
|
||||
{
|
||||
$this->caseMileage = $caseMileage;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDuration(): ?DateInterval
|
||||
{
|
||||
return $this->duration;
|
||||
}
|
||||
|
||||
public function setDuration(?DateInterval $duration): static
|
||||
{
|
||||
//$this->calcDuration();
|
||||
$this->duration = $duration;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function calcDuration()
|
||||
{
|
||||
$this->duration = $this->departure - $this->arrival;
|
||||
}
|
||||
|
||||
public function getMemberCase(): ?MemberCase
|
||||
{
|
||||
return $this->memberCase;
|
||||
}
|
||||
|
||||
public function setMemberCase(?MemberCase $memberCase): static
|
||||
{
|
||||
$this->memberCase = $memberCase;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDate(): ?\DateTimeInterface
|
||||
{
|
||||
return $this->date;
|
||||
}
|
||||
|
||||
public function setDate(\DateTimeInterface $date): static
|
||||
{
|
||||
$this->date = $date;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDistance(): ?float
|
||||
{
|
||||
return $this->distance;
|
||||
}
|
||||
|
||||
public function setDistance(?float $distance): static
|
||||
{
|
||||
$this->distance = $distance;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getGpsRoute(): ?array
|
||||
{
|
||||
return $this->gpsRoute;
|
||||
}
|
||||
|
||||
public function setGpsRoute(?array $gpsRoute): static
|
||||
{
|
||||
$this->gpsRoute = $gpsRoute;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getGPSPolyLines(): array
|
||||
{
|
||||
$points = [];
|
||||
foreach ($this->gpsRoute as $route) {
|
||||
$points[] = new Point($route['lat'], $route['lon']);
|
||||
}
|
||||
return $points;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user