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,150 @@
{% extends 'base_backend_admin.html.twig' %}
{% block title %} Position {% 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">Position et affichage</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Position et affichage</li>
</ol>
</div>
<!-- Content Row -->
<div class="row">
<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">Afficher l'annonce sur la page d'acceuil</h6>
</div>
<!-- Card Body -->
<div class="card-body" style="min-height: 700px">
<div class="row">
<div class="col-md-5">
<div class="col-md-12 mb-4 mt-2">
<label for="societe" class="form-label">Société</label>
<div class="input-group">
<span class="input-group-text"><i class="fa-regular fa-building"></i></span>
<select class="form-select" id="societe" required="">
<option value=""></option>
{% for societe in societes %}
<option value="{{ societe.getId() }}">{{ societe.getNom() }}</option>
{% endfor %}
</select>
<div class="invalid-feedback">
Please select a valid country.
</div>
</div>
</div>
<div class="col-md-12 mb-5 annonce" style="display:none">
<label for="annonce" class="form-label">Annonce</label>
<div class="input-group">
<span class="input-group-text"><i class="fa-solid fa-scroll"></i></span>
<select class="form-select" id="annonce" required="">
</select>
<div class="invalid-feedback">
Please select a valid Annonce.
</div>
</div>
</div>
<div class="row mb-5 largeur" style="display:none">
<div class="col-md-8">
Dimension: <b><span id="largeur"></span></b>
</div>
</div>
<div class="col-md-8 mb-5 ligne" style="display:none">
<label for="ligne" class="form-label">Ligne d'affichage sur la Page d'accueil</label>
<select class="form-select" id="ligne" required=""></select>
<div class="invalid-feedback">
Please select a valid country.
</div>
</div>
<div class="intervalle-date mb-5" style="display:none">
<div class="row mb-3">
<div class="col-md-5">
<label for="dateDebut" class="form-label">Date Début</label>
<input type="date" class="form-control" id="dateDebut" placeholder="" value="" required="">
<div class="invalid-feedback">
Valid first name is required.
</div>
</div>
<div class="offset-1 col-md-5 dateFin">
<label for="dateFin" class="form-label">Date Fin</label>
<input type="date" class="form-control" id="dateFin" placeholder="" value="" required="">
<div class="invalid-feedback">
Valid last name is required.
</div>
</div>
</div>
</div>
<br>
<div class="row mb-5 valOperation" style="display:none">
<div class="col-md-5 offset-4">
<button type="button" class="btn btn-outline-secondary" id="valOperation">valider</button>
</div>
</div>
</div>
<div class="col-md-6 offset-1" >
<div id="loading-data"></div>
<div id="annonce-ligne"></div>
</div>
<div class="save-operation" style="display:none">
<div class="col-md-6 offset-3 " >
<hr class="my-4 mb-4">
<center>
<button class="w-5 btn btn-primary btn-lg" id="save-operation">
<i class="fa-regular fa-floppy-disk"></i>
enregister
</button>
</center>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
var pathReservation = "{{ path('backend_admin_position_creer') }}";
var pathTestReservation = "{{ path('backend_admin_position_disponibilite') }}";
var pathLigneDetail = "{{ path('backend_admin_position_ligne_detail') }}";
var pathSave = "{{ path('backend_admin_position_save') }}";
var pathPositionDetail = "{{ path('backend_admin_position_detail') }}";
</script>
{{ parent() }}
{{ encore_entry_script_tags('app_backend_annonce') }}
{% endblock %}

View File

@@ -0,0 +1,176 @@
{% extends 'base_backend_admin.html.twig' %}
{% block title %} Position {% 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">Position et affichage</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Position et affichage</li>
</ol>
</div>
{% include 'backend_admin/basic/notice.html.twig' %}
<!-- Content Row -->
<div class="row">
<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">Afficher l'annonce sur la page d'acceuil</h6>
</div>
<!-- Card Body -->
<div class="card-body" style="min-height: 700px">
<div class="row">
<div class="col-md-5">
<div class="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-10">
<div class="font-weight-bold text-primary text-uppercase mb-1">
Annonce:
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">{{ position.getAnnonce().getTitre() }}</div>
</div>
<div class="col-1 offset-1">
<i class="fa-solid fa-scroll fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<div class="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-5">
<div class="font-weight-bold text-success text-uppercase mb-1">
Date Début
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">{{ position.getDateAdd()|date("d/m/Y") }}</div>
</div>
<div class="col-5">
<div class="font-weight-bold text-success text-uppercase mb-1">
Date Fin
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">{{ position.getDateFin()|date("d/m/Y") }}</div>
</div>
<div class="col-1 offset-1">
<i class="fas fa-comments fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<div class="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-5">
<div class="font-weight-bold text-success text-uppercase mb-1">
Ligne d'affichage
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">{{ ligne.getRang() }}</div>
</div>
<div class="col-5">
<div class="font-weight-bold text-success text-uppercase mb-1">
Dimension
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">{{ position.getAnnonce().getDimension() }}</div>
</div>
<div class="col-1 offset-1">
<i class="fas fa-clipboard-list fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<div class="mb-4">
<div class="card border-left-danger shadow h-100 py-2">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="font-weight-bold text-danger text-uppercase mb-1">
Prix Total d'annonce:
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">{{ position.getTotalPrix()}} DT</div>
</div>
<div class="col-auto">
<i class="fas fa-comments fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
<div class="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-7">
<div class="font-weight-bold text-warning text-uppercase mb-1">
Créer par:
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">{{ position.getCreateBy().getFirstname() }} {{ position.getCreateBy().getLastname() }}</div>
</div>
<div class="col-3">
<div class="font-weight-bold text-warning text-uppercase mb-1">
date:
</div>
<div class="h5 mb-0 font-weight-bold text-gray-800">{{ position.getDateAdd()|date("d/m/Y") }}</div>
</div>
<div class="col-1 offset-1">
<i class="fa-solid fa-scroll fa-2x text-gray-300"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 offset-1" >
<div id="annonce-ligne"> <div class="col-md-12 col-lg-12 order-md-last">
<h4 class="d-flex justify-content-between align-items-center mb-3">
<span class="text-muted">Affichage d'annonce sur la Ligne <b>{{ position.getLigneRange() }}</b></span>
<span class="badge bg-secondary rounded-pill"> {{ position.getAffichages()|length }} Jour</span>
</h4>
<div class="overflow-scroll p-3 bg-light" style="height: 550px;">
<ul class="list-group mb-3">
{% for affichage in position.getAffichages() %}
<li class="list-group-item d-flex justify-content-between lh-sm">
<div>
<h6 class="my-0"> {{ affichage.getDateShow()|date("d/m/Y") }}</h6>
</div>
<small class="text-muted">Ligne {{ affichage.getLigneRange() }}</small>
<span class="text-muted">{{ affichage.getPrix() }} DT</span>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,70 @@
{% extends 'base_backend_admin.html.twig' %}
{% block title %} Position et Affichage {% 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">Position et Affichage</h1>
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item">Position et Affichage</li>
</ol>
</div>
<!-- Begin Page Content -->
<div class="container-fluid">
{% include 'backend_admin/basic/notice.html.twig' %}
<a href="{{ path('backend_admin_position_creer') }}" class="btn btn-info btn-icon-split mb-4">
<span class="icon text-white"><i class="fa-regular fa-square-plus"></i></span>
<span class="text text-white">Ajouter une nouvelle Position et Affichage</span>
</a>
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-info">Liste Positions et Affichages des annonces sur la page d'acceuil</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" width="100%" cellspacing="0">
<thead>
<tr>
<th>#</th>
<th>Titre</th>
<th>Ligne</th>
<th>Date début</th>
<th>Date fin</th>
<th>Détail</th>
</tr>
</thead>
<tbody>
{% for position in positions %}
<tr>
<td>{{ position.getId() }}</td>
<td>{{ position.getAnnonce().getTitre() }}</td>
<td>{{ position.getLigneRange() }}</td>
<td>{{ position.getDateAdd()|date("d/m/Y")}}</td>
<td>{{ position.getDateFin()|date("d/m/Y") }}</td>
<td>
<a href="{{ path('backend_admin_position_detail', {'idPosition': position.getId() }) }}" title="Détail" class="btn btn-info btn-action">
<i class="fa-solid fa-magnifying-glass"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}