patch projet finish v2 + translate

This commit is contained in:
jleroy
2024-05-02 16:29:01 +02:00
parent d61797ba02
commit 8eedcc35db
8 changed files with 60 additions and 23 deletions

View File

@@ -198,10 +198,13 @@ public class ArticleController {
LocalDate dateFinEnch = LocalDate.parse(dateFin); LocalDate dateFinEnch = LocalDate.parse(dateFin);
LocalDate datePlusUnJour = LocalDate.now().plusDays(1); LocalDate datePlusUnJour = LocalDate.now().plusDays(1);
if (dateFinEnch.isBefore(datePlusUnJour)) { if (dateFinEnch.isBefore(datePlusUnJour)) {
redirectAttributes.addAttribute("erreur", "La date de début d'enchère ne peux pas être infàrieur à la date du jour + 1."); redirectAttributes.addAttribute("erreur", "La date de début d'enchère ne peux pas être infèrieur à la date du jour + 1.");
return "redirect:/article/new";
}
if (dateFinEnch.isBefore(dateDebutEnch) || dateFinEnch.isEqual(dateDebutEnch)){
redirectAttributes.addAttribute("erreur", "La date de fin d'enchère ne peux pas être infèrieur ou égal à la date de début d'enchère.");
return "redirect:/article/new"; return "redirect:/article/new";
} }
//Vérification rue //Vérification rue
if (!Pattern.matches("^[a-zA-Z0-9 ]+$", retrait.getRue())){ if (!Pattern.matches("^[a-zA-Z0-9 ]+$", retrait.getRue())){
redirectAttributes.addAttribute("erreur", "Le rue n'est pas valide."); redirectAttributes.addAttribute("erreur", "Le rue n'est pas valide.");

View File

@@ -99,14 +99,15 @@ public class EnchereController {
.max(Comparator.comparing(Enchere::getMontantEnchere)) // Comparaison basée sur le montant d'enchère .max(Comparator.comparing(Enchere::getMontantEnchere)) // Comparaison basée sur le montant d'enchère
.map(Enchere::getPseudoUtilisateur); .map(Enchere::getPseudoUtilisateur);
UserProfil user = this.userService.utilisateurByName(pseudoMaxEnchere.get()); UserProfil user = this.userService.utilisateurByName(pseudoMaxEnchere.get());
//Get seller
Article articleSell = articleService.findArticleById(id);
UserProfil userSeller = userService.utilisateurById(articleSell.getUtilisateur());
Optional<Float> maxMontantEnchere = listEncheres.stream() Optional<Float> maxMontantEnchere = listEncheres.stream()
.map(Enchere::getMontantEnchere) // Récupère seulement les montants d'enchère .map(Enchere::getMontantEnchere) // Récupère seulement les montants d'enchère
.max(Float::compareTo); .max(Float::compareTo);
//setCredit user. //setCredit user.
float userCredit = user.getCredit(); float newCredit = user.getCredit() - maxMontantEnchere.get();
float newCredit = userCredit - maxMontantEnchere.get();
this.userService.setCredit(newCredit, user.getId()); this.userService.setCredit(newCredit, user.getId());
//Delete enchere //Delete enchere
@@ -116,6 +117,11 @@ public class EnchereController {
//Delete article //Delete article
this.articleService.setSellPrice(id, maxMontantEnchere.get()); this.articleService.setSellPrice(id, maxMontantEnchere.get());
//Crédit selleur
float sellerCredit = userSeller.getCredit() + maxMontantEnchere.get();
this.userService.setCredit(sellerCredit, userSeller.getId());
return "redirect:/enchere"; return "redirect:/enchere";
} }

View File

@@ -31,6 +31,7 @@ home.article.end = End of auction:
footer.desc = Created by the association "Objects are our friends", ENI-Auctions aims to help its members sell or buy objects of all kinds. footer.desc = Created by the association "Objects are our friends", ENI-Auctions aims to help its members sell or buy objects of all kinds.
profil.title = My Profile profil.title = My Profile
profil.title.other = User profile
profil.button = Edit profil.button = Edit
profil.pseudo = Username: profil.pseudo = Username:
profil.surname = First name: profil.surname = First name:
@@ -40,6 +41,7 @@ profil.phone = Phone:
profil.street = Street: profil.street = Street:
profil.postal = Postal code: profil.postal = Postal code:
profil.city = City: profil.city = City:
profil.address = Address:
profil.credit = Credits: profil.credit = Credits:
edit.profil.currentpassword = Current password: edit.profil.currentpassword = Current password:
@@ -87,6 +89,12 @@ admin.users.table.firstname = First name
admin.users.table.email = Email admin.users.table.email = Email
admin.users.table.disable = Disable admin.users.table.disable = Disable
admin.users.table.delete = Delete admin.users.table.delete = Delete
admin.users.bouton.save = Save
admin.users.bouton.isDisabled = Enabled
admin.users.bouton.disabled = Disabled
admin.users.bouton.delete = Delete
admin.users.bouton.isAdmin = Remove admin
admin.users.bouton.Admin = Add admin
article.add.title = Add an article article.add.title = Add an article
article.add.heading = New sale article.add.heading = New sale
@@ -124,3 +132,9 @@ edit.article.title = Edit my article
edit.article.update = Edit edit.article.update = Edit
edit.article.back = Back edit.article.back = Back
edit.article.delete = Cancel my article edit.article.delete = Cancel my article
bank.creditNumber = Credit number
bank.cardNumber = Card number
bank.cardExpired = Expiration date
bank.cardTitulaire = Name of the card holder
bank.payer = Pay

View File

@@ -32,6 +32,7 @@ footer.desc = Cr\u00e9\u00e9e par l'association "Les objets sont nos amis", ENI-
footer. footer.
profil.title = Mon profile profil.title = Mon profile
profil.title.other = Profil de l'utilisateur
profil.button = Modifier profil.button = Modifier
profil.pseudo = Pseudo: profil.pseudo = Pseudo:
profil.surname = Pr\u00e9nom: profil.surname = Pr\u00e9nom:
@@ -41,6 +42,7 @@ profil.phone = T\u00e9l\u00e9phone:
profil.street = Rue: profil.street = Rue:
profil.postal = Code postal: profil.postal = Code postal:
profil.city = Ville: profil.city = Ville:
profil.address = Adresse:
profil.credit = Cr\u00e9dits: profil.credit = Cr\u00e9dits:
edit.profil.currentpassword = Mot de passe actuel: edit.profil.currentpassword = Mot de passe actuel:
@@ -89,6 +91,12 @@ admin.users.table.firstname = Pr\u00E9nom
admin.users.table.email = Email admin.users.table.email = Email
admin.users.table.disable = D\u00E9sactiver admin.users.table.disable = D\u00E9sactiver
admin.users.table.delete = Supprimer admin.users.table.delete = Supprimer
admin.users.bouton.save = save
admin.users.bouton.isDisabled = Activer
admin.users.bouton.disabled = D\u00E9sactiver
admin.users.bouton.delete = Supprimer
admin.users.bouton.isAdmin = Retirer Admin
admin.users.bouton.Admin = Ajouter admin
article.add.title = Ajouter un article article.add.title = Ajouter un article
article.add.heading = Nouvelle vente article.add.heading = Nouvelle vente
@@ -127,3 +135,9 @@ edit.article.title = Modifier mon article
edit.article.update = Modifier edit.article.update = Modifier
edit.article.back = Retour edit.article.back = Retour
edit.article.delete = Annuler vente edit.article.delete = Annuler vente
bank.creditNumber = Nombre de cr\u00E9dits
bank.cardNumber = Num\u00E9ro de carte
bank.cardExpired = date d'expiration
bank.cardTitulaire = Nom du titulaire de la carte
bank.payer = Payer

View File

@@ -62,23 +62,23 @@
<form th:action="@{/admin/update/credit}" method="post"> <form th:action="@{/admin/update/credit}" method="post">
<input type="number" name="newCredit" id="newCredit" th:value="${user.credit}" class="form-control"> <input type="number" name="newCredit" id="newCredit" th:value="${user.credit}" class="form-control">
<input type="hidden" name="idUser" id="idUser" th:value="${user.id}"> <input type="hidden" name="idUser" id="idUser" th:value="${user.id}">
<button type="submit" class="btn btn-primary mt-2">Sauvegarder</button> <button type="submit" class="btn btn-primary mt-2" th:text="#{admin.users.bouton.save}"></button>
</form> </form>
</td> </td>
<td> <td>
<form th:action="@{/admin/disabled}" method="post"> <form th:action="@{/admin/disabled}" method="post">
<input type="hidden" name="userDisabled" id="userDisabled" th:value="${user.id}"> <input type="hidden" name="userDisabled" id="userDisabled" th:value="${user.id}">
<input type="hidden" name="isDis" id="isDis" th:value="${user.isDisabled}"> <input type="hidden" name="isDis" id="isDis" th:value="${user.isDisabled}">
<button type="submit" th:text="${user.isDisabled} ? 'Activer' : 'Désactiver'" class="btn btn-secondary mt-2"></button> <button type="submit" th:text="${user.isDisabled} ? #{admin.users.bouton.isDisabled} : #{admin.users.bouton.disabled}" class="btn btn-secondary mt-2"></button>
</form> </form>
<form th:action="@{/admin/delete}" method="post"> <form th:action="@{/admin/delete}" method="post">
<input type="hidden" name="userDelete" id="userDelete" th:value="${user.id}"> <input type="hidden" name="userDelete" id="userDelete" th:value="${user.id}">
<button type="submit" class="btn btn-danger mt-2">Supprimer</button> <button type="submit" class="btn btn-danger mt-2" th:text="#{admin.users.bouton.delete}"></button>
</form> </form>
<form th:action="@{/admin/administrateur}" method="post"> <form th:action="@{/admin/administrateur}" method="post">
<input type="hidden" name="userAdmin" id="userAdmin" th:value="${user.id}"> <input type="hidden" name="userAdmin" id="userAdmin" th:value="${user.id}">
<input type="hidden" name="isAdmin" id="isAdmin" th:value="${user.admin}"> <input type="hidden" name="isAdmin" id="isAdmin" th:value="${user.admin}">
<button type="submit" th:text="${user.admin} ? 'Retirer admin' : 'Ajouter admin'" class="btn btn-info mt-2"></button> <button type="submit" th:text="${user.admin} ? #{admin.users.bouton.isAdmin} : #{admin.users.bouton.Admin}" class="btn btn-info mt-2"></button>
</form> </form>
</td> </td>
</tr> </tr>

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html th:replace="~{modele-page :: layout('${articleDetailsTitle}',~{::link} , ~{::#container-main})}" xmlns:th="http://www.thymeleaf.org"> <html th:replace="~{modele-page :: layout(${article.nom},~{::link} , ~{::#container-main})}" xmlns:th="http://www.thymeleaf.org">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
</head> </head>

View File

@@ -10,7 +10,7 @@
<div class="col-md-8"> <div class="col-md-8">
<form th:action="@{/bank/checkout}" method="post" th:object="${bank}" class="needs-validation" novalidate> <form th:action="@{/bank/checkout}" method="post" th:object="${bank}" class="needs-validation" novalidate>
<div class="mb-3"> <div class="mb-3">
<label for="cartAmount" class="form-label">Nombre de crédits:</label> <label for="cartAmount" class="form-label" th:text="#{bank.creditNumber}"></label>
<input type="number" class="form-control" th:field="*{cartAmount}" id="cartAmount" step="0.01" max="2000000" required/> <input type="number" class="form-control" th:field="*{cartAmount}" id="cartAmount" step="0.01" max="2000000" required/>
<div class="is-invalid text-danger" th:if="${#fields.hasErrors('cartAmount')}"> <div class="is-invalid text-danger" th:if="${#fields.hasErrors('cartAmount')}">
<ul> <ul>
@@ -19,7 +19,7 @@
</div> </div>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label for="cartNumber" class="form-label">Numéro de carte:</label> <label for="cartNumber" class="form-label" th:text="#{bank.cardNumber}"></label>
<input type="text" class="form-control" th:field="*{cartNumber}" id="cartNumber" pattern="[0-9]{16}" maxlength="16" placeholder="1234 5678 9012 3456" required/> <input type="text" class="form-control" th:field="*{cartNumber}" id="cartNumber" pattern="[0-9]{16}" maxlength="16" placeholder="1234 5678 9012 3456" required/>
<div class="is-invalid text-danger" th:if="${#fields.hasErrors('cartNumber')}"> <div class="is-invalid text-danger" th:if="${#fields.hasErrors('cartNumber')}">
<ul> <ul>
@@ -28,7 +28,7 @@
</div> </div>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label for="cartExpired" class="form-label">Date d'expiration:</label> <label for="cartExpired" class="form-label" th:text="#{bank.cardExpired}"></label>
<input type="text" class="form-control" th:field="*{cartExpired}" id="cartExpired" pattern="(0[1-9]|1[0-2])\/[0-9]{4}" placeholder="MM/YYYY" required/> <input type="text" class="form-control" th:field="*{cartExpired}" id="cartExpired" pattern="(0[1-9]|1[0-2])\/[0-9]{4}" placeholder="MM/YYYY" required/>
<div class="is-invalid text-danger" th:if="${#fields.hasErrors('cartExpired')}"> <div class="is-invalid text-danger" th:if="${#fields.hasErrors('cartExpired')}">
<ul> <ul>
@@ -46,7 +46,7 @@
</div> </div>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label for="cartName" class="form-label">Nom du titulaire de la carte:</label> <label for="cartName" class="form-label" th:text="#{bank.cardTitulaire}"></label>
<input type="text" class="form-control" th:field="*{cartName}" id="cartName" required/> <input type="text" class="form-control" th:field="*{cartName}" id="cartName" required/>
<div class="is-invalid text-danger" th:if="${#fields.hasErrors('cartName')}"> <div class="is-invalid text-danger" th:if="${#fields.hasErrors('cartName')}">
<ul> <ul>
@@ -54,7 +54,7 @@
</ul> </ul>
</div> </div>
</div> </div>
<button type="submit" class="btn btn-primary w-100">Payer</button> <button type="submit" class="btn btn-primary w-100" th:text="#{bank.payer}"></button>
</form> </form>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">

View File

@@ -9,16 +9,16 @@
<div class="col-md-8"> <div class="col-md-8">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h2 class="text-center">Profil de l'utilisateur</h2> <h2 class="text-center" th:text="#{profil.title.other}"></h2>
</div> </div>
<div class="card-body"> <div class="card-body">
<ul class="list-group"> <ul class="list-group">
<li class="list-group-item"><strong>Pseudo:</strong> <span th:text="${userProfil.pseudo}"></span></li> <li class="list-group-item"><strong th:text="#{profil.pseudo}"></strong> <span th:text="${userProfil.pseudo}"></span></li>
<li class="list-group-item"><strong>Nom:</strong> <span th:text="${userProfil.nom}"></span></li> <li class="list-group-item"><strong th:text="#{profil.name}">Nom:</strong> <span th:text="${userProfil.nom}"></span></li>
<li class="list-group-item"><strong>Prénom:</strong> <span th:text="${userProfil.prenom}"></span></li> <li class="list-group-item"><strong th:text="#{profil.surname}">Prénom:</strong> <span th:text="${userProfil.prenom}"></span></li>
<li class="list-group-item"><strong>Email:</strong> <span th:text="${userProfil.email}"></span></li> <li class="list-group-item"><strong th:text="#{profil.email}">Email:</strong> <span th:text="${userProfil.email}"></span></li>
<li class="list-group-item"><strong>Téléphone:</strong> <span th:text="${userProfil.telephone}"></span></li> <li class="list-group-item"><strong th:text="#{profil.phone}">Téléphone:</strong> <span th:text="${userProfil.telephone}"></span></li>
<li class="list-group-item"><strong>Adresse:</strong> <span th:text="${userProfil.rue} + ' ' + ${userProfil.code_postal} + ' ' + ${userProfil.ville}"></span></li> <li class="list-group-item"><strong th:text="#{profil.address}">Adresse:</strong> <span th:text="${userProfil.rue} + ' ' + ${userProfil.code_postal} + ' ' + ${userProfil.ville}"></span></li>
</ul> </ul>
</div> </div>
</div> </div>