diff --git a/assets/js/map-utils.js b/assets/js/map-utils.js deleted file mode 100644 index e69de29..0000000 diff --git a/assets/styles/app.css b/assets/styles/app.css index d66ce9d..49ed4be 100644 --- a/assets/styles/app.css +++ b/assets/styles/app.css @@ -20,11 +20,7 @@ body { } .filled { - background-color: #b0dfa0 !important; -} - -.filled:hover { - background-color: #8abb7a !important; + background-color: #b0dfa0; } .no-name { @@ -148,9 +144,4 @@ img { .mb-3 { margin-bottom: 1rem !important; } -} - -table tbody { - max-height: 700px; - overflow: auto; } \ No newline at end of file diff --git a/migrations/Version20250617154118.php b/migrations/Version20250617154118.php deleted file mode 100644 index 53ace28..0000000 --- a/migrations/Version20250617154118.php +++ /dev/null @@ -1,41 +0,0 @@ -addSql(<<<'SQL' - ALTER TABLE stats ADD siren SMALLINT DEFAULT NULL - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats ADD code_epci SMALLINT DEFAULT NULL - SQL); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql(<<<'SQL' - ALTER TABLE stats DROP siren - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats DROP code_epci - SQL); - } -} diff --git a/migrations/Version20250617154309.php b/migrations/Version20250617154309.php deleted file mode 100644 index 4236a43..0000000 --- a/migrations/Version20250617154309.php +++ /dev/null @@ -1,35 +0,0 @@ -addSql(<<<'SQL' - ALTER TABLE stats ADD codes_postaux VARCHAR(255) DEFAULT NULL - SQL); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql(<<<'SQL' - ALTER TABLE stats DROP codes_postaux - SQL); - } -} diff --git a/migrations/Version20250617160626.php b/migrations/Version20250617160626.php deleted file mode 100644 index eadf46d..0000000 --- a/migrations/Version20250617160626.php +++ /dev/null @@ -1,44 +0,0 @@ -addSql(<<<'SQL' - CREATE TABLE stats_history (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, places_count INT DEFAULT NULL, emails_count INT DEFAULT NULL, completion_percent REAL DEFAULT NULL, emails_sent INT DEFAULT NULL, stats_id INT DEFAULT NULL, PRIMARY KEY(id)) - SQL); - $this->addSql(<<<'SQL' - CREATE INDEX IDX_BE00311670AA3482 ON stats_history (stats_id) - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history ADD CONSTRAINT FK_BE00311670AA3482 FOREIGN KEY (stats_id) REFERENCES stats (id) NOT DEFERRABLE INITIALLY IMMEDIATE - SQL); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql(<<<'SQL' - ALTER TABLE stats_history DROP CONSTRAINT FK_BE00311670AA3482 - SQL); - $this->addSql(<<<'SQL' - DROP TABLE stats_history - SQL); - } -} diff --git a/migrations/Version20250617161207.php b/migrations/Version20250617161207.php deleted file mode 100644 index 2d983bb..0000000 --- a/migrations/Version20250617161207.php +++ /dev/null @@ -1,35 +0,0 @@ -addSql(<<<'SQL' - ALTER TABLE stats ALTER zone TYPE BIGINT - SQL); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql(<<<'SQL' - ALTER TABLE stats ALTER zone TYPE VARCHAR(255) - SQL); - } -} diff --git a/migrations/Version20250617165738.php b/migrations/Version20250617165738.php deleted file mode 100644 index eff0168..0000000 --- a/migrations/Version20250617165738.php +++ /dev/null @@ -1,59 +0,0 @@ -addSql(<<<'SQL' - ALTER TABLE stats_history ADD names_count INT DEFAULT NULL - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history ADD opening_hours_count INT DEFAULT NULL - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history ADD website_count INT DEFAULT NULL - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history ADD address_count INT DEFAULT NULL - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history ADD siret_count INT DEFAULT NULL - SQL); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql(<<<'SQL' - ALTER TABLE stats_history DROP names_count - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history DROP opening_hours_count - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history DROP website_count - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history DROP address_count - SQL); - $this->addSql(<<<'SQL' - ALTER TABLE stats_history DROP siret_count - SQL); - } -} diff --git a/public/assets/img/Panoramax.svg b/public/assets/img/Panoramax.svg deleted file mode 100644 index 8e16ec0..0000000 --- a/public/assets/img/Panoramax.svg +++ /dev/null @@ -1,13 +0,0 @@ - - -image/svg+xml - - - - - - \ No newline at end of file diff --git a/public/js/utils.js b/public/js/utils.js index a75b7f1..bc42570 100644 --- a/public/js/utils.js +++ b/public/js/utils.js @@ -5,7 +5,7 @@ * @param {string} suggestionListId - ID de la liste des suggestions * @param {Function} onSelect - Callback appelé lors de la sélection d'une ville */ -function setupCitySearch(inputId, suggestionListId, onSelect) { +export function setupCitySearch(inputId, suggestionListId, onSelect) { const searchInput = document.getElementById(inputId); const suggestionList = document.getElementById(suggestionListId); @@ -75,12 +75,12 @@ function setupCitySearch(inputId, suggestionListId, onSelect) { * @param {string} zipCode - Le code postal * @returns {string} L'URL de labourage */ -function getLabourerUrl(zipCode) { +export function getLabourerUrl(zipCode) { return `/admin/labourer/${zipCode}`; } // Fonction pour gérer la soumission du formulaire d'ajout de ville -function handleAddCityFormSubmit(event) { +export function handleAddCityFormSubmit(event) { event.preventDefault(); const form = event.target; const submitButton = form.querySelector('button[type="submit"]'); @@ -101,7 +101,7 @@ function handleAddCityFormSubmit(event) { * @param {string} selector - Le sélecteur CSS pour cibler les cellules à colorer * @param {string} color - La couleur de base en format RGB (ex: '154, 205, 50') */ -function colorizePercentageCells(selector, color = '154, 205, 50') { +export function colorizePercentageCells(selector, color = '154, 205, 50') { document.querySelectorAll(selector).forEach(cell => { const percentage = parseInt(cell.textContent); if (!isNaN(percentage)) { @@ -116,7 +116,7 @@ function colorizePercentageCells(selector, color = '154, 205, 50') { * @param {string} selector - Le sélecteur CSS pour cibler les cellules à colorer * @param {string} color - La couleur de base en format RGB (ex: '154, 205, 50') */ -function colorizePercentageCellsRelative(selector, color = '154, 205, 50') { +export function colorizePercentageCellsRelative(selector, color = '154, 205, 50') { // Récupérer toutes les cellules const cells = document.querySelectorAll(selector); @@ -145,7 +145,7 @@ function colorizePercentageCellsRelative(selector, color = '154, 205, 50') { * @param {number} [minFont=0.8] - Taille de police minimale en rem * @param {number} [maxFont=1.2] - Taille de police maximale en rem */ -function adjustListGroupFontSize(selector, minFont = 0.8, maxFont = 1.2) { +export function adjustListGroupFontSize(selector, minFont = 0.8, maxFont = 1.2) { const items = document.querySelectorAll(selector); const count = items.length; let fontSize = maxFont; diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index 89782b9..0b3b30f 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -8,7 +8,6 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use App\Entity\Place; use App\Entity\Stats; -use App\Entity\StatsHistory; use App\Service\Motocultrice; use Doctrine\ORM\EntityManagerInterface; use function uuid_create; @@ -31,29 +30,18 @@ final class AdminController extends AbstractController ]); } - #[Route('/admin/stats/{insee_code}', name: 'app_admin_stats')] - public function calculer_stats(string $insee_code): Response + #[Route('/admin/stats/{zip_code}', name: 'app_admin_stats')] + public function calculer_stats(string $zip_code): Response { // Récupérer tous les commerces de la zone - $commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $insee_code]); + $commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $zip_code]); // Récupérer les stats existantes pour la zone - $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]); - - - $statsHistory = $this->entityManager->getRepository(StatsHistory::class) - ->createQueryBuilder('sh') - ->where('sh.stats = :stats') - ->setParameter('stats', $stats) - ->orderBy('sh.id', 'DESC') - ->setMaxResults(365) - ->getQuery() - ->getResult(); - + $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $zip_code]); if(!$stats) { $stats = new Stats(); - $stats->setZone($insee_code); + $stats->setZone($zip_code); } // Calculer les statistiques @@ -84,12 +72,11 @@ final class AdminController extends AbstractController return $this->render('admin/stats.html.twig', [ 'stats' => $stats, - 'insee_code' => $insee_code, - 'query_places' => $this->motocultrice->get_query_places($insee_code), + 'zip_code' => $zip_code, + 'query_places' => $this->motocultrice->get_query_places($zip_code), 'counters' => $calculatedStats['counters'], 'maptiler_token' => $_ENV['MAPTILER_TOKEN'], 'mapbox_token' => $_ENV['MAPBOX_TOKEN'], - 'statsHistory' => $statsHistory, ]); } @@ -135,21 +122,19 @@ final class AdminController extends AbstractController /** - * récupérer les commerces de la zone selon le code INSEE, créer les nouveaux lieux, et mettre à jour les existants + * récupérer les commerces de la zone, créer les nouveaux lieux, et mettre à jour les existants */ - #[Route('/admin/labourer/{insee_code}', name: 'app_admin_labourer')] - public function labourer(string $insee_code, bool $updateExisting = true): Response + #[Route('/admin/labourer/{zip_code}', name: 'app_admin_labourer')] + public function labourer(string $zip_code, bool $updateExisting = true): Response { try { // Récupérer ou créer les stats pour cette zone - $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]); + $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $zip_code]); - $city = $this->motocultrice->get_city_osm_from_zip_code($insee_code); + $city = $this->motocultrice->get_city_osm_from_zip_code($zip_code); if (!$stats) { $stats = new Stats(); - $stats->setDateCreated(new \DateTime()); - $stats->setDateModified(new \DateTime()); - $stats->setZone($insee_code) + $stats->setZone($zip_code) ->setPlacesCount(0) ->setAvecHoraires(0) ->setAvecAdresse(0) @@ -165,7 +150,7 @@ final class AdminController extends AbstractController // Récupérer la population via l'API $population = null; try { - $apiUrl = 'https://geo.api.gouv.fr/communes/' . $insee_code; + $apiUrl = 'https://geo.api.gouv.fr/communes/' . $zip_code . '?fields=population'; $response = file_get_contents($apiUrl); if ($response !== false) { $data = json_decode($response, true); @@ -173,23 +158,13 @@ final class AdminController extends AbstractController $population = (int)$data['population']; $stats->setPopulation($population); } - if (isset($data['siren'])) { - $stats->setSiren((int)$data['siren']); - } - if (isset($data['codeEpci'])) { - $stats->setCodeEpci((int)$data['codeEpci']); - } - if (isset($data['codesPostaux'])) { - $stats->setCodesPostaux(implode(';', $data['codesPostaux'])); - } } } catch (\Exception $e) { - $this->addFlash('error', 'Erreur lors de la récupération des données de l\'API : ' . $e->getMessage()); - + // Ne rien faire si l'API échoue } // Récupérer toutes les données - $places = $this->motocultrice->labourer($insee_code); + $places = $this->motocultrice->labourer($zip_code); $processedCount = 0; $updatedCount = 0; @@ -202,7 +177,7 @@ final class AdminController extends AbstractController $place = new Place(); $place->setOsmId($placeData['id']) ->setOsmKind($placeData['type']) - ->setZipCode($insee_code) + ->setZipCode($zip_code) ->setUuidForUrl($this->motocultrice->uuid_create()) ->setModifiedDate(new \DateTime()) ->setStats($stats) @@ -237,30 +212,7 @@ final class AdminController extends AbstractController // Mettre à jour les statistiques finales $stats->computeCompletionPercent(); - if($stats->getDateCreated() == null) { - $stats->setDateCreated(new \DateTime()); - } - $stats->setDateModified(new \DateTime()); - - // Créer un historique des statistiques - $statsHistory = new StatsHistory(); - $statsHistory->setDate(new \DateTime()) - ->setStats($stats); - - $statsHistory->setPlacesCount($stats->getPlaces()->count()) - ->setOpeningHoursCount($stats->getAvecHoraires()) - ->setAddressCount($stats->getAvecAdresse()) - ->setWebsiteCount($stats->getAvecSite()) - ->setSiretCount($stats->getAvecSiret()) - // ->setAccessibiliteCount($stats->getAvecAccessibilite()) - // ->setNoteCount($stats->getAvecNote()) - ->setCompletionPercent($stats->getCompletionPercent()) - ->setStats($stats); - - $this->entityManager->persist($statsHistory); - - $this->entityManager->persist($stats); $this->entityManager->flush(); @@ -271,11 +223,9 @@ final class AdminController extends AbstractController $this->addFlash('success', $message); } catch (\Exception $e) { $this->addFlash('error', 'Erreur lors du labourage : ' . $e->getMessage()); - die(var_dump($e)); } - // return $this->redirectToRoute('app_public_dashboard'); - return $this->redirectToRoute('app_admin_stats', ['insee_code' => $insee_code]); + return $this->redirectToRoute('app_admin_stats', ['zip_code' => $zip_code]); } #[Route('/admin/delete/{id}', name: 'app_admin_delete')] @@ -294,11 +244,11 @@ final class AdminController extends AbstractController return $this->redirectToRoute('app_public_dashboard'); } - #[Route('/admin/delete_by_zone/{insee_code}', name: 'app_admin_delete_by_zone')] - public function delete_by_zone(string $insee_code): Response + #[Route('/admin/delete_by_zone/{zip_code}', name: 'app_admin_delete_by_zone')] + public function delete_by_zone(string $zip_code): Response { - $commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $insee_code]); - $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]); + $commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $zip_code]); + $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $zip_code]); foreach ($commerces as $commerce) { $this->entityManager->remove($commerce); @@ -306,7 +256,7 @@ final class AdminController extends AbstractController $this->entityManager->remove($stats); $this->entityManager->flush(); - $this->addFlash('success', 'Tous les commerces de la zone '.$insee_code.' ont été supprimés avec succès de OSM Mes commerces, mais pas dans OpenStreetMap.'); + $this->addFlash('success', 'Tous les commerces de la zone '.$zip_code.' ont été supprimés avec succès de OSM Mes commerces, mais pas dans OpenStreetMap.'); return $this->redirectToRoute('app_public_dashboard'); } @@ -372,16 +322,16 @@ final class AdminController extends AbstractController return $response; } - #[Route('/admin/export_csv/{insee_code}', name: 'app_admin_export_csv')] - public function export_csv(string $insee_code): Response + #[Route('/admin/export_csv/{zip_code}', name: 'app_admin_export_csv')] + public function export_csv(string $zip_code): Response { - $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]); - $response = new Response($this->motocultrice->export($insee_code)); + $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $zip_code]); + $response = new Response($this->motocultrice->export($zip_code)); $response->headers->set('Content-Type', 'text/csv'); $slug_name = str_replace(' ', '-', $stats->getName()); - $response->headers->set('Content-Disposition', 'attachment; filename="osm-commerces-export_' . $insee_code . '_' . $slug_name . '_' . date('Y-m-d_H-i-s') . '.csv"'); + $response->headers->set('Content-Disposition', 'attachment; filename="osm-commerces-export_' . $zip_code . '_' . $slug_name . '_' . date('Y-m-d_H-i-s') . '.csv"'); return $response; } diff --git a/src/Entity/History.php b/src/Entity/History.php index 50f3992..5c7b3f9 100644 --- a/src/Entity/History.php +++ b/src/Entity/History.php @@ -16,6 +16,9 @@ class History #[ORM\Column] private ?int $id = null; + + + #[ORM\Column(type: Types::SMALLINT, nullable: true)] private ?int $completion_percent = null; diff --git a/src/Entity/Stats.php b/src/Entity/Stats.php index 4278af8..6db0de4 100644 --- a/src/Entity/Stats.php +++ b/src/Entity/Stats.php @@ -16,10 +16,10 @@ class Stats #[ORM\Column] private ?int $id = null; - #[ORM\Column(length: 255, type: Types::STRING, nullable: true)] + #[ORM\Column(length: 255)] private ?string $zone = null; // code insee de la zone - #[ORM\Column(type: Types::INTEGER, nullable: true)] + #[ORM\Column(type: Types::SMALLINT)] private ?int $completion_percent = null; /** @@ -29,27 +29,27 @@ class Stats private Collection $places; // nombre de commerces dans la zone - #[ORM\Column(type: Types::INTEGER, nullable: true)] + #[ORM\Column(type: Types::SMALLINT, nullable: true)] private ?int $places_count = null; // nombre de commerces avec horaires - #[ORM\Column(type: Types::INTEGER, nullable: true)] + #[ORM\Column(type: Types::SMALLINT, nullable: true)] private ?int $avec_horaires = null; // nombre de commerces avec adresse - #[ORM\Column(type: Types::INTEGER, nullable: true)] + #[ORM\Column(type: Types::SMALLINT, nullable: true)] private ?int $avec_adresse = null; // nombre de commerces avec site - #[ORM\Column(type: Types::INTEGER, nullable: true)] + #[ORM\Column(type: Types::SMALLINT, nullable: true)] private ?int $avec_site = null; // nombre de commerces avec accessibilité - #[ORM\Column(type: Types::INTEGER, nullable: true)] + #[ORM\Column(type: Types::SMALLINT, nullable: true)] private ?int $avec_accessibilite = null; // nombre de commerces avec note - #[ORM\Column(type: Types::INTEGER, nullable: true)] + #[ORM\Column(type: Types::SMALLINT, nullable: true)] private ?int $avec_note = null; #[ORM\Column(length: 255, nullable: true)] @@ -59,33 +59,6 @@ class Stats #[ORM\Column(type: Types::INTEGER, nullable: true)] private ?int $population = null; - #[ORM\Column(type: Types::INTEGER, nullable: true)] - private ?int $siren = null; - - #[ORM\Column(type: Types::INTEGER, nullable: true)] - private ?int $codeEpci = null; - - #[ORM\Column(length: 255, nullable: true)] - private ?string $codesPostaux = null; - - /** - * @var Collection - */ - #[ORM\OneToMany(targetEntity: StatsHistory::class, mappedBy: 'stats')] - private Collection $statsHistories; - - #[ORM\Column(nullable: true)] - private ?\DateTime $date_created = null; - - #[ORM\Column(nullable: true)] - private ?\DateTime $date_modified = null; - - #[ORM\Column(nullable: true)] - private ?int $avec_siret = null; - - #[ORM\Column(nullable: true)] - private ?int $avec_name = null; - // calcule le pourcentage de complétion de la zone public function computeCompletionPercent(): ?int { @@ -142,7 +115,6 @@ class Stats public function __construct() { $this->places = new ArrayCollection(); - $this->statsHistories = new ArrayCollection(); } public function getId(): ?int @@ -298,120 +270,6 @@ class Stats $this->population = $population; return $this; } - - public function getSiren(): ?int - { - return $this->siren; - } - - public function setSiren(?int $siren): static - { - $this->siren = $siren; - - return $this; - } - - public function getCodeEpci(): ?int - { - return $this->codeEpci; - } - - public function setCodeEpci(?int $codeEpci): static - { - $this->codeEpci = $codeEpci; - - return $this; - } - - public function getCodesPostaux(): ?string - { - return $this->codesPostaux; - } - - public function setCodesPostaux(?string $codesPostaux): static - { - $this->codesPostaux = $codesPostaux; - - return $this; - } - - /** - * @return Collection - */ - public function getStatsHistories(): Collection - { - return $this->statsHistories; - } - - public function addStatsHistory(StatsHistory $statsHistory): static - { - if (!$this->statsHistories->contains($statsHistory)) { - $this->statsHistories->add($statsHistory); - $statsHistory->setStats($this); - } - - return $this; - } - - public function removeStatsHistory(StatsHistory $statsHistory): static - { - if ($this->statsHistories->removeElement($statsHistory)) { - // set the owning side to null (unless already changed) - if ($statsHistory->getStats() === $this) { - $statsHistory->setStats(null); - } - } - - return $this; - } - - public function getDateCreated(): ?\DateTime - { - return $this->date_created; - } - - public function setDateCreated(?\DateTime $date_created): static - { - $this->date_created = $date_created; - - return $this; - } - - public function getDateModified(): ?\DateTime - { - return $this->date_modified; - } - - public function setDateModified(?\DateTime $date_modified): static - { - $this->date_modified = $date_modified; - - return $this; - } - - public function getAvecSiret(): ?int - { - return $this->avec_siret; - } - - public function setAvecSiret(?int $avec_siret): static - { - $this->avec_siret = $avec_siret; - - return $this; - } - - public function getAvecName(): ?int - { - return $this->avec_name; - } - - public function setAvecName(?int $avec_name): static - { - $this->avec_name = $avec_name; - - return $this; - } } diff --git a/src/Entity/StatsHistory.php b/src/Entity/StatsHistory.php deleted file mode 100644 index 3337cee..0000000 --- a/src/Entity/StatsHistory.php +++ /dev/null @@ -1,188 +0,0 @@ -id; - } - - public function getPlacesCount(): ?int - { - return $this->places_count; - } - - public function setPlacesCount(?int $places_count): static - { - $this->places_count = $places_count; - - return $this; - } - - public function getEmailsCount(): ?int - { - return $this->emails_count; - } - - public function setEmailsCount(?int $emails_count): static - { - $this->emails_count = $emails_count; - - return $this; - } - - public function getCompletionPercent(): ?float - { - return $this->completion_percent; - } - - public function setCompletionPercent(?float $completion_percent): static - { - $this->completion_percent = $completion_percent; - - return $this; - } - - public function getEmailsSent(): ?int - { - return $this->emails_sent; - } - - public function setEmailsSent(?int $emails_sent): static - { - $this->emails_sent = $emails_sent; - - return $this; - } - - public function getStats(): ?Stats - { - return $this->stats; - } - - public function setStats(?Stats $stats): static - { - $this->stats = $stats; - - return $this; - } - - public function getDate(): ?\DateTime - { - return $this->date; - } - - public function setDate(\DateTime $date): static - { - $this->date = $date; - - return $this; - } - - public function getNamesCount(): ?int - { - return $this->names_count; - } - - public function setNamesCount(?int $names_count): static - { - $this->names_count = $names_count; - - return $this; - } - - public function getOpeningHoursCount(): ?int - { - return $this->opening_hours_count; - } - - public function setOpeningHoursCount(?int $opening_hours_count): static - { - $this->opening_hours_count = $opening_hours_count; - - return $this; - } - - public function getWebsiteCount(): ?int - { - return $this->website_count; - } - - public function setWebsiteCount(?int $website_count): static - { - $this->website_count = $website_count; - - return $this; - } - - public function getAddressCount(): ?int - { - return $this->address_count; - } - - public function setAddressCount(?int $address_count): static - { - $this->address_count = $address_count; - - return $this; - } - - public function getSiretCount(): ?int - { - return $this->siret_count; - } - - public function setSiretCount(?int $siret_count): static - { - $this->siret_count = $siret_count; - - return $this; - } - -} diff --git a/src/Repository/StatsHistoryRepository.php b/src/Repository/StatsHistoryRepository.php deleted file mode 100644 index e53a3d5..0000000 --- a/src/Repository/StatsHistoryRepository.php +++ /dev/null @@ -1,43 +0,0 @@ - - */ -class StatsHistoryRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, StatsHistory::class); - } - - // /** - // * @return StatsHistory[] Returns an array of StatsHistory objects - // */ - // public function findByExampleField($value): array - // { - // return $this->createQueryBuilder('s') - // ->andWhere('s.exampleField = :val') - // ->setParameter('val', $value) - // ->orderBy('s.id', 'ASC') - // ->setMaxResults(10) - // ->getQuery() - // ->getResult() - // ; - // } - - // public function findOneBySomeField($value): ?StatsHistory - // { - // return $this->createQueryBuilder('s') - // ->andWhere('s.exampleField = :val') - // ->setParameter('val', $value) - // ->getQuery() - // ->getOneOrNullResult() - // ; - // } -} diff --git a/templates/admin/labourage_results.html.twig b/templates/admin/labourage_results.html.twig index 93de459..9794889 100644 --- a/templates/admin/labourage_results.html.twig +++ b/templates/admin/labourage_results.html.twig @@ -10,8 +10,8 @@

Labourage fait sur la zone "{{ stats.zone }} {{stats.name}}" ✅

- Labourer les mises à jour - Voir les résultats + Labourer les mises à jour + Voir les résultats

lieux trouvés en plus: {{ new_places_counter }} diff --git a/templates/admin/stats.html.twig b/templates/admin/stats.html.twig index 0822950..a4cf711 100644 --- a/templates/admin/stats.html.twig +++ b/templates/admin/stats.html.twig @@ -22,164 +22,6 @@ {% endblock %} -{% block javascripts %} - {{ parent() }} - - - - - -{% endblock %} - {% block body %}

@@ -189,7 +31,7 @@ {{ stats.name }} - {{ stats.completionPercent }}% complété
- Labourer les mises à jour + Labourer les mises à jour @@ -211,7 +53,7 @@
- {{ stats.getAvecNote() }} / {{ stats.places|length }} lieux avec note + {{ stats.getAvecNote() }} / {{ stats.places|length }} commerces avec note
@@ -226,42 +68,63 @@
{{ stats.places | length}} - lieux dans la zone. + commerces dans la zone.
{{ stats.getAvecHoraires() }} - lieux avec horaires. + commerces avec horaires.
{{ stats.getAvecAdresse() }} - lieux avec adresse. + commerces avec adresse.
{{ stats.getAvecSite() }} - lieux avec site web renseigné. + commerces avec site web renseigné.
{{ stats.getAvecAccessibilite() }} - lieux avec accessibilité PMR renseignée. + commerces avec accessibilité PMR renseignée.
{{ stats.getAvecNote() }} - lieux avec note renseignée. + commerces avec note renseignée.
- +
+
+
+ +

Comment est calculé le score de complétion ?

+ +
+ +
+
@@ -285,16 +148,15 @@
- {% include 'admin/stats_history.html.twig' %} +
-

Tableau des {{ stats.places |length }} lieux

- + Exporter en CSV @@ -323,70 +185,15 @@
-
-

Historique des {{ statsHistory|length }} stats

- - - - - - - - - - - - - {# #} - {# #} - - - - {% for stat in statsHistory %} - - - - - - - - - - - {# #} - {# #} - - {% endfor %} - -
DatePlacesComplétionEmails countEmails sentOpening hoursAddressWebsiteSiretAccessibiliteNote
{{ stat.date|date('d/m/Y') }}{{ stat.placesCount }}{{ stat.completionPercent }}%{{ stat.emailsCount }}{{ stat.emailsSent }}{{ stat.openingHoursCount }}{{ stat.addressCount }}{{ stat.websiteCount }}{{ stat.siretCount }}{{ stat.accessibiliteCount }}{{ stat.noteCount }}
-
- -
-
-
- -

Comment est calculé le score de complétion ?

- -
- -
-
+ + + + + diff --git a/templates/public/dashboard.html.twig b/templates/public/dashboard.html.twig index 67bf609..b1a21ce 100644 --- a/templates/public/dashboard.html.twig +++ b/templates/public/dashboard.html.twig @@ -53,8 +53,9 @@ {% block javascripts %} {{ parent() }} - -