<?php
namespace App\Twig;
use App\Domain\Repository\Interfaces\PostRepositoryInterface;
use App\Domain\Repository\Interfaces\TextRepositoryInterface;
use App\Infra\Services\FilterApiService;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;
class ContentExtension extends AbstractExtension
{
public function __construct(
TextRepositoryInterface $textRepository,
FilterApiService $filterApiService,
PostRepositoryInterface $postRepository
)
{
$this->textRepository = $textRepository;
$this->filterApiService = $filterApiService;
$this->postRepository = $postRepository;
}
public function getFunctions()
{
return [
new TwigFunction('content', [$this, 'Content']),
new TwigFunction('contents', [$this, 'Contents']),
new TwigFunction('areaConversion', [$this, 'areaConversion']),
new TwigFunction('propertyCategory', [$this, 'propertyCategory']),
new TwigFunction('typeProperty', [$this, 'typeProperty']),
new TwigFunction('typeProject', [$this, 'typeProject']),
new TwigFunction('subTypeProject', [$this, 'subTypeProject']),
new TwigFunction('getSubTypeProject', [$this, 'getSubTypeProject']),
new TwigFunction('propertyArea', [$this, 'propertyArea']),
new TwigFunction('propertyExterior', [$this, 'propertyExterior']),
new TwigFunction('propertyEnergy', [$this, 'propertyEnergy']),
new TwigFunction('propertyHotWater', [$this, 'propertyHotWater']),
new TwigFunction('propertyHotWaterAccess', [$this, 'propertyHotWaterAccess']),
new TwigFunction('propertyFloor', [$this, 'propertyFloor']),
new TwigFunction('propertyHeatingDevice', [$this, 'propertyHeatingDevice']),
new TwigFunction('propertyHeatingType', [$this, 'propertyHeatingType']),
new TwigFunction('propertyCondition', [$this, 'propertyCondition']),
new TwigFunction('propertyServices', [$this, 'propertyServices']),
new TwigFunction('specialPropertyCategory', [$this, 'specialPropertyCategory']),
new TwigFunction('getTypeProperties', [$this, 'getTypeProperties']),
new TwigFunction('getTypeReferences', [$this, 'getTypeReferences']),
new TwigFunction('getPicturesByNewsId', [$this, 'getPicturesByNewsId']),
new TwigFunction('getTypeProperty', [$this, 'getTypeProperty']),
new TwigFunction('state', [$this, 'state']),
];
}
public function content($page, $section)
{
return $this->textRepository->getContentByPageAndSection($page, $section) ?? [];
}
public function contents($page, $section)
{
return $this->textRepository->getContentsByPageAndSection($page, $section) ?? [];
}
public function areaConversion($unitId)
{
return $this->filterApiService->getAreaConversion($unitId);
}
public function propertyCategory($categoryId)
{
return $this->filterApiService->getPropertyCategory($categoryId);
}
public function typeProperty($id)
{
return $this->filterApiService->getTypeProperty($id);
}
public function subTypeProject($id)
{
return $this->filterApiService->getSubTypeProject($id);
}
public function typeProject($id)
{
$arrayConverter = [
1 => 'À venir',
2 => 'En cours',
3 => 'Terminé',
];
return $arrayConverter[$id] ?? null;
}
public function state($id)
{
$arrayConverter = [
1 => 'Libre',
2 => 'Reservé',
];
return $arrayConverter[$id] ?? null;
}
public function specialPropertyCategory($categoryId)
{
$arrayConverter = [
1 => 'Achat',
2 => 'Location',
4 => 'Programme',
];
return $arrayConverter[$categoryId] ?? null;
}
public function getSubTypeProject()
{
return [
1 => 'Appartement',
2 => 'Maison',
4 => 'Commerce',
5 => 'Garage / Parking',
6 => 'Immeuble',
7 => 'Bureau'
];
}
public function getTypeProperties()
{
return [
1 => 'Appartement',
2 => 'Maison',
3 => 'Terrain',
4 => 'Commerce',
5 => 'Garage/Parking',
6 => 'Immeuble',
7 => 'Bureaux',
9 => 'Entrepôt',
10 => 'Cave',
];
}
public function getTypeProperty($id)
{
$arrayConverter = [
1 => 'Appartement',
2 => 'Maison',
3 => 'Terrain',
4 => 'Commerce',
5 => 'Garage/Parking',
6 => 'Immeuble',
7 => 'Bureaux',
9 => 'Entrepôt',
10 => 'Cave',
];
return $arrayConverter[$id] ?? null;
}
public function getTypeReferences($id)
{
$arrayConverter = [
1 => 'Appartement',
2 => 'Maisons',
4 => 'Commerces',
6 => 'Residences',
7 => 'Bureaux',
];
return $arrayConverter[$id] ?? null;
}
public function propertyEnergy($id)
{
$arrayConverter = [
1 => 'Énergie - Consommation conventionnelle',
2 => 'Énergie - Estimation des émissions',
3 => 'Loi Carrez',
4 => 'État des Risques et Pollutions (ERP)',
5 => 'Termites',
6 => 'Amiante',
7 => 'Gaz',
8 => 'Plomb',
9 => 'Électricité',
10 => 'Loi Boutin',
11 => 'Assainissement',
12 => 'EPI (Non renouvelable)',
13 => 'APE',
14 => 'Demande de désignation d\'un mandataire ad hoc',
15 => 'Demande de désignation d\'un administrateur provisoire',
16 => 'Demande de désignation d\'expert(s)',
17 => 'Normes relatives à la sécurité incendie',
18 => 'Normes accessibilité aux personnes handicapées',
19 => 'Agrément sanitaire',
20 => 'Consommation d\'énergie',
21 => 'Consommation d\'énergie',
22 => 'Taxe foncière',
23 => 'Taxe d\'habitation',
24 => 'Charges foncières',
25 => 'Taxe foncière',
26 => 'Taxe foncière',
27 => 'Réservé aux résidents',
28 => 'IPTU',
29 => 'Taxe Locale d\’Equipement',
30 => 'Minergie',
31 => 'Volume',
32 => 'Surface utile',
33 => 'PPE (Propriété par étages)',
34 => 'Taux d\'imposition communal',
35 => 'No extrait registre foncier',
36 => 'Droit de superficie',
37 => 'Millièmes',
38 => 'Taxe d\'habitation',
39 => 'Budget PPE',
40 => 'Fonds de rénovation actuel',
41 => 'Coefficient d\’utilisation du sol',
42 => 'Coefficient d\’occupation au sol',
43 => 'Coefficient d\’emprise au sol',
44 => 'Coefficient d\’occupation au sol',
45 => 'Délai de priorité CCH L443-11',
47 => 'Division parcellaire / Bornage',
48 => 'Délibération conseil d’administration/surveillance',
49 => 'Certificat de conformité',
50 => 'DPE (Diagnostique de Performance Energétique)',
51 => 'Classe d\'isolation thermique',
52 => 'GES (Gaz à Effet de Serre)',
53 => 'Ecopass',
54 => 'Certificat énergetique',
55 => 'Consommation énergétique / Besoin énergétique final',
56 => 'Classe de performance énergétique',
57 => 'Année de construction selon certificat',
58 => 'Eau chaude incluse',
59 => 'Consommation spécifique d\'énergie primaire',
60 => 'PEB code unique',
61 => 'Niveau K (Isolation thermique)',
62 => 'Niveau Ew (Performance énergétique)',
63 => 'Émission CO2',
64 => 'Risques d\'inondation',
65 => 'Certificat : Conformité de la citerne mazout',
66 => 'Certificat : Conformité de l\'installation électrique',
67 => 'Attestation « As Built »',
68 => 'Consommation totale d\'énergie primaire',
69 => 'Numéro d\'enregistrement',
70 => 'Revenu cadastral',
71 => 'Permis d\'urbanisme obtenu',
72 => 'Autorisation de lotissement',
73 => 'Droit de préemption possible',
74 => 'Citation pour infraction urbanistique',
75 => 'Dernière affectation urbanistique',
76 => 'Rente cadastral',
77 => 'Certification énergétique - Numéro',
78 => 'TVA applicable',
79 => 'Certification énergétique',
80 => 'Estimation des émissions',
81 => 'Estimation des émissions',
82 => 'Raccordement possible : Eau / Gaz / Électricité',
83 => 'Laudêmio',
84 => 'Programme immobilier',
85 => 'Accessible aux étrangers',
86 => 'Type de bâtiment',
87 => 'Primärenergiebedarf',
88 => 'Charges locatives forfaitaires',
89 => 'Energy Efficiency Rating (Current)',
90 => 'Energy Efficiency Rating (Potential)',
91 => 'Environmental Impact Rating (Current)',
92 => 'Environmental Impact Rating (Potential)',
93 => 'Type d\'occupation',
94 => 'Régime foncier',
95 => 'Valeur locative',
96 => 'Valeur fiscale',
97 => 'Valeur d\'assurance',
98 => 'Zone de construction',
99 => 'Strate',
100 => 'Indice de référence des loyers',
101 => 'Dernier prix de location',
102 => 'Énergie - Consommation conventionnelle',
103 => 'Efficacité de l\'enveloppe du bâtiment',
104 => 'Efficacité énergétique globale',
105 => 'Diagnostic Mérule',
106 => 'Complément de loyer',
107 => 'Revenu cadastral indexé',
108 => 'Précompte immobilier',
109 => 'EPI (Renouvelable)',
110 => 'Classe d\'émission',
111 => 'Frais de chauffage',
112 => 'Niveau de performance (saison d\'été)',
113 => 'Niveau de performance (saison d\'hiver)',
114 => 'Données cadastrales - Section',
115 => 'Données cadastrales - Sheet',
116 => 'Données cadastrales - Parcel',
117 => 'Données cadastrales - Subparcel',
118 => 'Données cadastrales - Sub',
119 => 'Données cadastrales - Sub 2',
120 => 'Énergie - Montant bas estimé des dépenses annuelles pour un usage standard',
121 => 'Énergie - Montant haut estimé des dépenses annuelles pour un usage standard',
122 => 'Énergie - Année de référence des prix de l\'énergie',
123 => 'Licença de habitação - Número',
124 => 'Licença de habitação - Emitida em',
125 => 'Taxa de IMI',
126 => 'Taxa de lixo',
127 => 'Regime de IVA',
128 => 'Escritura - Número',
129 => 'Escritura - Numéro da apólice',
130 => 'Licença de construção - Número',
131 => 'Licença de construção - Emitida em',
132 => 'Modalités charges locataire',
];
return $arrayConverter[$id] ?? null;
}
public function propertyArea($id)
{
$arrayConverter = [
1 => 'Chambre',
2 => 'Salon',
3 => 'Cuisine',
6 => 'Cave',
7 => 'Abri de jardin',
8 => 'Salle de bains',
9 => 'Buanderie',
10 => 'Bureau',
11 => 'Couloir',
12 => 'Dégagement',
13 => 'Salle de douche',
14 => 'Dressing',
15 => 'Entrée',
16 => 'Toilettes',
17 => 'Véranda',
19 => 'Solarium',
20 => 'Séjour',
21 => 'Salle de jeux',
22 => 'Salle à manger',
23 => 'Pool house',
24 => 'Placard',
25 => 'Non exploité',
27 => 'Grenier',
28 => 'Autre',
29 => 'Mezzanine',
30 => 'Cellier',
31 => 'Local technique',
32 => 'Atelier',
33 => 'Studio',
34 => 'Loft',
35 => 'Bibliothèque',
36 => 'Penderie',
37 => 'Cour',
38 => 'Palier',
39 => 'Lingerie',
40 => 'Sous-sol',
41 => 'Salle de bains / toilettes',
42 => 'Salle de douche / toilettes',
44 => 'Salle de sport',
45 => 'Boîte de nuit',
46 => 'Cinéma',
47 => 'Salle de réception',
48 => 'Débarras',
50 => 'Parc',
52 => 'Patio',
53 => 'Chambre de maître',
54 => 'Suite',
55 => 'Remise',
56 => 'Appartement',
57 => 'Cabine',
58 => 'Grange',
59 => 'Dépendance',
60 => 'Local à vélos',
61 => 'Local à skis',
62 => 'Local à poubelles',
63 => 'Hammam',
64 => 'Piscine intérieure',
65 => 'Salle de prière',
66 => 'Sauna',
67 => 'Mirador',
68 => 'Salle',
69 => 'Salle de réunion',
70 => 'Chambre de service',
71 => 'Studio de service',
72 => 'Double réception',
73 => 'Triple réception',
76 => 'Stock / Réserve',
77 => 'Commerce',
78 => 'Cafétéria',
79 => 'Lot',
80 => 'Entrepôt',
81 => 'Logement',
82 => 'Arcade',
83 => 'Maison',
84 => 'Escalier',
85 => 'Box',
86 => 'Carnotzet',
87 => 'Panic room',
88 => 'Open space',
89 => 'Hall',
90 => 'Pièce de vie',
91 => "Cuisine d'été",
92 => 'Spa',
93 => 'Galerie',
94 => 'Hangar à bateaux',
95 => "Salle à manger/Cuisine",
96 => 'Cuisine équipée',
97 => 'Cuisine semi-équipée',
98 => "Cuisine d'angle",
99 => 'Kitchenette',
100 => 'Cuisine américaine',
101 => 'Parcelle',
102 => 'Porche',
103 => "Séjour/cuisine",
104 => "Chambre d'enfants",
105 => 'Vestiaire',
106 => "Hall d'entrée",
107 => 'Toilette PMR',
108 => 'Atelier artisanal',
109 => 'Cave à vin',
110 => 'Plateau',
4 => 'Garage',
5 => 'Parking',
18 => 'Terrasse',
26 => 'Loggia',
43 => 'Balcon',
49 => 'Jardin',
74 => 'Parking intérieur',
75 => 'Parking extérieur',
51 => 'Terrain',
];
return $arrayConverter[$id] ?? null;
}
public function propertyExterior($id)
{
$arrayConverter = [
4 => 'Garage',
5 => 'Parking',
18 => 'Terrasse',
26 => 'Loggia',
43 => 'Balcon',
49 => 'Jardin',
74 => 'Parking intérieur',
75 => 'Parking extérieur',
51 => 'Terrain',
];
return $arrayConverter[$id] ?? null;
}
public function propertyHotWater($id)
{
$arrayConverter = [
1 => 'Solaire',
2 => 'Chauffe-eau',
3 => 'Chaudière',
4 => 'Pompe à chaleur'
];
return $arrayConverter[$id] ?? null;
}
public function propertyHotWaterAccess($id)
{
$arrayConverter = [
1 => 'Individuelle',
2 => 'Collective'
];
return $arrayConverter[$id] ?? null;
}
public function propertyFloor($id)
{
$arrayConverter = [
1 => 'Rez-de-chaussée',
2 => 'Dernier étage',
3 => '1er',
4 => '2ème',
5 => '3ème',
6 => '4ème',
7 => '5ème',
8 => '6ème',
9 => '7ème',
10 => '8ème',
11 => '9ème',
12 => '10ème',
13 => '11ème',
14 => '12ème',
15 => '13ème',
16 => '14ème',
17 => '15ème',
18 => '16ème',
19 => '17ème',
20 => '18ème',
21 => '19ème',
22 => '20ème',
23 => 'Rez-de-jardin',
24 => 'Entresol',
25 => '-1',
26 => '-2',
27 => '-3',
28 => '-4',
29 => 'Sous-sol',
30 => 'Plain-pied',
31 => '21ème',
32 => '22ème',
33 => '23ème',
34 => '24ème',
35 => '25ème',
36 => '26ème',
37 => '27ème',
38 => '28ème',
39 => '29ème',
40 => '30ème',
41 => '31ème',
42 => '32ème',
43 => '33ème',
44 => '34ème',
45 => '35ème',
46 => '36ème',
47 => '37ème',
48 => '38ème',
49 => '39ème',
50 => '40ème',
51 => '-5',
52 => '-6',
53 => '-7',
54 => '-8',
55 => '-9',
56 => '-10',
57 => '41ème',
58 => '42ème',
59 => '43ème',
60 => '44ème',
61 => '45ème',
62 => '46ème',
63 => '47ème',
64 => '48ème',
65 => '49ème',
66 => '50ème',
67 => '51',
68 => '52',
69 => '53',
70 => '54',
71 => '55',
72 => '56',
73 => '57',
74 => '58',
75 => '59',
76 => '60',
77 => 'Surélevé',
78 => '61',
79 => '62',
80 => '63',
81 => '64',
82 => '65',
83 => '66',
84 => '67',
85 => '68',
86 => '69',
87 => '70',
88 => '71',
89 => '72',
90 => '73',
91 => '74',
92 => '75',
93 => '76',
94 => '77',
95 => '78',
96 => '79',
97 => '80',
98 => '81',
99 => '82',
100 => '83',
101 => '84',
102 => '85',
103 => '86',
104 => '87',
105 => '88',
106 => '89',
107 => '90',
108 => '91',
109 => '92',
110 => '93',
111 => '94',
112 => '95',
113 => '96',
114 => '97',
115 => '98',
116 => '99',
117 => '100',
];
return $arrayConverter[$id] ?? null;
}
public function propertyHeatingDevice($id)
{
$arrayConverter = [
1 => 'Convecteur',
2 => 'Au sol',
3 => 'Radiateur',
4 => 'Poêle',
5 => 'Climatisation',
6 => 'Central',
7 => 'Sans chauffage',
8 => 'Cheminée',
];
return $arrayConverter[$id] ?? null;
}
public function propertyHeatingType($id)
{
$arrayConverter = [
1 => 'Gaz',
2 => 'Fioul / Mazout',
3 => 'Electrique',
4 => 'Bois',
5 => 'Solaire',
6 => 'Charbon',
7 => 'Pompe à chaleur',
8 => 'Géothermie',
9 => 'Granulé de bois',
10 => 'Eau chaude',
11 => 'Aérothermie',
];
return $arrayConverter[$id] ?? null;
}
public function propertyCondition($id)
{
$arrayConverter = [
1 => 'À rafraîchir',
3 => 'Bon état',
5 => 'À rénover',
6 => 'Excellent état',
8 => 'Neuf',
];
return $arrayConverter[$id] ?? null;
}
public function propertyServices($id)
{
$arrayConverter = [
1 => "Internet",
2 => "Cheminée",
3 => "Accès handicapé",
4 => "Air conditionné",
5 => "Alarme",
6 => "Ascenseur",
7 => "Gardien",
8 => "Double vitrage",
9 => "Interphone",
10 => "Télédistribution",
11 => "Piscine",
12 => "Porte blindée",
13 => "Tennis",
14 => "Arrosage",
15 => "Barbecue",
16 => "Portail électrique",
17 => "Vide sanitaire",
18 => "Abri de voiture",
19 => "Maison de gardien",
20 => "Fenêtres coulissantes",
21 => "Aspiration centralisée",
22 => "Volets roulants électriques",
23 => "Stores",
24 => "Stores électriques",
25 => "Lave-linge",
26 => "Jacuzzi",
27 => "Sauna",
28 => "Baignoire balnéo",
29 => "Puits",
30 => "Source",
31 => "Groupe électrogène",
32 => "Lave-vaisselle",
33 => "Plaque de cuisson",
34 => "Coffre-fort",
35 => "Héliport",
36 => "Vidéophone",
37 => "Vidéo surveillance",
38 => "Cuisinière",
39 => "Fer à repasser",
40 => "Sèche-cheveux",
41 => "Télévision",
42 => "Lecteur DVD",
43 => "Lecteur CD",
44 => "Éclairage extérieur",
45 => "Spa",
46 => "Domotique",
47 => "Meublé",
48 => "Linge de maison",
49 => "Vaisselle",
50 => "Sèche-linge",
51 => "Téléphone",
52 => "Réfrigérateur",
53 => "Four",
54 => "Reception 24/7",
55 => "Cafetière",
56 => "Four à micro-ondes",
57 => "Ascenseur chabbatique",
58 => "Soukka",
59 => "Synagogue",
60 => "Digicode",
61 => "Buanderie commune",
62 => "Animaux autorisés",
63 => "Rideau métallique",
64 => "Baie de brassage",
65 => "Réseau informatique",
66 => "Faux plafond",
67 => "Robinet d'incendie armé",
68 => "Extincteur automatique à eau",
69 => "Quai de déchargement",
70 => "Thermostat connecté",
71 => "Jeu de boules",
72 => "Adoucisseur d'eau",
73 => "Triple vitrage",
74 => "Forage",
75 => "Fibre optique",
76 => "Non inondable",
80 => "Alarme incendie",
82 => "Terrain de jeux",
83 => "Golf",
84 => "Flyboard",
85 => "Véhicule amphibie",
86 => "Jeux de plage",
87 => "Vélos",
88 => "Canoë",
89 => "Plongée",
90 => "Pêche",
91 => "Piscine flottante",
92 => "Hoverboard",
93 => "Aéroglisseur",
94 => "Gonflables",
95 => "Toboggan",
96 => "Parc aquatique",
97 => "Jet ski",
98 => "Kite surf",
99 => "Paddle",
100 => "Scooter",
101 => "Seabob",
102 => "Segway",
103 => "Wakeboard",
104 => "Ventilation simple flux",
105 => "Ventilation double flux",
106 => "Centre d'affaires",
107 => "Restaurant d’entreprise",
108 => "Jardin en copropriété",
109 => "Stabilisateurs",
110 => "Plateforme Hydraulique",
111 => "Congélateur",
112 => "Concierge",
115 => "Borne voiture électrique",
116 => "Panneaux solaires",
117 => "Ponts roulants",
118 => "Zone de remorquage",
119 => "Conduit d'extraction",
120 => "Contrôle d'accès",
121 => "Place de port",
122 => "Immeuble classé/inscrit",
123 => "Moustiquaires",
124 => "Service de sécurité",
125 => "Piscine en copropriété",
126 => "Abri de protection civile",
127 => "Simple vitrage",
128 => "Simple vitrage plastique",
129 => "Simple vitrage metal",
130 => "Double vitrage plastique",
131 => "Double vitrage metal",
132 => "Triple vitrage plastique",
133 => "Triple vitrage metal",
];
return $arrayConverter[$id] ?? null;
}
public function getPicturesByNewsId($id) {
$picturesRepository = $this->postRepository->getPicturePostsById($id);
$pictures = [];
foreach ($picturesRepository as $picture) {
$pictures = $picture->getPicture()->toArray();
}
return $pictures;
}
}