Skip to content
Commits on Source (2)
......@@ -194,7 +194,7 @@ public class BootstrapData implements CommandLineRunner {
affectationRepository.save(affectation4);
mission2.getAffectation().add(affectation2);
pilote5.getAffectation().add(affectation2);
pilote1.getAffectation().add(affectation2);
chasseur4.getAffectation().add(affectation2);
mission3.getAffectation().add(affectation1);
......
......@@ -9,6 +9,7 @@ import fr.ldnr.starWars.domains.Mission;
import fr.ldnr.starWars.domains.Pilote;
import fr.ldnr.starWars.enumerations.GradePilote;
import fr.ldnr.starWars.enumerations.StatutMission;
import fr.ldnr.starWars.enumerations.TypeMission;
import fr.ldnr.starWars.enumerations.TypePilote;
import fr.ldnr.starWars.services.MissionService;
import java.util.HashSet;
......@@ -39,22 +40,83 @@ public class Calculs {
totalNbHeure += mission.getNbHeure();
}
}
// return total nbHeure
return totalNbHeure;
}
public int calculNbMission() {
// calcul nb de mission type COMBAT
public int calculNbMissionCombat(Pilote pilote) {
int nbMissionCombat = 0;
Set<Mission> missions = new HashSet<>(); // Create a set to store missions
for (Affectation affectation : pilote.getAffectation()) {
Mission mission = affectation.getMission();
if (mission != null && mission.getType().equals(TypeMission.COMBAT)) {
missions.add(mission);
// recuperate nbHeure
nbMissionCombat++;
}
}
return nbMissionCombat;
}
// calcul nb de mission type ALL
public int calculTotalNbMission(Pilote pilote) {
int totalNbMission = 0;
Set<Mission> missions = new HashSet<>(); // Create a set to store missions
for (Affectation affectation : pilote.getAffectation()) {
Mission mission = affectation.getMission();
if (mission != null) {
missions.add(mission);
// recuperate nbHeure
totalNbMission++;
}
}
return totalNbMission;
}
public GradePilote updateGradePilote() {
// update Grade Pilote :
// Officier < 500 heures
// Lieutenant >= 500
// Capitaine 501 - 1500 + 1 Mission COMBAT
// Major 1500-3999 + 3 TOTAL Mission
// Commandant >=4000 + 10 TOTAL Mission
public GradePilote checkGradePilote(int nbHeures, int totalNbMission, int totalNbMissionCombat) {
// Officier: Less than 500 hours
if (nbHeures < 500) {
return GradePilote.OFFICIER;
}
// Lieutenant: 500 hours or more
if (nbHeures >= 500) {
return GradePilote.LIEUTENANT;
}
// Capitaine: Between 501 and 1500 hours with at least 1 Mission COMBAT
if (nbHeures > 500 && nbHeures <= 1500 && totalNbMissionCombat >= 1) {
return GradePilote.CAPITAINE;
}
// Major: Between 1500 and 3999 hours with at least 3 TOTAL Missions and 1 Mission COMBAT
if (nbHeures >= 1500 && nbHeures <= 3999 && totalNbMission >= 3 && totalNbMissionCombat >= 1) {
return GradePilote.MAJOR;
}
// Commandant: 4000 hours or more with at least 3 TOTAL Missions and 1 Mission COMBAT
if (nbHeures >= 4000 && totalNbMission >= 3 && totalNbMissionCombat >= 1) {
return GradePilote.COMMANDANT;
}
public TypePilote updateTypePilote() {
// No matching conditions, return null to indicate no grade assigned
return null;
}
// update Type Pilote. Apprenti < 100 heures. Combattant >= 100 heures.
public TypePilote checkTypePilote(int nbHeures) {
if (nbHeures < 100) {
return TypePilote.APPRENTI;
}
return TypePilote.COMBATTANT;
}
}
......@@ -5,12 +5,17 @@
package fr.ldnr.starWars.controllers;
import fr.ldnr.starWars.calculs.Calculs;
import fr.ldnr.starWars.domains.Affectation;
import fr.ldnr.starWars.domains.Mission;
import fr.ldnr.starWars.domains.Pilote;
import fr.ldnr.starWars.enumerations.GradePilote;
import fr.ldnr.starWars.enumerations.ResultatMission;
import fr.ldnr.starWars.enumerations.StatutMission;
import fr.ldnr.starWars.enumerations.TypePilote;
import fr.ldnr.starWars.services.MissionService;
import fr.ldnr.starWars.services.PiloteService;
import java.util.HashSet;
import java.util.Set;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -58,16 +63,48 @@ public class ClotureMission {
// persister missionRecupere dans la db
missionService.save(missionRecupere);
// boucle tous les pilotes dans la Mission
Set<Pilote> pilotes = new HashSet<>(); // Create a set to store pilotes in the Mission
for (Affectation affectation : missionRecupere.getAffectation()) {
Pilote pilote = affectation.getPilote();
if (pilote != null) {
pilotes.add(pilote);
}
}
for (Pilote pilote : pilotes) {
// ---------- DÉBUT CALCUL NB HEURE ET PUIS UPDATE GRADE OU TYPE
//calculNbHeure
Calculs calculs = new Calculs(missionService);
Pilote pilote = piloteService.findById(5);
// Pilote pilote = piloteService.findById(5); // DON'T DELETE THIS PLEASE !!!
int nbHeure = calculs.calculNbHeure(pilote);
System.out.println("CHECK nbHeure : " + nbHeure);
return "clotureMission";
}
public void updateGradePilote() {
// test calculNbHeure
//calcul nb de mission de combat
int nbMissionCombat = calculs.calculNbMissionCombat(pilote);
System.out.println("nbMissionCombat : " + nbMissionCombat);
// test calculNbHeure
//calcul total nb de mission
int totalNbMission = calculs.calculTotalNbMission(pilote);
System.out.println("totalNbMission : " + totalNbMission);
// update Grade de pilote
GradePilote newGrade = calculs.checkGradePilote(nbHeure, totalNbMission, nbMissionCombat);
pilote.setGrade(newGrade);
System.out.println("newGrade : " + newGrade);
// update Type de pilote
TypePilote newType = calculs.checkTypePilote(nbHeure);
pilote.setType(newType);
System.out.println("newType : " + newType);
// then update to db
piloteService.save(pilote);
// ---------- FIN CALCUL NB HEURE ET PUIS UPDATE GRADE OU TYPE
}
return "clotureMission";
}
}
......@@ -8,45 +8,33 @@ Click nbfs://nbhost/SystemFileSystem/Templates/Other/html.html to edit this temp
<title>cloture mission</title>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/style.css">
<link href="https://fonts.cdnfonts.com/css/star-wars" rel="stylesheet">
<style>
@import url('https://fonts.cdnfonts.com/css/star-wars');
</style>
<link rel="stylesheet" href="/style.css"/>
</head>
<body>
<header>
<h1><span class='faulty-letter'>{</span> Cloture mission</h1>
<h1><span class='faulty-letter'>{</span> Cloture Mission</h1>
</header>
<main>
<form action="clotureMission" method="post">
<div>
<form class='mission' action="/clotureMission" method="post">
<div class='box'>
<label for="missions">Choisir une mission :</label>
<select id="missions" name="missions">
<option th:each="mission : ${missions}" th:value="${mission.idMission}" th:text="${mission.titre}"></option>
</select>
</div>
<div>
<label for="clotureMission">Nombre d'heures</label>
<label for="clotureMission">Nombre d'heure</label>
<input type="text" id="heures" name="heures"/>
</div>
<div>
<label for="resultat">Resultat mission : </label>
<label for="resultat">Resultat Mission : </label>
<select id="resultat" name="resultats">
<option th:each="resultat : ${resultatMission}" th:value="${resultat}" th:text="${resultat}"></option>
</select>
</div>
<div>
<label>detail</label>
<div>
<label for="pilote">Pilote</label>
<select id="pilote" name="pilote">
<option th:each="pilote : ${etatPilote}" th:value="${etatPilote}" th:text="${etatPilote}"></option>
</select>
<label for="chasseur">Chasseur</label>
<select id="chasseur" name="chasseur">
<option th:each="chasseur : ${etatChasseur}" th:value="${etatChasseur}" th:text="${etatChasseur}"></option>
</select>
</div>
</div>
</div>
<input type="submit" value="Submit"/>
<input type="reset" value="Annuler"/>
</form>
</main>
<footer>
<a href="/menu" class="menu">Retour au Menu</a>
</footer>
......