Skip to content

Commit

Permalink
Merge pull request #7 from fsossa/dev
Browse files Browse the repository at this point in the history
Dev v0.2 to main
  • Loading branch information
fsossa authored Jan 11, 2025
2 parents c4af95c + 628affc commit dbe10d3
Show file tree
Hide file tree
Showing 5 changed files with 190 additions and 2 deletions.
48 changes: 47 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,47 @@
AdopteUnDev
# AdopteUnDev

Bienvenue sur le projet **AdopteUnDev** ! Ce projet vise à connecter les développeurs et les entreprises en utilisant des fonctionnalités de matching similaires à celles des sites de rencontres.

## Equipe:
### I. Fulbert SOSSA
### II. Monel GAFFAN
### III. Marlène GOHI
### IV. Rokia COULIBALY

---

## Installation avec Docker

### 1. Prérequis
- Docker
- Docker Compose

### 2. Étapes d'installation

1. **Clonez le projet :**
Clonez le dépôt sur votre machine locale et accédez au dossier.
```bash
git clone https://github.com/fsossa/AdopteUnDev.git
cd AdopteUnDev

Configurez les variables d'environnement :
Créez un fichier .env.local et configurez la connexion à la base de données :
DATABASE_URL=postgresql://username:password@db:5432/adopteundev
Lancez les conteneurs avec Docker Compose :
Cela démarrera les services nécessaires à l'application.

docker-compose up -d

Installez les dépendances PHP :
Exécutez Composer dans le conteneur pour installer les bibliothèques nécessaires.

docker-compose exec app composer install

Appliquez les migrations :
Configurez la base de données en appliquant les migrations.

docker-compose exec app php bin/console doctrine:migrations:migrate

Accédez à l'application :
Ouvrez votre navigateur et rendez-vous sur http://localhost:8000.
47 changes: 47 additions & 0 deletions web_app/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,48 @@
# AdopteUnDev

Bienvenue sur le projet **AdopteUnDev** ! Ce projet vise à connecter les développeurs et les entreprises en utilisant des fonctionnalités de matching similaires à celles des sites de rencontres.

## Equipe:
### I. Fulbert SOSSA
### II. Monel GAFFAN
### III. Marlène GOHI
### IV. Rokia COULIBALY

---

## Installation avec Docker

### 1. Prérequis
- Docker
- Docker Compose

### 2. Étapes d'installation

1. **Clonez le projet :**
Clonez le dépôt sur votre machine locale et accédez au dossier.
```bash
git clone https://github.com/fsossa/AdopteUnDev.git
cd AdopteUnDev

Configurez les variables d'environnement :
Créez un fichier .env.local et configurez la connexion à la base de données :
DATABASE_URL=postgresql://username:password@db:5432/adopteundev
Lancez les conteneurs avec Docker Compose :
Cela démarrera les services nécessaires à l'application.

docker-compose up -d

Installez les dépendances PHP :
Exécutez Composer dans le conteneur pour installer les bibliothèques nécessaires.

docker-compose exec app composer install

Appliquez les migrations :
Configurez la base de données en appliquant les migrations.

docker-compose exec app php bin/console doctrine:migrations:migrate

Accédez à l'application :
Ouvrez votre navigateur et rendez-vous sur http://localhost:8000.
2 changes: 1 addition & 1 deletion web_app/migrations/Version20250107220547.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ final class Version20250107220547 extends AbstractMigration
{
public function getDescription(): string
{
return '';
return 'Ajout de 40 nouvelles compétences avec descriptions dans la table Skill';
}

public function up(Schema $schema): void
Expand Down
32 changes: 32 additions & 0 deletions web_app/src/Controller/MatchController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

namespace App\Controller;

use App\Entity\Developer;
use App\Repository\DeveloperRepository;
use App\Repository\PosteRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class MatchController extends AbstractController
{
#[Route('/match/{developerId}', name: 'match_postes')]
public function matchPostes(int $developerId, DeveloperRepository $developerRepository, PosteRepository $posteRepository): Response
{
// Récupérer le développeur
$developer = $developerRepository->find($developerId);

if (!$developer) {
throw $this->createNotFoundException('Développeur non trouvé.');
}

// Récupérer les postes correspondants
$matches = $posteRepository->matchPostes($developer);

return $this->render('match/list.html.twig', [
'developer' => $developer,
'matches' => $matches,
]);
}
}
63 changes: 63 additions & 0 deletions web_app/templates/match/list.html.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{% extends 'base.html.twig' %}

{% block title %}Match de Postes{% endblock %}

{% block body %}
<div class="container mt-4">
<h1>Postes correspondant aux compétences de {{ developer.firstname }} {{ developer.lastname }}</h1>

{% for message in app.flashes('success') %}
<div class="alert alert-success">{{ message }}</div>
{% endfor %}
{% for message in app.flashes('warning') %}
<div class="alert alert-warning">{{ message }}</div>
{% endfor %}

{% if matches is empty %}
<p>Aucun poste correspondant trouvé.</p>
{% else %}
<div class="row">
{% for match in matches %}
<div class="col-md-4 mb-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ match.poste.title }}</h5>
<p class="card-text">{{ match.poste.description }}</p>
<p><strong>Lieu :</strong> {{ match.poste.location }}</p>
<p><strong>Expérience requise :</strong> {{ match.poste.experiences }} années</p>
<p><strong>Salaire :</strong> {{ match.poste.minSalary ? match.poste.minSalary ~ ' - ' ~ match.poste.maxSalary : 'N/A' }}</p>
<p><strong>Compétences requises :</strong>
{% for skill in match.poste.skills %}
{{ skill.name }}{% if not loop.last %}, {% endif %}
{% endfor %}
</p>
<p><strong>Score de correspondance :</strong> {{ match.percentage|number_format(2) }}%</p>

{# Vérifier si le poste est déjà favori #}
{% set is_fav = false %}
{% for fav in developer.developerFavPostes %}
{% if fav.poste.id == match.poste.id %}
{% set is_fav = true %}
{% break %}
{% endif %}
{% endfor %}

{% if is_fav %}
{# Bouton pour supprimer des favoris #}
<form action="{{ path('favourite_remove', {'developerId': developer.id, 'posteId': match.poste.id}) }}" method="POST" style="display:inline;">
<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Êtes-vous sûr de vouloir supprimer ce favori ?');">Supprimer des favoris</button>
</form>
{% else %}
{# Bouton pour ajouter aux favoris #}
<form action="{{ path('favourite_add', {'developerId': developer.id, 'posteId': match.poste.id}) }}" method="POST" style="display:inline;">
<button type="submit" class="btn btn-primary btn-sm">Ajouter aux favoris</button>
</form>
{% endif %}
</div>
</div>
</div>
{% endfor %}
</div>
{% endif %}
</div>
{% endblock %}

0 comments on commit dbe10d3

Please sign in to comment.