first commit

This commit is contained in:
maher
2025-10-30 13:13:41 +01:00
commit ecd64aad53
404 changed files with 82238 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
<!-- Sidebar -->
<ul class="navbar-nav bg-gradient-secondary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="{{ path('backend_admin_demo_index') }}">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
<div class="sidebar-brand-text mx-3">Promo<sup>TN</sup></div>
</a>
<!-- Divider -->
<hr class="sidebar-divider my-0">
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="{{ path('frontend_home_index') }}">
<i class="fa-solid fa-right-from-bracket"></i>
<span>Retour au site</span>
</a>
</li>
<!-- Divider -->
<hr class="sidebar-divider">
<!-- Heading -->
<div class="sidebar-heading">Gestion</div>
<!-- Nav Item - Charts -->
<li class="nav-item {{ is_active(['backend_partner_dashboard_index']) }}">
<a class="nav-link" href="{{ path('backend_partner_dashboard_index') }}">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span>
</a>
</li>
<!-- Nav Item - Charts -->
<li class="nav-item ">
<a class="nav-link" href="#">
<i class="fa-solid fa-envelope"></i>
<span>Message</span>
</a>
</li>
<!-- Nav Item - Réservation -->
{% set activeReservation = is_active(['backend_partner_reservation_liste_valider', 'backend_partner_reservation_valider', 'backend_partner_reservation_liste_encours']) %}
{% if (activeReservation == 'active') %} {% set showReservation = 'show' %} {% else %} {% set showReservation = ''%} {% endif %}
<li class="nav-item {{ activeReservation }}">
<a class="nav-link collapsed" href="#collapsepartenariat" data-toggle="collapse" data-bs-toggle="collapse" aria-expanded="true" aria-controls="collapsepositions">
<i class="fa-regular fa-building"></i>
<span>Réservation</span>
</a>
<div id="collapsepartenariat" class="collapse {{ showReservation }}" data-parent="#accordionSidebar"aria-labelledby="headingpositions" >
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Réservation:</h6>
<a class="collapse-item {{ is_active(['backend_partner_reservation_valider']) }}" href="{{ path('backend_partner_reservation_valider') }}">Valider</a>
<a class="collapse-item {{ is_active(['backend_partner_reservation_liste_valider']) }}" href="{{ path('backend_partner_reservation_liste_valider') }}">Liste Valider</a>
<a class="collapse-item {{ is_active(['backend_partner_reservation_liste_encours']) }}" href="{{ path('backend_partner_reservation_liste_encours') }}">Liste En Cours</a>
</div>
</div>
</li>
<!-- Nav Item - Charts -->
<li class="nav-item">
<a class="nav-link" href="#">
<i class="fa-solid fa-hand-holding-dollar"></i>
<span>Réglement</span>
</a>
</li>
<!-- Nav Item - Utilisateur -->
{% set activeUtilisateur = is_active(['backend_partner_partenaire_add', 'backend_partner_partenaire_gestion']) %}
{% if (activeUtilisateur == 'active') %} {% set showUtilisateur = 'show' %} {% else %} {% set showUtilisateur = ''%} {% endif %}
<li class="nav-item {{ activeUtilisateur }}">
<a class="nav-link collapsed" href="#collapseutilisateur" data-toggle="collapse" data-bs-toggle="collapse" aria-expanded="true" aria-controls="collapsepositions">
<i class="fa-regular fa-building"></i>
<span>Utilisateur</span>
</a>
<div id="collapseutilisateur" class="collapse {{ showUtilisateur }}" data-parent="#accordionSidebar"aria-labelledby="headingpositions" >
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Utilisateur:</h6>
<a class="collapse-item {{ is_active(['backend_partner_partenaire_gestion']) }}" href="{{ path('backend_partner_partenaire_gestion') }}">Gestion</a>
<a class="collapse-item {{ is_active(['backend_partner_partenaire_add']) }}" href="{{ path('backend_partner_partenaire_add') }}">Ajouter</a>
</div>
</div>
</li>
<!-- Sidebar Message -->
<hr class="sidebar-divider">
<div class="sidebar-card d-none d-lg-flex">
<img class="sidebar-card-illustration mb-2" src="{{ asset('images/backend/img/undraw_profile.svg') }}" alt="{{ app.user.firstname ~ ' ' ~ app.user.lastname|e }}">
<p class="text-center mb-2"><strong>{{ app.user.firstname ~ ' ' ~ app.user.lastname|e }}</strong></p>
<a class="btn btn-success btn-sm" href="{{ path('frontend_security_logout') }}">Déconnexion</a>
</div>
<hr class="sidebar-divider">
<div class="text-center d-none d-md-inline">
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
</ul>
<!-- End of Sidebar -->

