Skip to content

Commit

Permalink
Fix routing and dashboard company
Browse files Browse the repository at this point in the history
  • Loading branch information
sfulbert committed Jan 10, 2025
2 parents 733b07c + 82ad3a0 commit 688bf4c
Show file tree
Hide file tree
Showing 7 changed files with 509 additions and 325 deletions.
1 change: 1 addition & 0 deletions web_app/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
/.env.*.local
/config/secrets/prod/prod.decrypt.private.php
/public/bundles/
/public/uploads/
/var/
/vendor/
/docker/
Expand Down
1 change: 1 addition & 0 deletions web_app/config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
parameters:
avatars_directory: '%kernel.project_dir%/public/uploads/dev_avatars'

services:
# default configuration for services in *this* file
Expand Down
38 changes: 35 additions & 3 deletions web_app/src/Controller/DeveloperController.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,23 +57,55 @@ public function new(Request $request, EntityManagerInterface $entityManager): Re
#[Route('/profile', name: 'app_developer_profile', methods: ['GET', 'POST'])]
public function profile(Request $request, EntityManagerInterface $entityManager): Response
{
// dd($request);
$developer = $this->getUser()->getDeveloper();
$form = $this->createForm(DeveloperType::class, $developer);
$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
$avatarFile = $form->get('avatar')->getData();
if ($avatarFile) {
$filename = uniqid() . '.' . $avatarFile->guessExtension();

$avatarFile->move(
$this->getParameter('avatars_directory'),
$filename
);
}
// Enregistrer le nom du fichier dans l'entité
$developer->setAvatar($filename);

$entityManager->flush();

return $this->redirectToRoute('app_developer_profile', [], Response::HTTP_SEE_OTHER);
}

return $this->render('developer/profile.html.twig', [

return $this->render('developer/manage/show.html.twig', [
'developer' => $developer,
'form' => $form,
]);
}

// #[Route('/profile', name: 'app_developer_profile', methods: ['GET'])]
// public function profile(Request $request, EntityManagerInterface $entityManager, DeveloperRepository $developerRepository): Response
// {
// // dd($request);
// $developer = $this->getUser()->getDeveloper();
// $form = $this->createForm(DeveloperType::class, $developer);
// $form->handleRequest($request);

// if ($form->isSubmitted() && $form->isValid()) {
// $entityManager->flush();

// return $this->redirectToRoute('app_developer_profile', [], Response::HTTP_SEE_OTHER);
// }

// return $this->render('developer/profile.html.twig', [
// 'developer' => $developer,
// 'form' => $form,
// ]);
// }

#[Route('/{id}/edit', name: 'app_developer_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Developer $developer, EntityManagerInterface $entityManager): Response
{
Expand Down Expand Up @@ -102,4 +134,4 @@ public function delete(Request $request, Developer $developer, EntityManagerInte

return $this->redirectToRoute('app_developer_index', [], Response::HTTP_SEE_OTHER);
}
}
}
14 changes: 12 additions & 2 deletions web_app/src/Form/DeveloperType.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use App\Entity\User;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

Expand All @@ -25,7 +26,16 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
->add('salary')
->add('biography')
->add('location')
->add('avatar')
->add('avatar', FileType::class, [
'label' => 'Avatar (Image file)',
'required' => false,
'mapped' => false, // Le champ n'est pas mappé à une propriété de l'entité
'constraints' => [
new \Symfony\Component\Validator\Constraints\Image([
'maxSize' => '2M',
]),
],
])
// ->add('user', EntityType::class, [
// 'class' => User::class,
// 'choice_label' => 'id',
Expand Down Expand Up @@ -54,4 +64,4 @@ public function configureOptions(OptionsResolver $resolver): void
'data_class' => Developer::class,
]);
}
}
}
7 changes: 4 additions & 3 deletions web_app/templates/developer/manage/_form.html.twig
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{ form_start(form) }}
{{ form_widget(form) }}
<button class="btn">{{ button_label|default('Save') }}</button>
{{ form_end(form) }}
{{ form_widget(form) }}
<button class="btn">{{ button_label|default('Save') }}</button>
{{ form_end(form) }}.

251 changes: 194 additions & 57 deletions web_app/templates/developer/manage/show.html.twig
Original file line number Diff line number Diff line change
@@ -1,58 +1,195 @@
{% extends 'base.html.twig' %}

{% block title %}Developer{% endblock %}

{% block body %}
<h1>Developer</h1>

<table class="table">
<tbody>
<tr>
<th>Id</th>
<td>{{ developer.id }}</td>
</tr>
<tr>
<th>Firstname</th>
<td>{{ developer.firstname }}</td>
</tr>
<tr>
<th>Lastname</th>
<td>{{ developer.lastname }}</td>
</tr>
<tr>
<th>Birthday</th>
<td>{{ developer.birthday ? developer.birthday|date('Y-m-d') : '' }}</td>
</tr>
<tr>
<th>Gender</th>
<td>{{ developer.gender }}</td>
</tr>
<tr>
<th>Experiences</th>
<td>{{ developer.experiences }}</td>
</tr>
<tr>
<th>Salary</th>
<td>{{ developer.salary }}</td>
</tr>
<tr>
<th>Biography</th>
<td>{{ developer.biography }}</td>
</tr>
<tr>
<th>Location</th>
<td>{{ developer.location }}</td>
</tr>
<tr>
<th>Avatar</th>
<td>{{ developer.avatar }}</td>
</tr>
</tbody>
</table>

