diff --git a/assets/app.scss b/assets/app.scss index ec28d35..5e06ad0 100644 --- a/assets/app.scss +++ b/assets/app.scss @@ -4,3 +4,7 @@ background: rgba(0,0,0,0.5); backdrop-filter: blur(5px); } + +.epage{ + color: orangered; +} diff --git a/migrations/Version20251202205146.php b/migrations/Version20251202205146.php new file mode 100644 index 0000000..d5079f2 --- /dev/null +++ b/migrations/Version20251202205146.php @@ -0,0 +1,34 @@ +addSql('CREATE TABLE abonements (id SERIAL NOT NULL, stripe_id VARCHAR(255) DEFAULT NULL, price_ht DOUBLE PRECISION NOT NULL, price_ttc DOUBLE PRECISION NOT NULL, tva DOUBLE PRECISION NOT NULL, create_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, update_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, name VARCHAR(255) NOT NULL, is_actif BOOLEAN NOT NULL, PRIMARY KEY(id))'); + $this->addSql('COMMENT ON COLUMN abonements.create_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN abonements.update_at IS \'(DC2Type:datetime_immutable)\''); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('DROP TABLE abonements'); + } +} diff --git a/migrations/Version20251202205529.php b/migrations/Version20251202205529.php new file mode 100644 index 0000000..83bc740 --- /dev/null +++ b/migrations/Version20251202205529.php @@ -0,0 +1,32 @@ +addSql('ALTER TABLE abonements ADD duration INT NOT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('ALTER TABLE abonements DROP duration'); + } +} diff --git a/src/Controller/PagesController.php b/src/Controller/PagesController.php new file mode 100644 index 0000000..ec6a243 --- /dev/null +++ b/src/Controller/PagesController.php @@ -0,0 +1,19 @@ + false], methods: ['GET','POST'])] + public function index(MainRepository $mainRepository): Response + { + return $this->render('pages/prestation.twig',[ + ]); + } + +} diff --git a/src/Entity/Abonements.php b/src/Entity/Abonements.php new file mode 100644 index 0000000..a895f9c --- /dev/null +++ b/src/Entity/Abonements.php @@ -0,0 +1,155 @@ +id; + } + + public function getStripeId(): ?string + { + return $this->stripeId; + } + + public function setStripeId(?string $stripeId): static + { + $this->stripeId = $stripeId; + + return $this; + } + + public function getPriceHt(): ?float + { + return $this->priceHt; + } + + public function setPriceHt(float $priceHt): static + { + $this->priceHt = $priceHt; + + return $this; + } + + public function getPriceTtc(): ?float + { + return $this->priceTtc; + } + + public function setPriceTtc(float $priceTtc): static + { + $this->priceTtc = $priceTtc; + + return $this; + } + + public function getTva(): ?float + { + return $this->tva; + } + + public function setTva(float $tva): static + { + $this->tva = $tva; + + return $this; + } + + public function getCreateAt(): ?\DateTimeImmutable + { + return $this->createAt; + } + + public function setCreateAt(\DateTimeImmutable $createAt): static + { + $this->createAt = $createAt; + + return $this; + } + + public function getUpdateAt(): ?\DateTimeImmutable + { + return $this->updateAt; + } + + public function setUpdateAt(\DateTimeImmutable $updateAt): static + { + $this->updateAt = $updateAt; + + return $this; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function isActif(): ?bool + { + return $this->isActif; + } + + public function setIsActif(bool $isActif): static + { + $this->isActif = $isActif; + + return $this; + } + + public function getDuration(): ?int + { + return $this->duration; + } + + public function setDuration(int $duration): static + { + $this->duration = $duration; + + return $this; + } +} diff --git a/src/Repository/AbonementsRepository.php b/src/Repository/AbonementsRepository.php new file mode 100644 index 0000000..172db43 --- /dev/null +++ b/src/Repository/AbonementsRepository.php @@ -0,0 +1,43 @@ + + */ +class AbonementsRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Abonements::class); + } + + // /** + // * @return Abonements[] Returns an array of Abonements objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('a') + // ->andWhere('a.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('a.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Abonements + // { + // return $this->createQueryBuilder('a') + // ->andWhere('a.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/templates/pages/prestation.twig b/templates/pages/prestation.twig new file mode 100644 index 0000000..7763104 --- /dev/null +++ b/templates/pages/prestation.twig @@ -0,0 +1,378 @@ +{% extends 'base.twig' %} + +{# --- METADATA & SCHEMA --- #} +{% block title %}{{'page.presentation.title'|trans}}{% endblock %} +{% block meta_description %}{{'page.presentation.description'|trans}}{% endblock %} + +{% block canonical_url %}{% endblock %} +{% block breadcrumb_schema %} + +{% endblock %} + +{# --- BODY --- #} +{% block body %} +
+ + {# Wrapper global pour centrer le contenu et gérer le padding mobile #} +
+ + {# Titre Style Moderne/Anime Épuré #} +

+ EPage - Votre page cosplayer(euse) + +

+ + {# Conteneur des Fonctionnalités #} +
+

+ Atteignez le Niveau S : La vitrine digitale dont vous avez besoin. +

+

+ Vous créez des œuvres d'art, votre présence en ligne devrait l'être aussi ! L'EPage vous offre une plateforme élégante, optimisée pour le cosplay, vous libérant des contraintes techniques. +

+ + {# Clarification du Rôle de l'EPage (MODIFIÉ) #} +

+ Attention, l'EPage n'est pas un clone ou un outil de planification (type Cosplan, etc.). Notre vocation est unique : vous proposer une page d'exposition personnelle, le vôtre, pour centraliser et valoriser votre travail en ligne. + Ce service est exclusivement réservé aux cosplayer(euses) particuliers et n'est pas destiné aux entreprises, associations ou structures commerciales. +

+ + {# GRILLE DES FONCTIONNALITÉS (devient 1 colonne sur mobile, 2 sur md, 3 sur lg) #} +
+ + {# Bloc 1: Visibilité Maximale (Loupe) #} +
+
+ + + +

✨ OPTIMISATION LÉGENDAIRE (SEO) 

+
+

Votre nom sera le premier résultat de recherche ! L'EPage assure une visibilité maximale pour que votre travail soit vu par tous.

+
+ + {# Bloc 2: Centralisation de Contenu (Chaîne) #} +
+
+ + + +

🔗 NEXUS DE VOTRE UNIVERS

+
+

Un seul lien pour tous vos contenus : réseaux sociaux, listes de cadeaux, boutiques, et galeries complètes de vos Cosplans et Cosplays.

+
+ + {# Bloc 3: Annonces & Événements (Calendrier) #} +
+
+ + + +

📅 CONVENTION RADAR 

+
+

Gérez votre planning d'apparitions : mettez en avant vos prochaines conventions, meetups ou événements spéciaux pour que personne ne rate votre présence.

+
+ + {# Bloc 4: Intégration E-Cosplay (Cœur) #} +
+
+ + + +

🤝 CACHET D'APPROBATION E-COSPLAY

+
+

Bénéficiez de la confiance de la communauté ! Votre page est directement promue sur le site de l'association E-Cosplay, renforçant votre légitimité.

+
+ + {# Bloc 5: Modération et Sécurité (Bouclier) #} +
+
+ + + +

🛡️ ACCÈS VALIDÉ & ZONE SÛRE

+
+

+ L'accès à la prestation EPage est soumis à la validation de votre profil par E-Cosplay. Pour votre protection, toutes les données de votre page sont chiffrées. Nous demandons le strict minimum d'informations (nom, prénom, email, pseudo) nécessaire à la création et à la responsabilité légale (propriété sur les photos, etc.). Plateforme professionnelle et sécurisée. Pas d'inscription à la volée. +

+
+ + {# Bloc 6: Formulaire de Contact Sécurisé (Mail Check) #} +
+
+ + + +

✉️ CONTACT SANS RISQUE (ANTI-SPAM)

+
+

+ Un formulaire de contact intégré permet à vos fans et partenaires de vous contacter directement, sans jamais exposer votre adresse email. Nos systèmes sont équipés d'une détection anti-spam automatique et manuelle en cas de doute par nos équipes ! +
Les données reçues ne sont ni vendues, ni récupérées par nous, conformément à notre Politique de données personnelles. +

+
+ + {# Bloc 7: Personalisation (Palette) #} +
+
+ + + +

🎨 PERSONNALISATION AVANCÉE

+
+

Votre EPage est une toile blanche. Choisissez vos couleurs, votre arrière-plan, et sélectionnez parmi nos polices de caractères pour refléter parfaitement votre univers.

+
+ + {# Bloc 8: Suivi / Analytics (Activity) #} +
+
+ + + +

📊 SUIVI & DOCUMENTS À TÉLÉCHARGER

+
+

Visualisez l'impact de votre page en temps réel. Suivez le nombre de visiteurs et les vues de vos médias. De plus, proposez le téléchargement de documents importants (dossier de presse, CV, etc.) à vos fans et partenaires.

+
+
+
+ + + {# BLOC : OFFRE SANS ENGAGEMENT #} +
+

+ + Flexibilité Totale : Offre sans Engagement +

+

+ Votre abonnement EPage est sans engagement. +

+

+ Le renouvellement est automatique, mais vous choisissez la période qui vous convient : + 1, 2, 3, 6 mois ou 1 an, selon vos désirs. Annulez à tout moment. +

+
+ + {# Appel à l'action pour les étapes #} +
+

Prêt(e) à rejoindre nos X cosplayer(euse)s déjà présent(e)s sur notre plateforme ?

+
+ + {# CONTENEUR DE GRILLE POUR LES 3 BLOCS D'INFORMATION #} +
+ + {# BLOC 1: INFO TECHNIQUE NOM DE DOMAINE #} +
+

+ + Information Technique : Votre Nom de Domaine +

+

+ Vous ne disposez pas de votre propre nom de domaine ? +
L'URL de votre page sera automatiquement votre_pseudo.e-cosplay.com. +

+

+ Vous disposez de votre nom de domaine ? +
Il est tout à fait possible de le faire pointer directement sur votre EPage ! Cela nécessite une simple manipulation d'enregistrement DNS (type CNAME) de votre côté. +

+

+ Achat/Gestion : Vous pouvez également acheter et gérer votre nom de domaine directement chez notre partenaire SARL SITECONSEIL pour simplifier toutes vos démarches techniques. +

+
+ + {# BLOC 2: INFO LÉGALE COPYRIGHT #} +
+

+ + ⚖️ VOS DROITS D'AUTEUR (COPYRIGHT) +

+

+ Vous êtes l'unique responsable du droit d'auteur (copyright) de toutes les photos et vidéos publiées sur votre EPage. Il est crucial de remplir correctement toutes les informations relatives à la propriété. +

+

+ L'équipe E-Cosplay est là pour vous aider ! N'hésitez pas à nous contacter en cas de doute sur la légalité de vos contenus. +

+
+ + {# BLOC 3: INFO FONCTIONNALITÉS SUPPLÉMENTAIRES #} +
+

+ + ⚡ BESOIN DE PLUS DE FONCTIONNALITÉS ? +

+

+ Si vous avez besoin de fonctionnalités supplémentaires non disponibles actuellement sur l'EPage, demandez au support E-Cosplay. +

+

+ Nous vous indiquerons si cela est réalisable ou si nous devons vous diriger vers notre partenaire SARL SITECONSEIL pour la création d'un site internet sur mesure. +

+
+ +
+ + {# BLOC DE TARIFICATION EPage (CARTE UNIQUE AVEC SÉLECTEUR) - CENTRÉ ET RESPONSIVE #} +
+

Choisissez Votre Période d'Abonnement

+ +
+ +

+ EPage +

+ + {# SÉLECTEUR DE DURÉE (Utilise flex-wrap pour s'adapter sur mobile) #} +
+ + + + + + + + + + +
+ + {# AFFICHAGE DU PRIX DYNAMIQUE #} +
+ 5€ HT +
+ +

+ + {# BOUTON D'ACTION #} + + +

+ Abonnement sans engagement. Renouvellement automatique selon la période choisie. +

+
+
+ {# BLOC PARTENARIAT SITECONSEIL #} +
+
+

+ 🚀 Votre Site Internet Complet +

+

+ L'EPage est parfait pour votre vitrine Cosplay, mais si vous souhaitez un site complet, personnalisé et évolutif pour votre activité professionnelle ou votre marque personnelle : +

+ +
+

Partenaire Recommandé

+

+ Notre partenaire SARL SITECONSEIL propose sa solution CMS Esy-Flex. +

+

+ Créez votre site internet rapidement et profitez d'une offre adaptée. +

+ + Découvrir SITECONSEIL + + + +
+
+
+
+ + +
+ + +{% endblock %}