View File

@@ -0,0 +1,74 @@
{% for notice in app.flashes('primary') %}
<div class="card bg-primary text-white shadow mb-4">
<div class="card-body">
{{ notice.title }}
<div class="text-white-50 small">{{ notice.message|raw }}</div>
</div>
</div>
{% endfor %}
{% for notice in app.flashes('success') %}
<div class="card bg-success text-white shadow mb-4">
<div class="card-body">
{{ notice.title }}
<div class="text-white-50 small">{{ notice.message|raw }}</div>
</div>
</div>
{% endfor %}
{% for notice in app.flashes('info') %}
<div class="card bg-info text-white shadow mb-4">
<div class="card-body">
<i class="fa-solid fa-circle-info fa-2x"></i> {{ notice.title }} <br>
<div class="text-white">{{ notice.message|raw }}</div>
</div>
</div>
{% endfor %}
{% for notice in app.flashes('warning') %}
<div class="card bg-warning text-white shadow mb-4">
<div class="card-body">
{{ notice.title }}
<div class="text-white-50 small">{{ notice.message|raw }}</div>
</div>
</div>
{% endfor %}
{% for notice in app.flashes('danger') %}
<div class="card bg-danger text-white shadow mb-4">
<div class="card-body">
{{ notice.title }}
<div class="text-white-50 small">{{ notice.message|raw }}</div>
</div>
</div>
{% endfor %}
{% for notice in app.flashes('secondary') %}
<div class="card bg-secondary text-white shadow mb-4">
<div class="card-body">
{{ notice.title }}
<div class="text-white-50 small">{{ notice.message|raw }}</div>
</div>
</div>
{% endfor %}
{% for notice in app.flashes('light') %}
<div class="card bg-light text-black shadow mb-4">
<div class="card-body">
{{ notice.title }}
<div class="text-black-50 small">{{ notice.message|raw }}</div>
</div>
</div>
{% endfor %}
{% for notice in app.flashes('dark') %}
<div class="card bg-dark text-white shadow mb-4">
<div class="card-body">
{{ notice.title }}
<div class="text-white-50 small">{{ notice.message|raw }}</div>
</div>
</div>
{% endfor %}

View File

