diff --git a/assets/controllers/organization_controller.js b/assets/controllers/organization_controller.js index 255793e..6f14baf 100644 --- a/assets/controllers/organization_controller.js +++ b/assets/controllers/organization_controller.js @@ -1,7 +1,7 @@ import {Controller} from '@hotwired/stimulus' // Important: include a build with Ajax + pagination (TabulatorFull is simplest) import {TabulatorFull as Tabulator} from 'tabulator-tables'; -import {eyeIconLink, TABULATOR_FR_LANG} from "../js/global.js"; +import {capitalizeFirstLetter, eyeIconLink, TABULATOR_FR_LANG} from "../js/global.js"; import { Modal } from "bootstrap"; export default class extends Controller { @@ -197,6 +197,7 @@ export default class extends Controller { if (this.currentOrgId) { formData.append('_method', 'PUT'); } + formData.set('name', capitalizeFirstLetter(formData.get('name'))); try { const response = await fetch(url, { diff --git a/assets/controllers/user_controller.js b/assets/controllers/user_controller.js index 864edb6..e98869e 100644 --- a/assets/controllers/user_controller.js +++ b/assets/controllers/user_controller.js @@ -7,7 +7,8 @@ import { eyeIconLink, sendEmailIcon, TABULATOR_FR_LANG, - trashIconForm + trashIconForm, + capitalizeFirstLetter } from "../js/global.js"; import { Modal } from "bootstrap"; import base_controller from "./base_controller.js"; @@ -161,8 +162,8 @@ export default class extends base_controller { return wrapper; }, }, - {title: "Nom", field: "name", headerFilter: "input", widthGrow: 2, vertAlign: "middle"}, - {title: "Prénom", field: "prenom", headerFilter: "input", widthGrow: 2, vertAlign: "middle"}, + {title: "Nom", field: "surname", headerFilter: "input", widthGrow: 2, vertAlign: "middle"}, + {title: "Prénom", field: "name", headerFilter: "input", widthGrow: 2, vertAlign: "middle"}, {title: "Email", field: "email", headerFilter: "input", widthGrow: 3, vertAlign: "middle"}, { title: "Statut", field: "statut", vertAlign: "middle", @@ -301,6 +302,7 @@ export default class extends base_controller { // Add filters if (params.filter) { params.filter.forEach(filter => { + console.log("Adding filter to query:", filter.field, filter.value); queryParams.append(`filter[${filter.field}]`, filter.value); }); } @@ -639,8 +641,8 @@ export default class extends base_controller { return wrapper; }, }, - {title: "Nom", field: "name", headerFilter: "input", widthGrow: 2, vertAlign: "middle"}, - {title: "Prénom", field: "prenom", headerFilter: "input", widthGrow: 2, vertAlign: "middle"}, + {title: "Nom", field: "surname", headerFilter: "input", widthGrow: 2, vertAlign: "middle"}, + {title: "Prénom", field: "name", headerFilter: "input", widthGrow: 2, vertAlign: "middle"}, {title: "Email", field: "email", headerFilter: "input", widthGrow: 3, vertAlign: "middle"}, { title: "Statut", field: "statut", vertAlign: "middle", @@ -1032,6 +1034,7 @@ export default class extends base_controller { const formData = new FormData(form); const ucSurname = formData.get('surname').toUpperCase(); formData.set('surname', ucSurname); + formData.set('name', capitalizeFirstLetter(formData.get('name'))); // Capitalize first letter of name try { const response = await fetch('/user/new/ajax', { // Adjust path if prefix is different @@ -1101,6 +1104,7 @@ export default class extends base_controller { // Force Uppercase on Surname as requested formData.set('surname', formData.get('surname').toUpperCase()); + formData.set('name', capitalizeFirstLetter(formData.get('name'))); // Capitalize first letter of name try { const response = await fetch(`/user/edit/${this.currentUserId}/ajax`, { diff --git a/assets/js/global.js b/assets/js/global.js index 84a0c84..2c3b6a5 100644 --- a/assets/js/global.js +++ b/assets/js/global.js @@ -79,4 +79,8 @@ export function sendEmailIcon(userId, orgId) { return ` ` +} + +export function capitalizeFirstLetter(string) { + return string.charAt(0).toUpperCase() + string.slice(1); } \ No newline at end of file diff --git a/src/Controller/OrganizationController.php b/src/Controller/OrganizationController.php index a8f851d..e1ba3ed 100644 --- a/src/Controller/OrganizationController.php +++ b/src/Controller/OrganizationController.php @@ -107,7 +107,7 @@ class OrganizationController extends AbstractController } $organization->setProjectPrefix($this->organizationsService->generateUniqueProjectPrefix()); - + $organization->setName(ucFirst($organization->getName())); $this->entityManager->persist($organization); $this->entityManager->flush(); @@ -165,6 +165,7 @@ class OrganizationController extends AbstractController if ($logoFile) { $this->organizationsService->handleLogo($organization, $logoFile); } + $organization->setName(ucFirst($organization->getName())); $this->entityManager->persist($organization); $this->entityManager->flush(); $this->actionService->createAction("Edit Organization", $actingUser, $organization, $organization->getName()); diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index e197bf6..e86d7c2 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -531,8 +531,8 @@ class UserController extends AbstractController return [ 'id' => $user->getId(), 'pictureUrl' => $user->getPictureUrl(), - 'name' => $user->getSurname(), - 'prenom' => $user->getName(), + 'surname' => $user->getSurname(), + 'name' => $user->getName(), 'email' => $user->getEmail(), 'isConnected' => $this->userService->isUserConnected($user->getUserIdentifier()), 'showUrl' => $this->generateUrl('user_show', ['id' => $user->getId()]), diff --git a/src/Repository/OrganizationsRepository.php b/src/Repository/OrganizationsRepository.php index 51066d8..a4103ce 100644 --- a/src/Repository/OrganizationsRepository.php +++ b/src/Repository/OrganizationsRepository.php @@ -39,7 +39,7 @@ class OrganizationsRepository extends ServiceEntityRepository // 2. Filters if (!empty($filters['name'])) { $qb->andWhere('o.name LIKE :name') - ->setParameter('name', '%' . strtolower($filters['name']) . '%'); + ->setParameter('name', '%' . ucfirst($filters['name']) . '%'); } if (!empty($filters['email'])) { $qb->andWhere('o.email LIKE :email') diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php index f817d6d..ced8937 100644 --- a/src/Repository/UserRepository.php +++ b/src/Repository/UserRepository.php @@ -45,14 +45,13 @@ class UserRepository extends ServiceEntityRepository implements PasswordUpgrader $qb = $this->createQueryBuilder('u') ->where('u.isDeleted = :del') ->setParameter('del', false); - - if (!empty($filters['name'])) { - $qb->andWhere('u.surname LIKE :name') - ->setParameter('name', '%' . strtolower($filters['name']) . '%'); + if (!empty($filters['surname'])) { + $qb->andWhere('u.surname LIKE :surname') + ->setParameter('surname', '%' . strtoupper($filters['surname']) . '%'); } - if (!empty($filters['prenom'])) { - $qb->andWhere('u.name LIKE :prenom') - ->setParameter('prenom', '%' . strtolower($filters['prenom']) . '%'); + if (!empty($filters['name'])) { + $qb->andWhere('u.name LIKE :name') + ->setParameter('name', '%' . ucFirst($filters['name']) . '%'); } if (!empty($filters['email'])) { $qb->andWhere('u.email LIKE :email') diff --git a/src/Repository/UsersOrganizationsRepository.php b/src/Repository/UsersOrganizationsRepository.php index 4a13edd..806f21b 100644 --- a/src/Repository/UsersOrganizationsRepository.php +++ b/src/Repository/UsersOrganizationsRepository.php @@ -58,13 +58,13 @@ class UsersOrganizationsRepository extends ServiceEntityRepository ->setParameter('org', $org); // Apply filters - if (!empty($filters['name'])) { - $qb->andWhere('u.surname LIKE :name') - ->setParameter('name', '%' . strtolower($filters['name']) . '%'); + if (!empty($filters['surname'])) { + $qb->andWhere('u.surname LIKE :surname') + ->setParameter('surname', '%' . strtoupper($filters['surname']) . '%'); } - if (!empty($filters['prenom'])) { - $qb->andWhere('u.name LIKE :prenom') - ->setParameter('prenom', '%' . strtolower($filters['prenom']) . '%'); + if (!empty($filters['name'])) { + $qb->andWhere('u.name LIKE :name') + ->setParameter('name', '%' . ucFirst($filters['name']) . '%'); } if (!empty($filters['email'])) { $qb->andWhere('u.email LIKE :email') diff --git a/src/Service/UserService.php b/src/Service/UserService.php index efd96b6..364ff43 100644 --- a/src/Service/UserService.php +++ b/src/Service/UserService.php @@ -418,8 +418,8 @@ class UserService } return [ 'pictureUrl' => $user->getPictureUrl(), - 'name' => $user->getSurname(), - 'prenom' => $user->getName(), + 'surname' => $user->getSurname(), + 'name' => $user->getName(), 'email' => $user->getEmail(), 'isConnected' => $this->isUserConnected($user->getUserIdentifier()), 'statut' => $statut,