compute stats for completion by zone, have base tags, split categories
This commit is contained in:
parent
f15fec6d18
commit
f69b7824af
16 changed files with 1257 additions and 118 deletions
|
@ -28,9 +28,54 @@ class Stats
|
|||
#[ORM\OneToMany(targetEntity: Place::class, mappedBy: 'stats')]
|
||||
private Collection $places;
|
||||
|
||||
#[ORM\Column(type: Types::SMALLINT)]
|
||||
// nombre de commerces dans la zone
|
||||
#[ORM\Column(type: Types::SMALLINT, nullable: true)]
|
||||
private ?int $places_count = null;
|
||||
|
||||
// nombre de commerces avec horaires
|
||||
#[ORM\Column(type: Types::SMALLINT, nullable: true)]
|
||||
private ?int $avec_horaires = null;
|
||||
|
||||
// nombre de commerces avec adresse
|
||||
#[ORM\Column(type: Types::SMALLINT, nullable: true)]
|
||||
private ?int $avec_adresse = null;
|
||||
|
||||
// nombre de commerces avec site
|
||||
#[ORM\Column(type: Types::SMALLINT, nullable: true)]
|
||||
private ?int $avec_site = null;
|
||||
|
||||
// nombre de commerces avec accessibilité
|
||||
#[ORM\Column(type: Types::SMALLINT, nullable: true)]
|
||||
private ?int $avec_accessibilite = null;
|
||||
|
||||
// nombre de commerces avec note
|
||||
#[ORM\Column(type: Types::SMALLINT, nullable: true)]
|
||||
private ?int $avec_note = null;
|
||||
|
||||
// calcule le pourcentage de complétion de la zone
|
||||
public function computeCompletionPercent(): ?int
|
||||
{
|
||||
// Si aucun commerce, on retourne 0
|
||||
if ($this->places_count === 0 || $this->places_count === null) {
|
||||
$this->setCompletionPercent(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// On prend le maximum entre les différents critères
|
||||
$max = max(
|
||||
$this->avec_horaires ?? 0,
|
||||
$this->avec_adresse ?? 0,
|
||||
$this->avec_site ?? 0,
|
||||
$this->avec_accessibilite ?? 0,
|
||||
$this->avec_note ?? 0
|
||||
);
|
||||
$computed = round(($max) / $this->places_count * 100);
|
||||
$this->setCompletionPercent($computed);
|
||||
return $this->completion_percent;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->places = new ArrayCollection();
|
||||
|
@ -106,4 +151,66 @@ class Stats
|
|||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAvecHoraires(): ?int
|
||||
{
|
||||
return $this->avec_horaires;
|
||||
}
|
||||
|
||||
public function setAvecHoraires(int $avec_horaires): static
|
||||
{
|
||||
$this->avec_horaires = $avec_horaires;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getAvecAdresse(): ?int
|
||||
{
|
||||
return $this->avec_adresse;
|
||||
}
|
||||
|
||||
public function setAvecAdresse(int $avec_adresse): static
|
||||
{
|
||||
$this->avec_adresse = $avec_adresse;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getAvecSite(): ?int
|
||||
{
|
||||
return $this->avec_site;
|
||||
}
|
||||
|
||||
public function setAvecSite(int $avec_site): static
|
||||
{
|
||||
$this->avec_site = $avec_site;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getAvecAccessibilite(): ?int
|
||||
{
|
||||
return $this->avec_accessibilite;
|
||||
}
|
||||
|
||||
public function setAvecAccessibilite(int $avec_accessibilite): static
|
||||
{
|
||||
$this->avec_accessibilite = $avec_accessibilite;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getAvecNote(): ?int
|
||||
{
|
||||
return $this->avec_note;
|
||||
}
|
||||
|
||||
public function setAvecNote(int $avec_note): static
|
||||
{
|
||||
$this->avec_note = $avec_note;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue