{% extends 'base.html.twig' %}
{% block title %}Accueil{% endblock %}
{% block body %}
<style>
.btn-info {
color: white;
}
/* Style pour le background image */
body, html {
margin: 0;
padding: 0;
height: 100%;
}
.btn-container {
margin-top: 100px;
/* Positionner tout à droite avec un espacement de 20px du bord */
margin-right: 50px;
display: flex; /* Utiliser Flexbox pour aligner les éléments horizontalement */
justify-content: center; /* Centrer les boutons horizontalement dans le conteneur */
gap: 20px; /* Espacement entre les boutons */
/* Ajuster si nécessaire pour l'espacement du bord */
align-items: center;
margin-left: 350px;
}
.btn-container button {
height: 80px;
width: 400px;
font-size: 1.5rem;
border: 2px solid transparent; /* Bordure transparente */
transition: all 0.3s ease; /* Transition douce pour les effets */
}
.btn-container button:hover {
color: #000; /* Couleur du texte au survol */
border-color: #000; /* Couleur de la bordure au survol */
background-color: transparent; /* Fond transparent au survol */
}
.welcome-text {
text-align: center;
margin-top: 30px;
}
.sub-text {
text-align: center;
font-size: 1rem;
font-weight: normal;
margin-top: 12px;
}
/* Style de la ligne noire */
.divider {
width: 20%;
height: 1px;
background-color: black;
margin: 20px auto;
}
.container {
background: url('{{ asset('images/fond2.png') }}') no-repeat center center;
background-size: cover;
height: 50vh;
margin: 0;
position: relative; /* Ajout d'une position relative pour le positionnement absolu */
}
.search {
margin: 20px auto;
padding: 20px;
border: 2px solid #ddd;
border-radius: 10px;
background-color: #f9f9f9;
}
.search h3 {
margin-bottom: 15px;
margin-left: 90px;
color: #007bff;
}
.form-inline input {
margin-bottom: 10px;
height: 40px;
}
.form-inline .btn {
height: 40px;
}
.qui-sommes-nous {
background-color: white; /* Fond blanc */
padding: 20px; /* Espacement interne */
margin: 20px; /* Espacement externe */
border-radius: 10px; /* Coins arrondis */
width: 600px;
text-align: center; /* Alignement centré */
margin-top: 150px;
margin-left: 200px; /* Centrer horizontalement */
margin-right: auto; /* Centrer horizontalement */
}
.qui-sommes-nous .btn {
width: 150px; /* Rétrécir le bouton */
height: 50px; /* Rétrécir la hauteur du bouton */
font-size: 1rem; /* Réduire la taille de la police */
margin-top: 20px; /* Espacement au-dessus du bouton */
}
.nos-valeurs {
background-color: white; /* Fond blanc */
padding: 20px; /* Espacement interne */
margin: 20px; /* Espacement externe */
border-radius: 10px; /* Coins arrondis */
text-align: center; /* Alignement à gauche */
width: 600px;
margin-top: 150px;
margin-left: 50px; /* Centrer horizontalement */
margin-right: 200px; /* Centrer horizontalement */
}
.nos-valeurs-btn {
margin-top: auto; /* Pour coller au bas */
}
.container1{
margin-top: 100px;
background: url('{{ asset('images/cercle.png') }}') no-repeat center center;
background-size: cover;
height: 100vh;
position: relative;
margin-bottom: 200px;
}
.btn-red {
background-color :rgb(82, 212, 238);
color: white;
}
.btn-lightblue {
background-color: #ADD8E6; /* Bleu clair */
color: white; /* Couleur du texte */
border: none; /* Supprime la bordure */
}
.btn-lightblue:hover {
background-color: #87CEEB; /* Couleur pour le survol */
}
.alert {
padding: 15px;
margin-bottom: 20px;
border-radius: 5px;
}
.alert-success {
background-color: #d4edda;
color: #155724;
}
.alert-danger {
background-color: #f8d7da;
color: #721c24;
}
.title {
margin-left: 200px;
}
.btn.btn-lightblue {
background-color: white; /* Fond blanc */
color: #1E90FF; /* Couleur du texte en bleu Dodger Blue */
border: 2px solid #1E90FF; /* Bordure bleue */
border-radius: 5px; /* Coins légèrement arrondis */
padding: 12px 24px; /* Espacement interne pour un meilleur confort *//* Police en gras */
transition: background-color 0.3s, color 0.3s, border-color 0.3s, transform 0.3s; /* Transition douce pour les effets */
}
.btn.btn-lightblue:hover {
background-color: #1E90FF; /* Fond bleu au survol */
color: white; /* Texte blanc au survol */
border-color: #1E90FF; /* Bordure bleue au survol */
transform: scale(1.05); /* Agrandir légèrement au survol */
}
.btn.btn-lightblue:focus {
outline: none; /* Supprimer le contour par défaut */
box-shadow: 0 0 0 2px rgba(30, 144, 255, 0.5); /* Ajouter une ombre portée bleue au focus */
}
.mission {
margin: 20px;
}
/* Style des cartes des missions */
.card {
border: 1px solid #ddd; /* Bordure légère pour délimiter la carte */
border-radius: 10px; /* Coins arrondis */
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Ombre légère pour effet 3D */
overflow: hidden; /* Pour que les coins arrondis soient visibles */
transition: box-shadow 0.3s ease, transform 0.3s ease; /* Transition pour les effets */
}
.card:hover {
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* Ombre plus marquée au survol */
transform: translateY(-5px); /* Légère élévation au survol */
}
.card-body {
padding: 20px; /* Espacement interne */
}
.card-title {
font-size: 1.5rem; /* Taille de police légèrement augmentée */
font-weight: bold; /* Texte en gras pour le titre */
color: #333; /* Couleur du texte */
margin-bottom: 10px; /* Espacement sous le titre */
}
.ref {
font-size: 0.875rem; /* Taille de police légèrement réduite */
color: #555; /* Couleur légèrement plus claire */
}
.list-unstyled {
padding-left: 0; /* Supprimer l’espacement par défaut */
list-style: none; /* Supprimer les puces */
font-size: 1rem; /* Taille de police confortable */
color: #666; /* Couleur du texte */
}
.list-unstyled li {
margin-bottom: 10px; /* Espacement entre les éléments de liste */
}
.btn-primary {
background-color: #007bff; /* Couleur de fond pour le bouton */
color: white; /* Couleur du texte */
border: none; /* Supprimer la bordure */
border-radius: 5px; /* Coins arrondis */
padding: 10px 20px; /* Espacement interne */
transition: background-color 0.3s ease, transform 0.3s ease; /* Transition pour les effets */
}
.btn-primary:hover {
background-color: #0056b3; /* Couleur de fond au survol */
transform: scale(1.05); /* Légère agrandissement au survol */
}
.client-name {
background-color: #f0f8ff; /* Fond légèrement coloré pour le nom du client */
padding: 5px 10px; /* Espacement interne */
border-radius: 5px; /* Coins arrondis */
font-weight: bold; /* Texte en gras */
color: #007bff;
font-size: 1.2rem; /* Couleur du texte */
}
.date-duration {
font-size: 0.925rem; /* Taille de police légèrement réduite */
color: #333; /* Couleur du texte */
}
.budget {
font-size: 1.1rem; /* Taille de police confortable */
color: #333; /* Couleur du texte */
}
.pagination {
display: flex;
justify-content: center;
padding-left: 0;
list-style: none;
border-radius: 0.25rem;
margin: 20px 0;
}
.pagination li {
margin: 0 5px;
}
.pagination li a,
.pagination li span {
color: #007bff; /* Couleur du texte */
text-decoration: none;
background-color: white;
border: 1px solid #dee2e6;
padding: 10px 15px;
border-radius: 0.25rem;
transition: background-color 0.2s, color 0.2s;
}
.pagination li a:hover {
background-color: #007bff;
color: white;
}
.pagination li.active span {
background-color: #007bff;
color: white;
border-color: #007bff;
}
.pagination li.disabled span {
color: #6c757d;
background-color: #fff;
border-color: #dee2e6;
}
</style>
{% for label, messages in app.flashes %}
<div class="alert alert-{{ label }}">
{% for message in messages %}
{{ message }}
{% endfor %}
</div>
{% endfor %}
<div class="container mb-5">
<div class="title">
<h1 class="welcome-text">Bienvenue sur DimaWork</h1>
<div class="divider"></div> <!-- Ligne noire ajoutée ici -->
<h3 class="sub-text">Rejoignez DimaWork, l'avenir vous appartient...</h3>
</div>
<div class="btn-container">
{% if is_granted('ROLE_SUPERADMIN') %}
<!-- Admin sees both buttons -->
<button class="btn btn-primary mb-5" onclick="window.location.href='{{ path('app_register1') }}'">Inscription Freelance</button>
<button class="btn btn-lightblue mb-5" onclick="window.location.href='{{ path('app_register_entreprise') }}'">Inscription Entreprise</button>
<button class="btn btn-red mb-5" onclick="window.location.href='{{ path('app_creation_admin') }}'">Inscription Admin Opérationnel</button>
{% elseif is_granted('ROLE_ADMIN') %}
<!-- Admin sees both buttons -->
<button class="btn btn-primary mb-5" onclick="window.location.href='{{ path('app_register1') }}'">Inscription Freelance</button>
<button class="btn btn-lightblue mb-5" onclick="window.location.href='{{ path('app_register_entreprise') }}'">Inscription Entreprise</button>
{% elseif is_granted('ROLE_USER') %}
<!-- Consultant sees no buttons -->
{# No buttons shown #}
{% elseif app.user is null %}
<!-- User (including non-connected) sees only the Freelance button -->
<button class="btn btn-primary mb-5" onclick="window.location.href='{{ path('app_register1') }}'">Inscription Freelance</button>
{% endif %}
</div>
</div>
{# barre de recherche #}
<div class="search mt-5" style="max-width: 90%;">
<h3>Recherchez vos missions</h3>
<form method="get" class="form-inline d-flex justify-content-center align-items-center">
<input type="text" name="titre" class="form-control mr-2" placeholder="Titre" value="{{ criteria.titre|default('') }}"style="max-width: 175px;">
<input type="text" name="entreprise_concernee" class="form-control mr-2" placeholder="Client" value="{{ criteria.entreprise_concernee|default('') }}"style="max-width: 175px;">
<input type="text" name="ville" class="form-control mr-2" placeholder="Ville" value="{{ criteria.ville|default('') }}" style="max-width: 175px;">
<input type="text" name="duree" class="form-control mr-2" placeholder="Durée (mois)" value="{{ criteria.duree|default('') }}" style="max-width: 175px;">
<input type="number" name="budget_min" class="form-control mr-2" placeholder="Budget min (€)" value="{{ criteria.budget_min|default('') }}" step="0.01" style="max-width: 175px;">
<input type="number" name="budget_max" class="form-control mr-2" placeholder="Budget max (€)" value="{{ criteria.budget_max|default('') }}" step="0.01" style="max-width: 175px;">
<button type="submit" class="btn btn-info mr-2">Rechercher</button>
<button type="reset" class="btn btn-secondary" onclick="window.location.href='{{ path('app_home') }}'">Réinitialiser</button>
</form>
</div>
<div class="mission">
<div class="row">
{% for laMission in lesMissions.items %}
<div class="col-md-4 mb-4">
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center mb-3">
<h5 class="card-title">{{ laMission.titre }}</h5>
<button type="button" class="close" aria-label="Close"></button>
</div>
<div class="d-flex justify-content-between align-items-center mb-2">
<span class="ref">REF: {{ laMission.referencemission }}</span>
</div>
<ul class="list-unstyled mb-3">
<li><span class="client-name">Client : {% if laMission.confidentialite == 1 %}
Confidentiel
{% else %}
{{ laMission.entrepriseconcernee }}
{% endif %}</span></li>
<li><i class="fas fa-map-marker-alt"></i> Lieu : {{ laMission.ville }}</li>
<li class="date-duration"><i class="fas fa-calendar-alt"></i> Début : {{ laMission.datedebut|date('d/m/Y') }}</li>
<li class="date-duration"><i class="fas fa-clock"></i> Durée : {{ laMission.duree }} mois</li>
<li class="date-duration">
<i class="{{ laMission.experiencedmd > 5 ? 'fas fa-user-tie' : (laMission.experiencedmd > 1 ? 'fas fa-user' : 'fas fa-user-graduate') }}"></i> Expérience demandée :
{{ laMission.experiencedmd }} {{ laMission.experiencedmd > 1 ? 'ans' : 'an' }}
</li>
<li class="budget"><i class="fas fa-lock"></i> Budget : {% if laMission.budget == 0 or laMission.budget is null %} Non renseigné {% else %} {{ laMission.budget }} € {% endif %}</li>
</ul>
{% set route =
is_granted('ROLE_SUPERADMIN') or is_granted('ROLE_ADMIN') ? 'app_admin_mission_details' :
(is_granted('ROLE_ENTREPRISE') and laMission.entreprise is not null and laMission.entreprise.id == app.user.id ? 'app_entreprise_mission_details' : 'app_mission_details')
%}
<a class="btn btn-primary btn-block" href="{{ path(route, {'id': laMission.id }) }}">Détails</a>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
<div class="pagination justify-content-center mt-4">
{{ knp_pagination_render(lesMissions, '@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig') }}
</div>
<div class="container1">
<div class="row">
<div class="col-md-6">
<div class="qui-sommes-nous">
<h3>Qui sommes-nous?</h3>
<p class="sub-text">DimaWork est une plateforme d’intermédiation entre entreprises et consultants. Les entreprises ont besoin de compétences particulières et nous proposons des freelances pour répondre à ces besoins.</p>
<button class="btn btn-info" onclick="window.location.href='{{ path('app_accueil') }}'">En savoir plus</button>
</div>
</div>
<div class="col-md-6">
</div>
<div class="row mb-5">
<div class="col-md-6">
</div>
<div class="col-md-6">
<div class="nos-valeurs">
<h3>Nos valeurs</h3>
<p class="sub-text">DimaWork permet aux entreprises de sélectionner parmi une variété de travailleurs indépendants, chacun offrant son expertise particulière. Grâce à cette diversité de possibilités, les entreprises peuvent sélectionner le consultant qui répond le mieux à leurs besoins et à leur culture institutionnelle.</p>
<div class="nos-valeurs-btn">
<button class="btn btn-info" onclick="window.location.href='{{ path('app_accueil') }}'">En savoir plus</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}