@@ -0,0 +1,170 @@
{% extends 'base_backend_partner.html.twig' %}
{% block title %} Dashboard {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Dashboard</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Dashboard</li>
</ol>
</div>
<div class="row">
<!-- Earnings (Monthly) Card Example -->
<div class="col-xl-3 col-md-6 mb-4">
<div class="card border-left-primary shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-primary text-uppercase mb-1">
Nombre des inscrits</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">40.000</div>
</div>
<div class="col-auto">
<i class="fas fa-calendar fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Earnings (Monthly) Card Example -->
<div class="col-xl-3 col-md-6 mb-4">
<div class="card border-left-success shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-success text-uppercase mb-1">
Nombre des visiteurs</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">215</div>
</div>
<div class="col-auto">
<i class="fas fa-dollar-sign fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Earnings (Monthly) Card Example -->
<div class="col-xl-3 col-md-6 mb-4">
<div class="card border-left-info shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-info text-uppercase mb-1">Nombre des annonces</div>
<div class="row no-gutters align-items-center">
<div class="col-auto">
<div class="h5 mb-0 mr-3 font-weight-bold text-gray-800">50</div>
</div>
</div>
</div>
<div class="col-auto">
<i class="fas fa-clipboard-list fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Pending Requests Card Example -->
<div class="col-xl-3 col-md-6 mb-4">
<div class="card border-left-warning shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-warning text-uppercase mb-1">
Nombre des Commandes</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">18</div>
</div>
<div class="col-auto">
<i class="fas fa-comments fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Content Row -->
<div class="row">
<!-- Area Chart -->
<div class="col-xl-8 col-lg-7">
<div class="card shadow mb-4">
<!-- Card Header - Dropdown -->
<div
class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">Nombre dinscrits au site </h6>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in"
aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Dropdown Header:</div>
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</div>
<!-- Card Body -->
<div class="card-body">
<div class="chart-area">
<canvas id="myAreaChart"></canvas>
</div>
</div>
</div>
</div>
<!-- Pie Chart -->
<div class="col-xl-4 col-lg-5">
<div class="card shadow mb-4">
<!-- Card Header - Dropdown -->
<div
class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">les commandes passé</h6>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in"
aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Dropdown Header:</div>
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</div>
<!-- Card Body -->
<div class="card-body">
<div class="chart-pie pt-4 pb-2">
<canvas id="myPieChart"></canvas>
</div>
<div class="mt-4 text-center small">
<span class="mr-2">
<i class="fas fa-circle text-primary"></i> Total Commandes
</span>
<span class="mr-2">
<i class="fas fa-circle text-success"></i> Commander
</span>
<span class="mr-2">
<i class="fas fa-circle text-info"></i> Annuler
</span>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
{{ encore_entry_script_tags('app_backend_dashboard') }}
{% endblock %}

View File

@@ -0,0 +1,64 @@
{% extends 'base_backend_partner.html.twig' %}
{% block title %} Gestion des utilisateurs {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Gestion des utilisateurs</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Utilisateur</li>
<li class="breadcrumb-item">Gestion</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- DataTales Example offset-1-->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Liste des utilisateurs</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTablesSociete" width="100%" cellspacing="0">
<thead>
<tr>
<th>#</th>
<th>Prénom</th>
<th>Nom</th>
<th>Email</th>
<th>Téléphone</th>
<th>Date Ajouter</th>
<th>Action</th>
</tr>
</thead>
<tfoot>
<tr>
<th>#</th>
<th>Prénom</th>
<th>Nom</th>
<th>Email</th>
<th>Téléphone</th>
<th>Date Ajouter</th>
<th>Action</th>
</tr>
</tfoot>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,68 @@
{% extends 'base_backend_partner.html.twig' %}
{% block title %} Réservation {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Réservation</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Réservation</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Liste des Réservations Encours</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTablesSociete" width="100%" cellspacing="0">
<thead>
<tr>
<th>#</th>
<th>Client</th>
<th>Article</th>
<th>Quantité</th>
<th>Montant</th>
<th>Avance (payer en site)</th>
<th>Reste (payer en société)</th>
<th>Date Réglement</th>
<th>Détail</th>
</tr>
</thead>
<tfoot>
<tr>
<th>#</th>
<th>Client</th>
<th>Article</th>
<th>Quantité</th>
<th>Montant</th>
<th>Avance (payer en site)</th>
<th>Reste (payer en société)</th>
<th>Date Réglement</th>
<th>Détail</th>
</tr>
</tfoot>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,74 @@
{% extends 'base_backend_partner.html.twig' %}
{% block title %} Réservation {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Liste En Cours</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Réservation</li>
<li class="breadcrumb-item">Liste En Cours</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- DataTales Example offset-1-->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Liste des Réservations En Cours</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTablesSociete" width="100%" cellspacing="0">
<thead>
<tr>
<th>Client</th>
<th>Article / Service</th>
<th>Quantité / RDV </th>
<th>Montant</th>
<th>Avance <br> (payer en site)</th>
<th>Reste <br> (payer en société)</th>
<th>Date Achat</th>
</tr>
</thead>
<tbody>
{% for reservation in reservations %}
{% if reservation.getType() == "ReservationArticle" %}
<tr>
<td>{{ reservation.getClient().getFullName() }}</td>
<td>{{ reservation.getArticle().getTitre() }}</td>
<td>{{ reservation.getQuantite() }}</td>
<td>{{ reservation.getPrix() }} DT</td>
<td>{{ reservation.getAvance() }} DT</td>
<td>{{ (reservation.getPrix() * reservation.getQuantite()) - reservation.getAvance() }} DT</td>
<td>{{ reservation.getDateAdd()|date("d/m/Y H:i") }} </td>
</tr>
{% elseif reservation.getType() == "ReservationService" %}
<tr>
<td>{{ reservation.getClient().getFullName() }}</td>
<td>{{ reservation.getService().getTitre() }}</td>
<td>{{ reservation.getDateRdv()|date("d/m/Y H:i") }}</td>
<td>{{ reservation.getPrix() }} DT</td>
<td>{{ reservation.getAvance() }} DT</td>
<td>{{ reservation.getPrix() - reservation.getAvance() }} DT</td>
<td>{{ reservation.getDateAdd()|date("d/m/Y H:i") }} </td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,82 @@
{% extends 'base_backend_partner.html.twig' %}
{% block title %} Réservation {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Liste Valide</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Réservation</li>
<li class="breadcrumb-item">Liste Valider</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- DataTales Example offset-1-->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Liste des Réservations Valider</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTablesSociete" width="100%" cellspacing="0">
<thead>
<tr>
<th>Date Validation</th>
<th>Client</th>
<th>Article / Service</th>
<th>Quantité / RDV</th>
<th>Montant</th>
<th>Avance <br> (payer en site)</th>
<th>Reste <br> (payer en société)</th>
<th>Valider par</th>
</tr>
</thead>
<tbody>
{% for reservationValidation in reservationValidations %}
{% if reservationValidation.getType() == "ReservationArticleValidation" %}
{% set reservationArticle = reservationValidation.getReservationArticle() %}
<tr>
<td>{{ reservationValidation.getDateAdd()|date("d/m/Y H:i") }}</td>
<td>{{ reservationArticle.getClient().getFullName() }}</td>
<td>{{ reservationArticle.getArticle().getTitre() }}</td>
<td>{{ reservationArticle.getQuantite() }}</td>
<td>{{ reservationArticle.getPrix() }} DT</td>
<td>{{ reservationArticle.getAvance() }} DT</td>
<td>{{ (reservationArticle.getPrix() * reservationArticle.getQuantite()) - reservationArticle.getAvance() }} DT</td>
<td>{{ reservationValidation.getPartenaire().getPartenaire().getFullName() }}</td>
</tr>
{% elseif reservationValidation.getType() == "ReservationServiceValidation" %}
{% set reservationService = reservationValidation.getReservationService() %}
<tr>
<td>{{ reservationValidation.getDateAdd()|date("d/m/Y H:i") }}</td>
<td>{{ reservationService.getClient().getFullName() }}</td>
<td>{{ reservationService.getService().getTitre() }}</td>
<td>{{ reservationService.getDateRdv()|date("d/m/Y H:i") }}</td>
<td>{{ reservationService.getPrix() }} DT</td>
<td>{{ reservationService.getAvance() }} DT</td>
<td>{{ reservationService.getPrix() - reservationService.getAvance() }} DT</td>
<td>{{ reservationValidation.getPartenaire().getPartenaire().getFullName() }}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,77 @@
{% extends 'base_backend_partner.html.twig' %}
{% block title %} Réservation {% endblock %}
{% block content %}
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Réservation</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Réservation</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Valider une Réservation d'article</h6>
</div>
<div class="card-body">
{{ form_start(formArticle, {'action': path('backend_partner_reservation_valider_article'), 'method': 'POST'}) }}
<div class="row g-3">
<div class="col-md-2">
{{ form_label(formArticle.reservnumarticle, 'Réservation Numéro:', {'attr': {'class': 'form-label'}}) }}
</div>
<div class="col-md-3">
{{ form_widget(formArticle.reservnumarticle, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="col-md-2">
{{ form_widget(formArticle.save, {'label': "Valider", 'attr': {'class': 'w-90 btn btn-primary '}}) }}
</div>
</div>
{{ form_end(formArticle) }}
</div>
</div>
<br><br><br>
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Valider une Réservation d'un Service</h6>
</div>
<div class="card-body">
{{ form_start(formService, {'action': path('backend_partner_reservation_valider_service'), 'method': 'POST'}) }}
<div class="row g-3">
<div class="col-md-2">
{{ form_label(formService.reservnumservice, 'Réservation Numéro:', {'attr': {'class': 'form-label'}}) }}
</div>
<div class="col-md-3">
{{ form_widget(formService.reservnumservice, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="col-md-2">
{{ form_widget(formService.save, {'label': "Valider", 'attr': {'class': 'w-90 btn btn-primary '}}) }}
</div>
</div>
{{ form_end(formService) }}
</div>
</div>
</div>
{% endblock %}