<?php
namespace App\Domain\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use App\Domain\Entity\Behavior\Identifiable;
use Gedmo\SoftDeleteable\Traits\SoftDeleteable;
use Gedmo\Timestampable\Traits\Timestampable;
/**
* Class Address
*
* @package App\Domain\Entity
*/
#[ApiResource(
operations: [
new Get(),
new GetCollection(),
],
normalizationContext: ['groups' => ['address_read']],
denormalizationContext: ['groups' => ['address_write']]
)]
class Address
{
use Identifiable;
use SoftDeleteable;
use Timestampable;
/**
* Address constructor.
*
* @param string $cityName
* @param string $streetName
* @param string $zipCode
* @param string|null $country
* @param string|null $addressAddIn
* @param string|null $cedex
* @param string|null $cityCode
* @param string|null $isoCode
* @param float|null $lat
* @param string|null $latCardinality
* @param float|null $lat1
* @param float|null $lat2
* @param float|null $lat3
* @param float|null $lng
* @param string|null $lngCardinality
* @param float|null $lng1
* @param float|null $lng2
* @param float|null $lng3
* @param int|null $remoteId
*/
public function __construct(
public string $cityName,
public string $streetName,
public string $zipCode,
public ?string $country,
public ?string $addressAddIn = null,
public ?string $cedex = null,
public ?string $cityCode = null,
public ?string $isoCode = null,
public ?float $lat = null,
public ?string $latCardinality = null,
public ?float $lat1 = null,
public ?float $lat2 = null,
public ?float $lat3 = null,
public ?float $lng = null,
public ?string $lngCardinality = null,
public ?float $lng1 = null,
public ?float $lng2 = null,
public ?float $lng3 = null,
public ?string $remoteId = null,
) {
}
/**
* elasticsearch goe_point format
*
* @return array[lon, lat]
*/
public function getGeoPoint(): array
{
return [$this->lng, $this->lat];
}
public function getFormattedAddress(): string
{
return "$this->streetName, $this->country";
}
}