<a href="{{ path('app_home_index') }}">back to list</a>

<a href="{{ path('app_home_edit', {'id': developer.id}) }}">edit</a>

{{ include('home/_delete_form.html.twig') }}
{% extends 'layouts/app.html.twig' %}


{% block title %}Profil - Developpeur

{% endblock %}

{% block main %}
<main id="main" class="main">

<div class="pagetitle">
<h1>Profil - Développeur</h1>
<nav class="d-flex justify-content-between align-items-center">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item">
<a href="index.html">Home</a>
</li>
<li class="breadcrumb-item">Users</li>
<li class="breadcrumb-item active">Profile</li>
</ol>
</nav>
</div>


<section class="section profile">
<div class="row">
<div class="col-xl-4">

<div class="card">
<div class="card-body profile-card pt-4 d-flex flex-column align-items-center">
{% if developer.avatar %}
<img src="{{ asset('uploads/dev_avatars/' ~ developer.avatar) }}" alt="Avatar" class="rounded-circle"/>
{% endif %}

{# <img src="assets/img/profile-img.jpg" alt="Logo" class="rounded-circle"> #}
<h2>{{developer.firstname}}

</h2>
<h3>Web Designer</h3>
<div class="social-links mt-2">
<a href="#" class="twitter">
<i class="bi bi-twitter"></i>
</a>
<a href="#" class="facebook">
<i class="bi bi-facebook"></i>
</a>
<a href="#" class="instagram">
<i class="bi bi-instagram"></i>
</a>
<a href="#" class="linkedin">
<i class="bi bi-linkedin"></i>
</a>
</div>
</div>
</div>

</div>

<div class="col-xl-8">

<div class="card">
<div
class="card-body pt-3">
<!-- Bordered Tabs -->
<ul class="nav nav-tabs nav-tabs-bordered">

<li class="nav-item">
<button class="nav-link active" data-bs-toggle="tab" data-bs-target="#profile-overview">Vue d'ensemble</button>
</li>

<li class="nav-item">
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#profile-edit">Modification du profil</button>
</li>

<li class="nav-item">
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#profile-change-password">Modification Mot de passe</button>
</li>

</ul>
<div class="tab-content pt-2">

<div class="tab-pane fade show active profile-overview" id="profile-overview">

<h5 class="card-title">Biographie</h5>
<p class="small fst-italic">
{{ developer.biography }}</p>

<h5 class="card-title">Détails du Développeur</h5>

<div class="row">
<div class="col-lg-3 col-md-4 label">Genre</div>
<div class="col-lg-9 col-md-8">
{{ developer.gender }}</div>
</div>

<div class="row">
<div class="col-lg-3 col-md-4 label">Nom</div>
<div class="col-lg-9 col-md-8">
{{ developer.lastname }}</div>
</div>


<div class="row">
<div class="col-lg-3 col-md-4 label">Prénoms</div>
<div class="col-lg-9 col-md-8">{{developer.firstname}}</div>
</div>

<div class="row">
<div class="col-lg-3 col-md-4 label">Date de naissance</div>
<div class="col-lg-9 col-md-8">{{ developer.birthday }}
</div>
</div>

<div class="row">
<div class="col-lg-3 col-md-4 label">Addresse</div>
<div class="col-lg-9 col-md-8">{{ developer.location }}
</div>
</div>

<div class="row">
<div class="col-lg-3 col-md-4 label">Salaire</div>
<div class="col-lg-9 col-md-8">{{ developer.salary }}</div>

</div>

<div class="row">
<div class="col-lg-3 col-md-4 label">Nombre Année d'expériences</div>
<div class="col-lg-9 col-md-8">{{ developer.experiences }}</div>

</div>


</div>


<div class="tab-pane fade profile-edit pt-3" id="profile-edit">

{{ include('developer/manage/_form.html.twig', {'button_label': 'Sauvegarder les modifications'}) }}


</div>


<div
class="tab-pane fade pt-3" id="profile-change-password">
<!-- Change Password Form -->
<form>

<div class="row mb-3">
<label for="currentPassword" class="col-md-4 col-lg-3 col-form-label">Mot de passe actuel</label>
<div class="col-md-8 col-lg-9">
<input name="password" type="password" class="form-control" id="currentPassword">
</div>
</div>

<div class="row mb-3">
<label for="newPassword" class="col-md-4 col-lg-3 col-form-label">Nouveau mot de passe</label>
<div class="col-md-8 col-lg-9">
<input name="newpassword" type="password" class="form-control" id="newPassword">
</div>
</div>

<div class="row mb-3">
<label for="renewPassword" class="col-md-4 col-lg-3 col-form-label">Confirmer mot de passe</label>
<div class="col-md-8 col-lg-9">
<input name="renewpassword" type="password" class="form-control" id="renewPassword">
</div>
</div>

<div class="text-center">
<button type="submit" class="btn btn-primary">Modifier Password</button>
</div>
</form>
<!-- End Change Password Form -->

</div>

</div>
<!-- End Bordered Tabs -->

</div>
</div>

</div>
</div>
</section>


{# <a href="{{ path('app_home_index') }}">back to list</a>
<a href="{{ path('app_home_edit', {'id': developer.id}) }}">edit</a>
{{ include('home/_delete_form.html.twig') }} #}
</main>
{% endblock %}
Loading

0 comments on commit 688bf4c

Please sign in to comment.