feat: switch to a service layer architecture
All checks were successful
Format / formatting (push) Successful in 6s
CI / build (push) Successful in 11s

This commit is contained in:
Pierre Tellier 2025-02-18 22:15:14 +01:00
parent 11ab5e1dc4
commit 04a73073c1
42 changed files with 1295 additions and 1146 deletions

View File

@ -1,40 +0,0 @@
package enseirb.myinpulse.api;
import enseirb.myinpulse.postgres_db.controller.ComptesRendusController;
import enseirb.myinpulse.postgres_db.model.ComptesRendus;
import enseirb.myinpulse.postgres_db.repository.ComptesRendusRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.management.relation.RoleNotFoundException;
@SpringBootApplication
@RestController
public class GetUserInfo {
@GetMapping("/unauth/random")
public boolean rand(@RequestHeader("Authorization") String token) throws RoleNotFoundException {
System.err.println(token);
return Math.random() > 0.5;
}
@GetMapping("/admin/random")
public boolean rand2() {
return Math.random() > 0.5;
}
@GetMapping("/entrepreneur/random")
public boolean rand3() {
return Math.random() > 0.5;
}
@Autowired
@GetMapping("/unauth/dev")
public ComptesRendus testApi(ComptesRendusRepository repository) {
ComptesRendusController comptesRendusController = new ComptesRendusController(repository);
return comptesRendusController.getComptesRendusById((long) 1);
}
}

View File

@ -2,7 +2,7 @@
* Source: https://github.com/ChristianHuff-DEV/secure-spring-rest-api-using-keycloak/blob/main/src/main/java/io/betweendata/RestApi/security/oauth2/KeycloakJwtRolesConverter.java * Source: https://github.com/ChristianHuff-DEV/secure-spring-rest-api-using-keycloak/blob/main/src/main/java/io/betweendata/RestApi/security/oauth2/KeycloakJwtRolesConverter.java
* edited by Pierre Tellier * edited by Pierre Tellier
*/ */
package enseirb.myinpulse.security; package enseirb.myinpulse.config;
import static java.util.stream.Collectors.toSet; import static java.util.stream.Collectors.toSet;

View File

@ -2,8 +2,6 @@ package enseirb.myinpulse.config;
import static org.springframework.security.authorization.AuthorityAuthorizationManager.hasRole; import static org.springframework.security.authorization.AuthorityAuthorizationManager.hasRole;
import enseirb.myinpulse.security.KeycloakJwtRolesConverter;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -58,9 +56,9 @@ public class WebSecurityCustomConfiguration {
http.authorizeHttpRequests( http.authorizeHttpRequests(
authorize -> authorize ->
authorize authorize
.requestMatchers("/entrepreneur/**") .requestMatchers("/entrepreneur/**", "/shared/**")
.access(hasRole("REALM_MyINPulse-entrepreneur")) .access(hasRole("REALM_MyINPulse-entrepreneur"))
.requestMatchers("/admin/**") .requestMatchers("/admin/**", "/shared/**")
.access(hasRole("REALM_MyINPulse-admin")) .access(hasRole("REALM_MyINPulse-admin"))
.requestMatchers("/unauth/**") .requestMatchers("/unauth/**")
.permitAll() .permitAll()

View File

@ -1,9 +1,9 @@
package enseirb.myinpulse.api; package enseirb.myinpulse.controller;
import enseirb.myinpulse.api.datatypes.Project; import enseirb.myinpulse.model.*;
import enseirb.myinpulse.api.datatypes.ProjectDecision; import enseirb.myinpulse.service.AdminApiService;
import enseirb.myinpulse.api.datatypes.Report; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -11,52 +11,65 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
public class AdminApi { public class AdminApi {
private final AdminApiService adminApiService;
@Autowired
AdminApi(AdminApiService adminApiService) {
this.adminApiService = adminApiService;
}
/** /**
* TODO * TODO: description
* *
* @return a list of all project managed by the current admin user * @return a list of all project managed by the current admin user
*/ */
@GetMapping("/admin/projects") @GetMapping("/admin/projects")
public void getProjects() {} public Iterable<Administrateurs> getProjects() {
return adminApiService.getProjects();
}
/** /**
* TODO: Why in admin instead of shared ? * TODO: Why in admin instead of shared ? + desc
* *
* @return a list of upcoming appointments for the current user * @return a list of upcoming appointments for the current user
*/ */
@GetMapping("/admin/appointments/upcoming") @GetMapping("/admin/appointments/upcoming")
public void getUpcomingAppointments() {} public Iterable<Appointment> getUpcomingAppointments() {
return adminApiService.getUpcomingAppointments();
}
/** /**
* TODO * TODO: description
* *
* @return a list of current unvalidated projects, waiting to be accepted * @return a list of current unvalidated projects, waiting to be accepted
*/ */
@GetMapping("/admin/projects/pending") @GetMapping("/admin/projects/pending")
public void getPendingProjects() {} public Iterable<Project> getPendingProjects() {
return adminApiService.getPendingProjects();
}
/** /**
* TODO * Endpoint used to make a decision about a project.
*
* <p>Endpoint used to make a decision about a project.
* *
* @return the status code of the request * @return the status code of the request
*/ */
@PostMapping("/admin/projects/decision") @PostMapping("/admin/projects/decision")
public void validateProject(@RequestBody ProjectDecision decision) {} public void validateProject(@RequestBody ProjectDecision decision) {
adminApiService.validateProject(decision);
}
/** /**
* TODO * Endpoint used to manually add a project by an admin
*
* <p>Endpoint used to manually add a project by an admin
* *
* @return the status code of the request * @return the status code of the request
*/ */
@PostMapping("/admin/project/add") @PostMapping("/admin/project/add")
public void addNewProject(@RequestBody Project project) {} public void addNewProject(@RequestBody Project project) {
adminApiService.addNewProject(project);
}
/** /**
* TODO: shouldn't it be an UPDATE request ? * TODO: shouldn't it be an PUT request ? / What is the rerun type
* *
* <p>Endpoint used to add a new report to an appointment * <p>Endpoint used to add a new report to an appointment
* *
@ -64,7 +77,9 @@ public class AdminApi {
*/ */
@PostMapping("/admin/appoitements/report/{appointmentId}") @PostMapping("/admin/appoitements/report/{appointmentId}")
public void createAppointmentReport( public void createAppointmentReport(
@PathVariable String appointmentId, @RequestBody Report report) {} @PathVariable String appointmentId, @RequestBody Report report) {
adminApiService.createAppointmentReport(appointmentId, report);
}
/** /**
* TODO: Shouldn't a project be kept in history ? 2 different endpoints ? * TODO: Shouldn't a project be kept in history ? 2 different endpoints ?
@ -74,5 +89,7 @@ public class AdminApi {
* @return the status code of the request * @return the status code of the request
*/ */
@DeleteMapping("/admin/projects/remove/{projectId}") @DeleteMapping("/admin/projects/remove/{projectId}")
public void deleteProject(@PathVariable String projectId) {} public void deleteProject(@PathVariable String projectId) {
adminApiService.deleteProject(projectId);
}
} }

View File

@ -1,51 +1,69 @@
package enseirb.myinpulse.api; package enseirb.myinpulse.controller;
import enseirb.myinpulse.api.datatypes.LCSection; import enseirb.myinpulse.model.LCSection;
import enseirb.myinpulse.api.datatypes.Project; import enseirb.myinpulse.model.Project;
import enseirb.myinpulse.service.EntrepreneurApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@SpringBootApplication @SpringBootApplication
@RestController @RestController
public class EntrepreneurApi { public class EntrepreneurApi {
private final EntrepreneurApiService entrepreneurApiService;
@Autowired
EntrepreneurApi(EntrepreneurApiService entrepreneurApiService) {
this.entrepreneurApiService = entrepreneurApiService;
}
/** /**
* TODO * TODO: check return type
* *
* <p>Endpoint used to update a LC section. * <p>Endpoint used to update a LC section.
* *
* @return status code * @return status code
*/ */
@PutMapping("/entrepreneur/lcsection/modify/{sectionId}") @PutMapping("/entrepreneur/lcsection/modify/{sectionId}")
public void editLCSection(@PathVariable String sectionId, @RequestBody LCSection section) {} public void editLCSection(@PathVariable String sectionId, @RequestBody LCSection section) {
entrepreneurApiService.editLCSection(sectionId, section);
}
/** /**
* TODO * TODO: checkReturn Type
* *
* <p>Endpoint used to delete a LC section * <p>Endpoint used to delete a LC section
* *
* @return status code * @return status code
*/ */
@DeleteMapping("/entrepreneur/lcsection/remove/{sectionId}") @DeleteMapping("/entrepreneur/lcsection/remove/{sectionId}")
public void removeLCSection(@PathVariable String sectionId) {} public void removeLCSection(@PathVariable String sectionId) {
entrepreneurApiService.removeLCSection(sectionId);
}
/** /**
* TODO * TODO: check return type
* *
* <p>Endpoint used to create a new LC section * <p>Endpoint used to create a new LC section
* *
* @return status code * @return status code
*/ */
@PostMapping("/entrepreneur/lcsection/add/{sectionId}") @PostMapping("/entrepreneur/lcsection/add/{sectionId}")
public void addLCSection(@PathVariable String sectionId, @RequestBody LCSection section) {} public void addLCSection(@PathVariable String sectionId, @RequestBody LCSection section) {
entrepreneurApiService.addLCSection(sectionId, section);
}
/** /**
* TODO * TODO: check return type
* *
* <p>Endpoint used to request the creation of a new project * <p>Endpoint used to request the creation of a new project
* *
* @return status code * @return status code
*/ */
@PostMapping("/entrepreneur/project/request") @PostMapping("/entrepreneur/project/request")
public void requestNewProject(@RequestBody Project project) {} public void requestNewProject(@RequestBody Project project) {
entrepreneurApiService.requestNewProject(project);
}
} }

View File

@ -1,7 +1,12 @@
package enseirb.myinpulse.api; package enseirb.myinpulse.controller;
import enseirb.myinpulse.api.datatypes.Appointment; import enseirb.myinpulse.model.Administrateurs;
import enseirb.myinpulse.model.Appointment;
import enseirb.myinpulse.model.Entrepreneurs;
import enseirb.myinpulse.model.Sections;
import enseirb.myinpulse.service.SharedApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -9,6 +14,13 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
public class SharedApi { public class SharedApi {
private final SharedApiService sharedApiService;
@Autowired
SharedApi(SharedApiService sharedApiService) {
this.sharedApiService = sharedApiService;
}
/** /**
* TODO: It does not looks like a good id to have the title and the date in the url. What even * TODO: It does not looks like a good id to have the title and the date in the url. What even
* TODO: is the title btw ? if this is the LC section, wouldn't it be better to use an ID ? * TODO: is the title btw ? if this is the LC section, wouldn't it be better to use an ID ?
@ -19,20 +31,22 @@ public class SharedApi {
* @return a list of lean canvas sections * @return a list of lean canvas sections
*/ */
@GetMapping("/shared/project/lcsection/{projectId}/{title}/{date}") @GetMapping("/shared/project/lcsection/{projectId}/{title}/{date}")
public void getLCSection( public Iterable<Sections> getLCSection(
@PathVariable("projectId") String projectId, @PathVariable("projectId") String projectId,
@PathVariable("title") String title, @PathVariable("title") String title,
@PathVariable("date") String date) {} @PathVariable("date") String date) {
return sharedApiService.getLCSection(projectId, title, date);
}
/** /**
* TODO * Endpoint used to get entrepreneurs details
*
* <p>Endpoint used to get entrepreneurs details
* *
* @return a list of all entrepreneurs in a project * @return a list of all entrepreneurs in a project
*/ */
@GetMapping("/shared/entrepreneurs/{projectId}") @GetMapping("/shared/entrepreneurs/{projectId}")
public void getEntrepreneursByProjectId(@PathVariable int projectId) {} public Iterable<Entrepreneurs> getEntrepreneursByProjectId(@PathVariable int projectId) {
return sharedApiService.getEntrepreneursByProjectId(projectId);
}
/** /**
* TODO: is it really useful for the admin ? We can already get all the project of the current * TODO: is it really useful for the admin ? We can already get all the project of the current
@ -43,7 +57,9 @@ public class SharedApi {
* @return a list of all project managed by the current admin user * @return a list of all project managed by the current admin user
*/ */
@GetMapping("/shared/projects/admin/{projectId}") @GetMapping("/shared/projects/admin/{projectId}")
public void getAdminByProjectId(@PathVariable int projectId) {} public Iterable<Administrateurs> getAdminByProjectId(@PathVariable int projectId) {
return sharedApiService.getAdminByProjectId(projectId);
}
/** /**
* TODO: Should it really be all appointments? all future appointments ? a flag to choose \\ * TODO: Should it really be all appointments? all future appointments ? a flag to choose \\
@ -54,25 +70,27 @@ public class SharedApi {
* @return a list of all appointments. * @return a list of all appointments.
*/ */
@GetMapping("/shared/projects/appointments/{projectId}") @GetMapping("/shared/projects/appointments/{projectId}")
public void getAppointmentsByProjectId(@PathVariable int projectId) {} public Iterable<Appointment> getAppointmentsByProjectId(@PathVariable int projectId) {
return sharedApiService.getAppointmentsByProjectId(projectId);
}
/** /**
* TODO: Shouldn't the last two parameters be swapped ? * Endpoint used to generate a PDF report
*
* <p>Endpoint used to generate a PDF report
* *
* @return a PDF file? TODO: how does that works ? * @return a PDF file? TODO: how does that works ?
*/ */
@GetMapping("/shared/projects/appointments/report/{appointmentId}") @GetMapping("/shared/projects/appointments/report/{appointmentId}")
public void getPDFReport(@PathVariable int appointmentId) {} public void getPDFReport(@PathVariable int appointmentId) {
sharedApiService.getPDFReport(appointmentId);
}
/** /**
* TODO * TODO
* *
* <p> * @return TODO
*
* @return a list of all project managed by the current admin user
*/ */
@PostMapping("/shared/appointment/request") @PostMapping("/shared/appointment/request")
public void createAppointmentRequest(@RequestBody Appointment appointment) {} public void createAppointmentRequest(@RequestBody Appointment appointment) {
sharedApiService.createAppointmentRequest(appointment);
}
} }

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.exceptions; package enseirb.myinpulse.exception;
public class RoleNotFoudException extends RuntimeException { public class RoleNotFoudException extends RuntimeException {
public RoleNotFoudException(String message) { public RoleNotFoudException(String message) {

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.exceptions; package enseirb.myinpulse.exception;
public class UserNotFoundException extends RuntimeException { public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(String message) { public UserNotFoundException(String message) {

View File

@ -1,43 +1,43 @@
package enseirb.myinpulse.postgres_db.model; package enseirb.myinpulse.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.persistence.PrimaryKeyJoinColumn; import jakarta.persistence.PrimaryKeyJoinColumn;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Entity @Entity
@Table(name = "administrateurs") @Table(name = "administrateurs")
@PrimaryKeyJoinColumn(name = "id_administrateur", referencedColumnName = "id_utilisateur") @PrimaryKeyJoinColumn(name = "id_administrateur", referencedColumnName = "id_utilisateur")
public class Administrateurs extends Utilisateurs { public class Administrateurs extends Utilisateurs {
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_projet") @JoinColumn(name = "id_projet")
private Projets projetsAdministrateurs; private Projets projetsAdministrateurs;
@OneToMany(mappedBy = "administrateursSections", fetch = FetchType.LAZY, orphanRemoval = true) @OneToMany(mappedBy = "administrateursSections", fetch = FetchType.LAZY, orphanRemoval = true)
private List<Sections> ListSections = new ArrayList<>(); private List<Sections> ListSections = new ArrayList<>();
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_rdv") @JoinColumn(name = "id_rdv")
private RendezVous rendezVousAdministrateurs; private RendezVous rendezVousAdministrateurs;
public Administrateurs() {} public Administrateurs() {}
public Administrateurs( public Administrateurs(
String nom_utilisateur, String nom_utilisateur,
Long id_utilisateur, Long id_utilisateur,
String prenom_utilisateur, String prenom_utilisateur,
String mail_principal, String mail_principal,
String mail_secondaire, String mail_secondaire,
String numero_telephone) { String numero_telephone) {
super( super(
nom_utilisateur, nom_utilisateur,
id_utilisateur, id_utilisateur,
prenom_utilisateur, prenom_utilisateur,
mail_principal, mail_principal,
mail_secondaire, mail_secondaire,
numero_telephone); numero_telephone);
} }
} }

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.api.datatypes; package enseirb.myinpulse.model;
public class Appointment { public class Appointment {
int validated; int validated;

View File

@ -1,46 +1,46 @@
package enseirb.myinpulse.postgres_db.model; package enseirb.myinpulse.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@Entity @Entity
@Table(name = "comptes_rendus") @Table(name = "comptes_rendus")
public class ComptesRendus { public class ComptesRendus {
@Id @Id
@NotNull @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id_compte_rendu; private Long id_compte_rendu;
private String contenu_compte_rendu; private String contenu_compte_rendu;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_rdv") @JoinColumn(name = "id_rdv")
private RendezVous rendezVousComptesRendus; private RendezVous rendezVousComptesRendus;
public ComptesRendus() {} public ComptesRendus() {}
public ComptesRendus(Long id_compte_rendu, String contenu_compte_rendu) { public ComptesRendus(Long id_compte_rendu, String contenu_compte_rendu) {
this.id_compte_rendu = id_compte_rendu; this.id_compte_rendu = id_compte_rendu;
this.contenu_compte_rendu = contenu_compte_rendu; this.contenu_compte_rendu = contenu_compte_rendu;
} }
public Long getId_compte_rendu() { public Long getId_compte_rendu() {
return id_compte_rendu; return id_compte_rendu;
} }
public void setId_compte_rendu(Long id_compte_rendu) { public void setId_compte_rendu(Long id_compte_rendu) {
this.id_compte_rendu = id_compte_rendu; this.id_compte_rendu = id_compte_rendu;
} }
public String getContenu_compte_rendu() { public String getContenu_compte_rendu() {
return contenu_compte_rendu; return contenu_compte_rendu;
} }
public void setContenu_compte_rendu(String contenu_compte_rendu) { public void setContenu_compte_rendu(String contenu_compte_rendu) {
this.contenu_compte_rendu = contenu_compte_rendu; this.contenu_compte_rendu = contenu_compte_rendu;
} }
} }

View File

@ -1,80 +1,80 @@
package enseirb.myinpulse.postgres_db.model; package enseirb.myinpulse.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Table; import jakarta.persistence.Table;
@Entity @Entity
@Table(name = "entrepreneurs") @Table(name = "entrepreneurs")
@PrimaryKeyJoinColumn(name = "id_entrepreneur", referencedColumnName = "id_utilisateur") @PrimaryKeyJoinColumn(name = "id_entrepreneur", referencedColumnName = "id_utilisateur")
public class Entrepreneurs extends Utilisateurs { public class Entrepreneurs extends Utilisateurs {
@Column(length = 255) @Column(length = 255)
private String ecole; private String ecole;
@Column(length = 255) @Column(length = 255)
private String filiere; private String filiere;
private boolean status_snee; private boolean status_snee;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_projet_participation", referencedColumnName = "id_projet") @JoinColumn(name = "id_projet_participation", referencedColumnName = "id_projet")
private Projets projetsParticipation; private Projets projetsParticipation;
// @Column(insertable=false, updatable=false) // @Column(insertable=false, updatable=false)
@OneToOne(fetch = FetchType.LAZY) @OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_projet_propose", referencedColumnName = "id_projet") @JoinColumn(name = "id_projet_propose", referencedColumnName = "id_projet")
private Projets projetsPropose; private Projets projetsPropose;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_rdv") @JoinColumn(name = "id_rdv")
private RendezVous rendezVousEntrepreneurs; private RendezVous rendezVousEntrepreneurs;
public Entrepreneurs() {} public Entrepreneurs() {}
public Entrepreneurs( public Entrepreneurs(
String nom_utilisateur, String nom_utilisateur,
Long id_utilisateur, Long id_utilisateur,
String prenom_utilisateur, String prenom_utilisateur,
String mail_principal, String mail_principal,
String mail_secondaire, String mail_secondaire,
String numero_telephone, String numero_telephone,
String ecole, String ecole,
boolean status_snee, boolean status_snee,
String filiere) { String filiere) {
super( super(
nom_utilisateur, nom_utilisateur,
id_utilisateur, id_utilisateur,
prenom_utilisateur, prenom_utilisateur,
mail_principal, mail_principal,
mail_secondaire, mail_secondaire,
numero_telephone); numero_telephone);
this.ecole = ecole; this.ecole = ecole;
this.status_snee = status_snee; this.status_snee = status_snee;
this.filiere = filiere; this.filiere = filiere;
} }
public String getEcole() { public String getEcole() {
return ecole; return ecole;
} }
public void setEcole(String ecole) { public void setEcole(String ecole) {
this.ecole = ecole; this.ecole = ecole;
} }
public String getFiliere() { public String getFiliere() {
return filiere; return filiere;
} }
public void setFiliere(String filiere) { public void setFiliere(String filiere) {
this.filiere = filiere; this.filiere = filiere;
} }
public boolean isStatus_snee() { public boolean isStatus_snee() {
return status_snee; return status_snee;
} }
public void setStatus_snee(boolean status_snee) { public void setStatus_snee(boolean status_snee) {
this.status_snee = status_snee; this.status_snee = status_snee;
} }
} }

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.api.datatypes; package enseirb.myinpulse.model;
// TODO: is this redundant with the Section class from the database ? // TODO: is this redundant with the Section class from the database ?
// TODO: In the one hand it represent the same data, and on the other it should be much lighter. // TODO: In the one hand it represent the same data, and on the other it should be much lighter.

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.api.datatypes; package enseirb.myinpulse.model;
public class Project { public class Project {
int projectId; int projectId;

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.api.datatypes; package enseirb.myinpulse.model;
public class ProjectDecision { public class ProjectDecision {
int projectId; int projectId;

View File

@ -1,98 +1,98 @@
package enseirb.myinpulse.postgres_db.model; package enseirb.myinpulse.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Entity @Entity
@Table(name = "projets") @Table(name = "projets")
public class Projets { public class Projets {
@Id @Id
@NotNull @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id_projet; private Long id_projet;
@Column(length = 255) @Column(length = 255)
private String nom_projet; private String nom_projet;
private byte[] logo; private byte[] logo;
private LocalDate date_creation; private LocalDate date_creation;
@Column(length = 255) @Column(length = 255)
private String status_projet; private String status_projet;
@OneToMany(mappedBy = "projetsAdministrateurs", fetch = FetchType.LAZY, orphanRemoval = true) @OneToMany(mappedBy = "projetsAdministrateurs", fetch = FetchType.LAZY, orphanRemoval = true)
private List<Administrateurs> listAdministrateurs = new ArrayList<>(); private List<Administrateurs> listAdministrateurs = new ArrayList<>();
@OneToMany(mappedBy = "projetsParticipation", fetch = FetchType.LAZY, orphanRemoval = true) @OneToMany(mappedBy = "projetsParticipation", fetch = FetchType.LAZY, orphanRemoval = true)
private List<Entrepreneurs> ListEntrepreneursParticipation = new ArrayList<>(); private List<Entrepreneurs> ListEntrepreneursParticipation = new ArrayList<>();
@OneToOne(mappedBy = "projetsPropose", fetch = FetchType.LAZY, orphanRemoval = true) @OneToOne(mappedBy = "projetsPropose", fetch = FetchType.LAZY, orphanRemoval = true)
private Entrepreneurs entrepreneursPropose; private Entrepreneurs entrepreneursPropose;
@OneToMany(mappedBy = "projetsSections", fetch = FetchType.LAZY, orphanRemoval = true) @OneToMany(mappedBy = "projetsSections", fetch = FetchType.LAZY, orphanRemoval = true)
private List<Sections> ListSections = new ArrayList<>(); private List<Sections> ListSections = new ArrayList<>();
// Hibernate expects entities to have a no-arg constructor, // Hibernate expects entities to have a no-arg constructor,
// though it does not necessarily have to be public. // though it does not necessarily have to be public.
public Projets() {} public Projets() {}
public Projets( public Projets(
Long id_projet, Long id_projet,
String nom_projet, String nom_projet,
byte[] logo, byte[] logo,
LocalDate date_creation, LocalDate date_creation,
String status_projet) { String status_projet) {
this.id_projet = id_projet; this.id_projet = id_projet;
this.nom_projet = nom_projet; this.nom_projet = nom_projet;
this.logo = logo; this.logo = logo;
this.date_creation = date_creation; this.date_creation = date_creation;
this.status_projet = status_projet; this.status_projet = status_projet;
} }
public Long getId_projet() { public Long getId_projet() {
return id_projet; return id_projet;
} }
public void setId_projet(Long id_projet) { public void setId_projet(Long id_projet) {
this.id_projet = id_projet; this.id_projet = id_projet;
} }
public String getNom_projet() { public String getNom_projet() {
return nom_projet; return nom_projet;
} }
public void setNom_projet(String nom_projet) { public void setNom_projet(String nom_projet) {
this.nom_projet = nom_projet; this.nom_projet = nom_projet;
} }
public byte[] getLogo() { public byte[] getLogo() {
return logo; return logo;
} }
public void setLogo(byte[] logo) { public void setLogo(byte[] logo) {
this.logo = logo; this.logo = logo;
} }
public LocalDate getDate_creation() { public LocalDate getDate_creation() {
return date_creation; return date_creation;
} }
public void setDate_creation(LocalDate date_creation) { public void setDate_creation(LocalDate date_creation) {
this.date_creation = date_creation; this.date_creation = date_creation;
} }
public String getStatus_projet() { public String getStatus_projet() {
return status_projet; return status_projet;
} }
public void setStatus_projet(String status_projet) { public void setStatus_projet(String status_projet) {
this.status_projet = status_projet; this.status_projet = status_projet;
} }
} }

View File

@ -1,111 +1,111 @@
package enseirb.myinpulse.postgres_db.model; package enseirb.myinpulse.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Entity @Entity
@Table(name = "rendez_vous") @Table(name = "rendez_vous")
public class RendezVous { public class RendezVous {
@OneToMany(mappedBy = "rendezVousEntrepreneurs", fetch = FetchType.LAZY, orphanRemoval = true) @OneToMany(mappedBy = "rendezVousEntrepreneurs", fetch = FetchType.LAZY, orphanRemoval = true)
private final List<Entrepreneurs> ListEntrepreneurs = new ArrayList<>(); private final List<Entrepreneurs> ListEntrepreneurs = new ArrayList<>();
@OneToMany(mappedBy = "rendezVousAdministrateurs", fetch = FetchType.LAZY, orphanRemoval = true) @OneToMany(mappedBy = "rendezVousAdministrateurs", fetch = FetchType.LAZY, orphanRemoval = true)
private final List<Administrateurs> ListAdministrateurs = new ArrayList<>(); private final List<Administrateurs> ListAdministrateurs = new ArrayList<>();
@OneToMany(mappedBy = "rendezVousComptesRendus", fetch = FetchType.LAZY, orphanRemoval = true) @OneToMany(mappedBy = "rendezVousComptesRendus", fetch = FetchType.LAZY, orphanRemoval = true)
private final List<ComptesRendus> ListComptesRendus = new ArrayList<>(); private final List<ComptesRendus> ListComptesRendus = new ArrayList<>();
@ManyToMany( @ManyToMany(
fetch = FetchType.LAZY, fetch = FetchType.LAZY,
cascade = {CascadeType.ALL}) cascade = {CascadeType.ALL})
@JoinTable( @JoinTable(
name = "concerner", name = "concerner",
joinColumns = @JoinColumn(name = "id_rdv"), joinColumns = @JoinColumn(name = "id_rdv"),
inverseJoinColumns = @JoinColumn(name = "id_section")) inverseJoinColumns = @JoinColumn(name = "id_section"))
List<Sections> ListSections = new ArrayList<>(); List<Sections> ListSections = new ArrayList<>();
@Id @Id
@NotNull @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id_rdv; private Long id_rdv;
private LocalDate date_rdv; private LocalDate date_rdv;
private LocalTime heure_rdv; private LocalTime heure_rdv;
private LocalTime duree_rdv; private LocalTime duree_rdv;
@Column(length = 255) @Column(length = 255)
private String lieu_rdv; private String lieu_rdv;
private String sujet_rdv; private String sujet_rdv;
public RendezVous() {} public RendezVous() {}
public RendezVous( public RendezVous(
Long id_rdv, Long id_rdv,
LocalDate date_rdv, LocalDate date_rdv,
LocalTime heure_rdv, LocalTime heure_rdv,
LocalTime duree_rdv, LocalTime duree_rdv,
String lieu_rdv, String lieu_rdv,
String sujet_rdv) { String sujet_rdv) {
this.id_rdv = id_rdv; this.id_rdv = id_rdv;
this.date_rdv = date_rdv; this.date_rdv = date_rdv;
this.heure_rdv = heure_rdv; this.heure_rdv = heure_rdv;
this.duree_rdv = duree_rdv; this.duree_rdv = duree_rdv;
this.lieu_rdv = lieu_rdv; this.lieu_rdv = lieu_rdv;
this.sujet_rdv = sujet_rdv; this.sujet_rdv = sujet_rdv;
} }
public Long getId_rdv() { public Long getId_rdv() {
return id_rdv; return id_rdv;
} }
public void setId_rdv(Long id_rdv) { public void setId_rdv(Long id_rdv) {
this.id_rdv = id_rdv; this.id_rdv = id_rdv;
} }
public LocalDate getDate_rdv() { public LocalDate getDate_rdv() {
return date_rdv; return date_rdv;
} }
public void setDate_rdv(LocalDate date_rdv) { public void setDate_rdv(LocalDate date_rdv) {
this.date_rdv = date_rdv; this.date_rdv = date_rdv;
} }
public LocalTime getHeure_rdv() { public LocalTime getHeure_rdv() {
return heure_rdv; return heure_rdv;
} }
public void setHeure_rdv(LocalTime heure_rdv) { public void setHeure_rdv(LocalTime heure_rdv) {
this.heure_rdv = heure_rdv; this.heure_rdv = heure_rdv;
} }
public LocalTime getDuree_rdv() { public LocalTime getDuree_rdv() {
return duree_rdv; return duree_rdv;
} }
public void setDuree_rdv(LocalTime duree_rdv) { public void setDuree_rdv(LocalTime duree_rdv) {
this.duree_rdv = duree_rdv; this.duree_rdv = duree_rdv;
} }
public String getLieu_rdv() { public String getLieu_rdv() {
return lieu_rdv; return lieu_rdv;
} }
public void setLieu_rdv(String lieu_rdv) { public void setLieu_rdv(String lieu_rdv) {
this.lieu_rdv = lieu_rdv; this.lieu_rdv = lieu_rdv;
} }
public String getSujet_rdv() { public String getSujet_rdv() {
return sujet_rdv; return sujet_rdv;
} }
public void setSujet_rdv(String sujet_rdv) { public void setSujet_rdv(String sujet_rdv) {
this.sujet_rdv = sujet_rdv; this.sujet_rdv = sujet_rdv;
} }
} }

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.api.datatypes; package enseirb.myinpulse.model;
public class Report { public class Report {
int projectId; int projectId;

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.utils.keycloak.datatypes; package enseirb.myinpulse.model;
public class RoleRepresentation { public class RoleRepresentation {
public String id; public String id;

View File

@ -1,81 +1,81 @@
package enseirb.myinpulse.postgres_db.model; package enseirb.myinpulse.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Entity @Entity
@Table(name = "sections") @Table(name = "sections")
public class Sections { public class Sections {
@Id @Id
@NotNull @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id_section; private Long id_section;
@Column(length = 255) @Column(length = 255)
private String titre; private String titre;
private String contenu_section; private String contenu_section;
private LocalDateTime date_modification; private LocalDateTime date_modification;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_projet") @JoinColumn(name = "id_projet")
private Projets projetsSections; private Projets projetsSections;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_admnistrateur") @JoinColumn(name = "id_admnistrateur")
private Administrateurs administrateursSections; private Administrateurs administrateursSections;
@ManyToMany(mappedBy = "ListSections") @ManyToMany(mappedBy = "ListSections")
private List<RendezVous> rendezVous = new ArrayList<>(); private List<RendezVous> rendezVous = new ArrayList<>();
public Sections() {} public Sections() {}
public Sections( public Sections(
Long id_section, Long id_section,
String titre, String titre,
String contenu_section, String contenu_section,
LocalDateTime date_modification) { LocalDateTime date_modification) {
this.id_section = id_section; this.id_section = id_section;
this.titre = titre; this.titre = titre;
this.contenu_section = contenu_section; this.contenu_section = contenu_section;
this.date_modification = date_modification; this.date_modification = date_modification;
} }
public String getTitre() { public String getTitre() {
return titre; return titre;
} }
public void setTitre(String titre) { public void setTitre(String titre) {
this.titre = titre; this.titre = titre;
} }
public Long getId_section() { public Long getId_section() {
return id_section; return id_section;
} }
public void setId_section(Long id_section) { public void setId_section(Long id_section) {
this.id_section = id_section; this.id_section = id_section;
} }
public String getContenu_section() { public String getContenu_section() {
return contenu_section; return contenu_section;
} }
public void setContenu_section(String contenu_section) { public void setContenu_section(String contenu_section) {
this.contenu_section = contenu_section; this.contenu_section = contenu_section;
} }
public LocalDateTime getDate_modification() { public LocalDateTime getDate_modification() {
return date_modification; return date_modification;
} }
public void setDate_modification(LocalDateTime date_modification) { public void setDate_modification(LocalDateTime date_modification) {
this.date_modification = date_modification; this.date_modification = date_modification;
} }
} }

View File

@ -1,4 +1,4 @@
package enseirb.myinpulse.utils.keycloak.datatypes; package enseirb.myinpulse.model;
public class UserRepresentation { public class UserRepresentation {
public String id; public String id;

View File

@ -1,95 +1,95 @@
package enseirb.myinpulse.postgres_db.model; package enseirb.myinpulse.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@Entity @Entity
@Table(name = "utilisateurs") @Table(name = "utilisateurs")
@Inheritance(strategy = InheritanceType.JOINED) @Inheritance(strategy = InheritanceType.JOINED)
public class Utilisateurs { public class Utilisateurs {
@Id @Id
@NotNull @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id_utilisateur; private Long id_utilisateur;
@Column(length = 255) @Column(length = 255)
private String nom_utilisateur; private String nom_utilisateur;
@Column(length = 255) @Column(length = 255)
private String prenom_utilisateur; private String prenom_utilisateur;
@Column(length = 255) @Column(length = 255)
private String mail_principal; private String mail_principal;
@Column(length = 255) @Column(length = 255)
private String mail_secondaire; private String mail_secondaire;
@Column(length = 20) @Column(length = 20)
private String numero_telephone; private String numero_telephone;
public Utilisateurs() {} public Utilisateurs() {}
public Utilisateurs( public Utilisateurs(
String nom_utilisateur, String nom_utilisateur,
Long id_utilisateur, Long id_utilisateur,
String prenom_utilisateur, String prenom_utilisateur,
String mail_principal, String mail_principal,
String mail_secondaire, String mail_secondaire,
String numero_telephone) { String numero_telephone) {
this.nom_utilisateur = nom_utilisateur; this.nom_utilisateur = nom_utilisateur;
this.id_utilisateur = id_utilisateur; this.id_utilisateur = id_utilisateur;
this.prenom_utilisateur = prenom_utilisateur; this.prenom_utilisateur = prenom_utilisateur;
this.mail_principal = mail_principal; this.mail_principal = mail_principal;
this.mail_secondaire = mail_secondaire; this.mail_secondaire = mail_secondaire;
this.numero_telephone = numero_telephone; this.numero_telephone = numero_telephone;
} }
public Long getId_utilisateur() { public Long getId_utilisateur() {
return id_utilisateur; return id_utilisateur;
} }
public void setId_utilisateur(Long id_utilisateur) { public void setId_utilisateur(Long id_utilisateur) {
this.id_utilisateur = id_utilisateur; this.id_utilisateur = id_utilisateur;
} }
public String getNom_utilisateur() { public String getNom_utilisateur() {
return nom_utilisateur; return nom_utilisateur;
} }
public void setNom_utilisateur(String nom_utilisateur) { public void setNom_utilisateur(String nom_utilisateur) {
this.nom_utilisateur = nom_utilisateur; this.nom_utilisateur = nom_utilisateur;
} }
public String getPrenom_utilisateur() { public String getPrenom_utilisateur() {
return prenom_utilisateur; return prenom_utilisateur;
} }
public void setPrenom_utilisateur(String prenom_utilisateur) { public void setPrenom_utilisateur(String prenom_utilisateur) {
this.prenom_utilisateur = prenom_utilisateur; this.prenom_utilisateur = prenom_utilisateur;
} }
public String getMail_principal() { public String getMail_principal() {
return mail_principal; return mail_principal;
} }
public void setMail_principal(String mail_principal) { public void setMail_principal(String mail_principal) {
this.mail_principal = mail_principal; this.mail_principal = mail_principal;
} }
public String getMail_secondaire() { public String getMail_secondaire() {
return mail_secondaire; return mail_secondaire;
} }
public void setMail_secondaire(String mail_secondaire) { public void setMail_secondaire(String mail_secondaire) {
this.mail_secondaire = mail_secondaire; this.mail_secondaire = mail_secondaire;
} }
public String getNumero_telephone() { public String getNumero_telephone() {
return numero_telephone; return numero_telephone;
} }
public void setNumero_telephone(String numero_telephone) { public void setNumero_telephone(String numero_telephone) {
this.numero_telephone = numero_telephone; this.numero_telephone = numero_telephone;
} }
} }

View File

@ -1,52 +0,0 @@
package enseirb.myinpulse.postgres_db.controller;
import enseirb.myinpulse.postgres_db.model.ComptesRendus;
import enseirb.myinpulse.postgres_db.repository.ComptesRendusRepository;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
import java.util.Optional;
@RestController
public class ComptesRendusController {
private final ComptesRendusRepository comptesRendusRepository;
public ComptesRendusController(ComptesRendusRepository comptesRendusRepository) {
this.comptesRendusRepository = comptesRendusRepository;
}
@GetMapping("/ComptesRendus")
@ResponseBody
public Iterable<ComptesRendus> allComptesRendus() {
return this.comptesRendusRepository.findAll();
}
@GetMapping("/ComptesRendus/{id}")
public ComptesRendus getComptesRendusById(@PathVariable Long id) {
Optional<ComptesRendus> compteRendu = this.comptesRendusRepository.findById(id);
if (compteRendu.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce compte rendu n'existe pas");
}
return compteRendu.get();
}
@PostMapping("/ComptesRendus")
public ComptesRendus addComptesRendus(@RequestBody ComptesRendus comptesRendus) {
return this.comptesRendusRepository.save(comptesRendus);
}
@PostMapping("/ComptesRendus/{id}")
public ComptesRendus updateProjets(@PathVariable Long id, String contenu_compte_rendu) {
Optional<ComptesRendus> compteRendu = this.comptesRendusRepository.findById(id);
if (compteRendu.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce compte rendu n'existe pas");
}
if (contenu_compte_rendu != null) {
compteRendu.get().setContenu_compte_rendu(contenu_compte_rendu);
}
return this.comptesRendusRepository.save(compteRendu.get());
}
}

View File

@ -1,14 +1,14 @@
package enseirb.myinpulse.postgres_db.repository; package enseirb.myinpulse.repository;
import enseirb.myinpulse.postgres_db.model.Administrateurs; import enseirb.myinpulse.model.Administrateurs;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource @RepositoryRestResource
public interface AdministrateursRepository extends JpaRepository<Administrateurs, Long> { public interface AdministrateursRepository extends JpaRepository<Administrateurs, Long> {
/* @Query("SELECT a from Administrateurs a") /* @Query("SELECT a from Administrateurs a")
Administrateurs findAllAdministrateurs(); */ Administrateurs findAllAdministrateurs(); */
} }

View File

@ -1,9 +1,9 @@
package enseirb.myinpulse.postgres_db.repository; package enseirb.myinpulse.repository;
import enseirb.myinpulse.postgres_db.model.ComptesRendus; import enseirb.myinpulse.model.ComptesRendus;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource @RepositoryRestResource
public interface ComptesRendusRepository extends JpaRepository<ComptesRendus, Long> {} public interface ComptesRendusRepository extends JpaRepository<ComptesRendus, Integer> {}

View File

@ -1,14 +1,14 @@
package enseirb.myinpulse.postgres_db.repository; package enseirb.myinpulse.repository;
import enseirb.myinpulse.postgres_db.model.Entrepreneurs; import enseirb.myinpulse.model.Entrepreneurs;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource @RepositoryRestResource
public interface EntrepreneursRepository extends JpaRepository<Entrepreneurs, Long> { public interface EntrepreneursRepository extends JpaRepository<Entrepreneurs, Long> {
/* @Query("SELECT e from Entrepreneurs e") /* @Query("SELECT e from Entrepreneurs e")
Entrepreneurs findAllEntrepreneurs(); */ Entrepreneurs findAllEntrepreneurs(); */
} }

View File

@ -1,9 +1,9 @@
package enseirb.myinpulse.postgres_db.repository; package enseirb.myinpulse.repository;
import enseirb.myinpulse.postgres_db.model.Projets; import enseirb.myinpulse.model.Projets;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource @RepositoryRestResource
public interface ProjetsRepository extends JpaRepository<Projets, Long> {} public interface ProjetsRepository extends JpaRepository<Projets, Long> {}

View File

@ -1,9 +1,9 @@
package enseirb.myinpulse.postgres_db.repository; package enseirb.myinpulse.repository;
import enseirb.myinpulse.postgres_db.model.RendezVous; import enseirb.myinpulse.model.RendezVous;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource @RepositoryRestResource
public interface RendezVousRepository extends JpaRepository<RendezVous, Long> {} public interface RendezVousRepository extends JpaRepository<RendezVous, Long> {}

View File

@ -1,9 +1,9 @@
package enseirb.myinpulse.postgres_db.repository; package enseirb.myinpulse.repository;
import enseirb.myinpulse.postgres_db.model.Sections; import enseirb.myinpulse.model.Sections;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource @RepositoryRestResource
public interface SectionsRepository extends JpaRepository<Sections, Long> {} public interface SectionsRepository extends JpaRepository<Sections, Long> {}

View File

@ -1,14 +1,14 @@
package enseirb.myinpulse.postgres_db.repository; package enseirb.myinpulse.repository;
import enseirb.myinpulse.postgres_db.model.Utilisateurs; import enseirb.myinpulse.model.Utilisateurs;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource @RepositoryRestResource
public interface UtilisateursRepository extends JpaRepository<Utilisateurs, Long> { public interface UtilisateursRepository extends JpaRepository<Utilisateurs, Long> {
/* @Query("SELECT u from Utilisateurs u") /* @Query("SELECT u from Utilisateurs u")
Utilisateurs findAllUtilisateurs(); */ Utilisateurs findAllUtilisateurs(); */
} }

View File

@ -0,0 +1,46 @@
package enseirb.myinpulse.service;
import enseirb.myinpulse.model.*;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
@Service
public class AdminApiService {
// TODO
public Iterable<Administrateurs> getProjects() {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
// TODO
public Iterable<Appointment> getUpcomingAppointments() {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
// TODO
public Iterable<Project> getPendingProjects() {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
// TODO
public void validateProject(ProjectDecision decision) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
// TODO
public void addNewProject(Project project) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
// TODO
public void createAppointmentReport(String appointmentId, Report report) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
// TODO
public void deleteProject(String projectId) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
}

View File

@ -0,0 +1,29 @@
package enseirb.myinpulse.service;
import enseirb.myinpulse.model.LCSection;
import enseirb.myinpulse.model.Project;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
@Service
public class EntrepreneurApiService {
public void editLCSection(String sectionId, LCSection section) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
public void removeLCSection(String sectionId) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
public void addLCSection(String sectionId, LCSection section) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
public void requestNewProject(Project project) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
}

View File

@ -1,10 +1,10 @@
package enseirb.myinpulse.utils.keycloak; package enseirb.myinpulse.service;
import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.http.MediaType.APPLICATION_JSON;
import enseirb.myinpulse.exceptions.UserNotFoundException; import enseirb.myinpulse.exception.UserNotFoundException;
import enseirb.myinpulse.utils.keycloak.datatypes.RoleRepresentation; import enseirb.myinpulse.model.RoleRepresentation;
import enseirb.myinpulse.utils.keycloak.datatypes.UserRepresentation; import enseirb.myinpulse.model.UserRepresentation;
import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient;

View File

@ -0,0 +1,36 @@
package enseirb.myinpulse.service;
import enseirb.myinpulse.model.*;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;
@Service
public class SharedApiService {
public Iterable<Sections> getLCSection(String projectId, String title, String date) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
public Iterable<Entrepreneurs> getEntrepreneursByProjectId(int projectId) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
public Iterable<Administrateurs> getAdminByProjectId(int projectId) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
public Iterable<Appointment> getAppointmentsByProjectId(int projectId) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
public void getPDFReport(int appointmentId) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
public void createAppointmentRequest(Appointment appointment) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
}
}

View File

@ -0,0 +1,34 @@
package enseirb.myinpulse.service.database;
import enseirb.myinpulse.model.ComptesRendus;
import enseirb.myinpulse.repository.ComptesRendusRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;
import java.util.Optional;
@Service
public class CompteRenduService {
private final ComptesRendusRepository comptesRendusRepository;
@Autowired
CompteRenduService(ComptesRendusRepository comptesRendusRepository) {
this.comptesRendusRepository = comptesRendusRepository;
}
ComptesRendus getComptesRendusById(int id) {
Optional<ComptesRendus> compteRendu = comptesRendusRepository.findById(id);
if (compteRendu.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce compte rendu n'existe pas");
}
return compteRendu.get();
}
// TODO: do some validation
void saveCompteRendu(ComptesRendus compteRendu) {
comptesRendusRepository.save(compteRendu);
}
}

View File

@ -1,38 +1,38 @@
package enseirb.myinpulse.postgres_db.controller; package enseirb.myinpulse.service.database.old_controllers_to_convert_to_services;
import enseirb.myinpulse.postgres_db.model.Administrateurs; import enseirb.myinpulse.model.Administrateurs;
import enseirb.myinpulse.postgres_db.repository.AdministrateursRepository; import enseirb.myinpulse.repository.AdministrateursRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
import java.util.Optional; import java.util.Optional;
@RestController @RestController
public class AdministrateursController { public class AdministrateursController {
@Autowired AdministrateursRepository administrateursRepository; @Autowired AdministrateursRepository administrateursRepository;
@GetMapping("/Administrateurs") @GetMapping("/Administrateurs")
@ResponseBody @ResponseBody
public Iterable<Administrateurs> allAdministrateurs() { public Iterable<Administrateurs> allAdministrateurs() {
return this.administrateursRepository.findAll(); return this.administrateursRepository.findAll();
} }
@GetMapping("/Administrateurs/{id}") @GetMapping("/Administrateurs/{id}")
public Administrateurs getAdministrateursById(@PathVariable Long id) { public Administrateurs getAdministrateursById(@PathVariable Long id) {
Optional<Administrateurs> administrateur = this.administrateursRepository.findById(id); Optional<Administrateurs> administrateur = this.administrateursRepository.findById(id);
if (administrateur.isEmpty()) { if (administrateur.isEmpty()) {
throw new ResponseStatusException( throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cet administrateur n'existe pas"); HttpStatus.NOT_FOUND, "Cet administrateur n'existe pas");
} }
return administrateur.get(); return administrateur.get();
} }
@PostMapping("/Administrateurs") @PostMapping("/Administrateurs")
public Administrateurs addAdministrateurs(@RequestBody Administrateurs administrateurs) { public Administrateurs addAdministrateurs(@RequestBody Administrateurs administrateurs) {
return this.administrateursRepository.save(administrateurs); return this.administrateursRepository.save(administrateurs);
} }
} }

View File

@ -0,0 +1,43 @@
package enseirb.myinpulse.service.database.old_controllers_to_convert_to_services;
import org.springframework.web.bind.annotation.*;
@RestController
public class ComptesRendusController {
/*
private final ComptesRendusRepository comptesRendusRepository;
@Autowired
public ComptesRendusController(ComptesRendusRepository comptesRendusRepository) {
this.comptesRendusRepository = comptesRendusRepository;
}
@GetMapping("/ComptesRendus")
@ResponseBody
public Iterable<ComptesRendus> allComptesRendus() {
System.out.println("\n\n");
System.out.println(comptesRendusRepository);
System.out.println("\n\n");
return this.comptesRendusRepository.findAll();
}
@PostMapping("/ComptesRendus")
public ComptesRendus addComptesRendus(@RequestBody ComptesRendus comptesRendus) {
return this.comptesRendusRepository.save(comptesRendus);
}
@PostMapping("/ComptesRendus/{id}")
public ComptesRendus updateProjets(@PathVariable Long id, String contenu_compte_rendu) {
Optional<ComptesRendus> compteRendu = this.comptesRendusRepository.findById(id);
if (compteRendu.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce compte rendu n'existe pas");
}
if (contenu_compte_rendu != null) {
compteRendu.get().setContenu_compte_rendu(contenu_compte_rendu);
}
return this.comptesRendusRepository.save(compteRendu.get());
}
*/
}

View File

@ -1,58 +1,58 @@
package enseirb.myinpulse.postgres_db.controller; package enseirb.myinpulse.service.database.old_controllers_to_convert_to_services;
import enseirb.myinpulse.postgres_db.model.Entrepreneurs; import enseirb.myinpulse.model.Entrepreneurs;
import enseirb.myinpulse.postgres_db.repository.EntrepreneursRepository; import enseirb.myinpulse.repository.EntrepreneursRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
import java.util.Optional; import java.util.Optional;
@RestController @RestController
public class EntrepreneursController { public class EntrepreneursController {
@Autowired EntrepreneursRepository entrepreneursRepository; @Autowired EntrepreneursRepository entrepreneursRepository;
@GetMapping("/Entrepreneurs") @GetMapping("/Entrepreneurs")
@ResponseBody @ResponseBody
public Iterable<Entrepreneurs> allEntrepreneurs() { public Iterable<Entrepreneurs> allEntrepreneurs() {
return this.entrepreneursRepository.findAll(); return this.entrepreneursRepository.findAll();
} }
@GetMapping("/Entrepreneurs/{id}") @GetMapping("/Entrepreneurs/{id}")
public Entrepreneurs getEntrepreneursById(@PathVariable Long id) { public Entrepreneurs getEntrepreneursById(@PathVariable Long id) {
Optional<Entrepreneurs> entrepreneur = entrepreneursRepository.findById(id); Optional<Entrepreneurs> entrepreneur = entrepreneursRepository.findById(id);
if (entrepreneur.isEmpty()) { if (entrepreneur.isEmpty()) {
throw new ResponseStatusException( throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cet entrepreneur n'existe pas"); HttpStatus.NOT_FOUND, "Cet entrepreneur n'existe pas");
} }
return entrepreneur.get(); return entrepreneur.get();
} }
@PostMapping("/Entrepreneurs") @PostMapping("/Entrepreneurs")
public Entrepreneurs addEntrepreneurs(@RequestBody Entrepreneurs entrepreneurs) { public Entrepreneurs addEntrepreneurs(@RequestBody Entrepreneurs entrepreneurs) {
return this.entrepreneursRepository.save(entrepreneurs); return this.entrepreneursRepository.save(entrepreneurs);
} }
@PostMapping("/Entrepreneurs/{id}") @PostMapping("/Entrepreneurs/{id}")
public Entrepreneurs updateEntrepreneurs( public Entrepreneurs updateEntrepreneurs(
@PathVariable Long id, String ecole, String filiere, Boolean status_snee) { @PathVariable Long id, String ecole, String filiere, Boolean status_snee) {
Optional<Entrepreneurs> entrepreneur = entrepreneursRepository.findById(id); Optional<Entrepreneurs> entrepreneur = entrepreneursRepository.findById(id);
if (entrepreneur.isEmpty()) { if (entrepreneur.isEmpty()) {
throw new ResponseStatusException( throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cet entrepreneur n'existe pas"); HttpStatus.NOT_FOUND, "Cet entrepreneur n'existe pas");
} }
if (ecole != null) { if (ecole != null) {
entrepreneur.get().setEcole(ecole); entrepreneur.get().setEcole(ecole);
} }
if (filiere != null) { if (filiere != null) {
entrepreneur.get().setFiliere(filiere); entrepreneur.get().setFiliere(filiere);
} }
if (status_snee != null) { if (status_snee != null) {
entrepreneur.get().setStatus_snee(status_snee); entrepreneur.get().setStatus_snee(status_snee);
} }
return this.entrepreneursRepository.save(entrepreneur.get()); return this.entrepreneursRepository.save(entrepreneur.get());
} }
} }

View File

@ -1,64 +1,64 @@
package enseirb.myinpulse.postgres_db.controller; package enseirb.myinpulse.service.database.old_controllers_to_convert_to_services;
import enseirb.myinpulse.postgres_db.model.Projets; import enseirb.myinpulse.model.Projets;
import enseirb.myinpulse.postgres_db.repository.ProjetsRepository; import enseirb.myinpulse.repository.ProjetsRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Optional; import java.util.Optional;
@RestController @RestController
public class ProjetsController { public class ProjetsController {
@Autowired ProjetsRepository projetsRepository; @Autowired ProjetsRepository projetsRepository;
@GetMapping("/Projets") @GetMapping("/Projets")
@ResponseBody @ResponseBody
public Iterable<Projets> allProjets() { public Iterable<Projets> allProjets() {
return this.projetsRepository.findAll(); return this.projetsRepository.findAll();
} }
@GetMapping("/Projets/{id}") @GetMapping("/Projets/{id}")
public Projets getProjetsById(@PathVariable Long id) { public Projets getProjetsById(@PathVariable Long id) {
Optional<Projets> projet = this.projetsRepository.findById(id); Optional<Projets> projet = this.projetsRepository.findById(id);
if (projet.isEmpty()) { if (projet.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce projet n'existe pas"); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce projet n'existe pas");
} }
return projet.get(); return projet.get();
} }
@PostMapping("/Projets") @PostMapping("/Projets")
public Projets addProjets(@RequestBody Projets projet) { public Projets addProjets(@RequestBody Projets projet) {
return this.projetsRepository.save(projet); return this.projetsRepository.save(projet);
} }
@PostMapping("/Projets/{id}") @PostMapping("/Projets/{id}")
public Projets updateProjets( public Projets updateProjets(
@PathVariable Long id, @PathVariable Long id,
String nom_projet, String nom_projet,
byte[] logo, byte[] logo,
LocalDate date_creation, LocalDate date_creation,
String status_projet) { String status_projet) {
Optional<Projets> projet = this.projetsRepository.findById(id); Optional<Projets> projet = this.projetsRepository.findById(id);
if (projet.isEmpty()) { if (projet.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce projet n'existe pas"); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce projet n'existe pas");
} }
if (nom_projet != null) { if (nom_projet != null) {
projet.get().setNom_projet(nom_projet); projet.get().setNom_projet(nom_projet);
} }
if (logo != null) { if (logo != null) {
projet.get().setLogo(logo); projet.get().setLogo(logo);
} }
if (date_creation != null) { if (date_creation != null) {
projet.get().setDate_creation(date_creation); projet.get().setDate_creation(date_creation);
} }
if (status_projet != null) { if (status_projet != null) {
projet.get().setStatus_projet(status_projet); projet.get().setStatus_projet(status_projet);
} }
return this.projetsRepository.save(projet.get()); return this.projetsRepository.save(projet.get());
} }
} }

View File

@ -1,67 +1,69 @@
package enseirb.myinpulse.postgres_db.controller; package enseirb.myinpulse.service.database.old_controllers_to_convert_to_services;
import enseirb.myinpulse.postgres_db.model.RendezVous; import enseirb.myinpulse.model.RendezVous;
import enseirb.myinpulse.postgres_db.repository.RendezVousRepository; import enseirb.myinpulse.repository.RendezVousRepository;
import java.time.LocalDate;
import java.time.LocalTime; import org.springframework.beans.factory.annotation.Autowired;
import java.util.Optional; import org.springframework.http.HttpStatus;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus; import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException; import java.time.LocalDate;
import java.time.LocalTime;
@RestController import java.util.Optional;
public class RendezVousController {
@RestController
@Autowired RendezVousRepository rendezVousRepository; public class RendezVousController {
@GetMapping("/RendezVous") @Autowired RendezVousRepository rendezVousRepository;
@ResponseBody
public Iterable<RendezVous> allRendezVous() { @GetMapping("/RendezVous")
return this.rendezVousRepository.findAll(); @ResponseBody
} public Iterable<RendezVous> allRendezVous() {
return this.rendezVousRepository.findAll();
@GetMapping("/RendezVous/{id}") }
public RendezVous getRendezVousById(@PathVariable Long id) {
Optional<RendezVous> rendezVous = this.rendezVousRepository.findById(id); @GetMapping("/RendezVous/{id}")
if (rendezVous.isEmpty()) { public RendezVous getRendezVousById(@PathVariable Long id) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce rendez vous n'existe pas"); Optional<RendezVous> rendezVous = this.rendezVousRepository.findById(id);
} if (rendezVous.isEmpty()) {
return rendezVous.get(); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce rendez vous n'existe pas");
} }
return rendezVous.get();
@PostMapping("/RendezVous") }
public RendezVous addRendezVous(@RequestBody RendezVous rendezVous) {
return this.rendezVousRepository.save(rendezVous); @PostMapping("/RendezVous")
} public RendezVous addRendezVous(@RequestBody RendezVous rendezVous) {
return this.rendezVousRepository.save(rendezVous);
@PostMapping("/RendezVous/{id}") }
public RendezVous updateRendezVous(
@PathVariable Long id, @PostMapping("/RendezVous/{id}")
LocalDate date_rdv, public RendezVous updateRendezVous(
LocalTime heure_rdv, @PathVariable Long id,
LocalTime duree_rdv, LocalDate date_rdv,
String lieu_rdv, LocalTime heure_rdv,
String sujet_rdv) { LocalTime duree_rdv,
Optional<RendezVous> rendezVous = this.rendezVousRepository.findById(id); String lieu_rdv,
if (rendezVous.isEmpty()) { String sujet_rdv) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce rendez vous n'existe pas"); Optional<RendezVous> rendezVous = this.rendezVousRepository.findById(id);
} if (rendezVous.isEmpty()) {
if (date_rdv != null) { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce rendez vous n'existe pas");
rendezVous.get().setDate_rdv(date_rdv); }
} if (date_rdv != null) {
if (heure_rdv != null) { rendezVous.get().setDate_rdv(date_rdv);
rendezVous.get().setHeure_rdv(heure_rdv); }
} if (heure_rdv != null) {
if (duree_rdv != null) { rendezVous.get().setHeure_rdv(heure_rdv);
rendezVous.get().setDuree_rdv(duree_rdv); }
} if (duree_rdv != null) {
if (lieu_rdv != null) { rendezVous.get().setDuree_rdv(duree_rdv);
rendezVous.get().setLieu_rdv(lieu_rdv); }
} if (lieu_rdv != null) {
if (sujet_rdv != null) { rendezVous.get().setLieu_rdv(lieu_rdv);
rendezVous.get().setSujet_rdv(sujet_rdv); }
} if (sujet_rdv != null) {
return this.rendezVousRepository.save(rendezVous.get()); rendezVous.get().setSujet_rdv(sujet_rdv);
} }
} return this.rendezVousRepository.save(rendezVous.get());
}
}

View File

@ -1,60 +1,60 @@
package enseirb.myinpulse.postgres_db.controller; package enseirb.myinpulse.service.database.old_controllers_to_convert_to_services;
import enseirb.myinpulse.postgres_db.model.Sections; import enseirb.myinpulse.model.Sections;
import enseirb.myinpulse.postgres_db.repository.SectionsRepository; import enseirb.myinpulse.repository.SectionsRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Optional; import java.util.Optional;
@RestController @RestController
public class SectionsController { public class SectionsController {
@Autowired SectionsRepository sectionsRepository; @Autowired SectionsRepository sectionsRepository;
@GetMapping("/Sections") @GetMapping("/Sections")
@ResponseBody @ResponseBody
public Iterable<Sections> allSections() { public Iterable<Sections> allSections() {
return this.sectionsRepository.findAll(); return this.sectionsRepository.findAll();
} }
@GetMapping("/Sections/{id}") @GetMapping("/Sections/{id}")
public Sections getSectionsById(@PathVariable Long id) { public Sections getSectionsById(@PathVariable Long id) {
Optional<Sections> section = this.sectionsRepository.findById(id); Optional<Sections> section = this.sectionsRepository.findById(id);
if (section.isEmpty()) { if (section.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cette section n'extise pas"); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cette section n'extise pas");
} }
return section.get(); return section.get();
} }
@PostMapping("/Sections") @PostMapping("/Sections")
public Sections addSections(@RequestBody Sections sections) { public Sections addSections(@RequestBody Sections sections) {
return this.sectionsRepository.save(sections); return this.sectionsRepository.save(sections);
} }
@PostMapping("/Sections/{id}") @PostMapping("/Sections/{id}")
public Sections updateSections( public Sections updateSections(
@PathVariable Long id, @PathVariable Long id,
String titre, String titre,
String contenu_section, String contenu_section,
LocalDateTime date_modification) { LocalDateTime date_modification) {
Optional<Sections> section = this.sectionsRepository.findById(id); Optional<Sections> section = this.sectionsRepository.findById(id);
if (section.isEmpty()) { if (section.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cette section n'extise pas"); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cette section n'extise pas");
} }
if (titre != null) { if (titre != null) {
section.get().setTitre(titre); section.get().setTitre(titre);
} }
if (contenu_section != null) { if (contenu_section != null) {
section.get().setContenu_section(contenu_section); section.get().setContenu_section(contenu_section);
} }
if (date_modification != null) { if (date_modification != null) {
section.get().setDate_modification(date_modification); section.get().setDate_modification(date_modification);
} }
return this.sectionsRepository.save(section.get()); return this.sectionsRepository.save(section.get());
} }
} }

View File

@ -1,67 +1,67 @@
package enseirb.myinpulse.postgres_db.controller; package enseirb.myinpulse.service.database.old_controllers_to_convert_to_services;
import enseirb.myinpulse.postgres_db.model.Utilisateurs; import enseirb.myinpulse.model.Utilisateurs;
import enseirb.myinpulse.postgres_db.repository.UtilisateursRepository; import enseirb.myinpulse.repository.UtilisateursRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
import java.util.Optional; import java.util.Optional;
@RestController @RestController
public class UtilisateursController { public class UtilisateursController {
@Autowired UtilisateursRepository utilisateursRepository; @Autowired UtilisateursRepository utilisateursRepository;
@GetMapping("/Utilisateurs") @GetMapping("/Utilisateurs")
@ResponseBody @ResponseBody
public Iterable<Utilisateurs> allUtilisateurs() { public Iterable<Utilisateurs> allUtilisateurs() {
return this.utilisateursRepository.findAll(); return this.utilisateursRepository.findAll();
} }
@GetMapping("/Utilisateurs/{id}") @GetMapping("/Utilisateurs/{id}")
public Utilisateurs getUtilisateursById(@PathVariable Long id) { public Utilisateurs getUtilisateursById(@PathVariable Long id) {
Optional<Utilisateurs> utilisateur = utilisateursRepository.findById(id); Optional<Utilisateurs> utilisateur = utilisateursRepository.findById(id);
if (utilisateur.isEmpty()) { if (utilisateur.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cet utilisateur n'existe pas"); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cet utilisateur n'existe pas");
} }
return utilisateur.get(); return utilisateur.get();
} }
@PostMapping("/Utilisateurs") @PostMapping("/Utilisateurs")
public Utilisateurs addUtilisateurs(@RequestBody Utilisateurs utilisateurs) { public Utilisateurs addUtilisateurs(@RequestBody Utilisateurs utilisateurs) {
return this.utilisateursRepository.save(utilisateurs); return this.utilisateursRepository.save(utilisateurs);
} }
@PostMapping("/Utilisateurs/{id}") @PostMapping("/Utilisateurs/{id}")
public Utilisateurs updateUtilisateurs( public Utilisateurs updateUtilisateurs(
@PathVariable Long id, @PathVariable Long id,
String nom_utilisateur, String nom_utilisateur,
String prenom_utilisateur, String prenom_utilisateur,
String mail_principal, String mail_principal,
String mail_secondaire, String mail_secondaire,
String numero_telephone) { String numero_telephone) {
Optional<Utilisateurs> utilisateur = utilisateursRepository.findById(id); Optional<Utilisateurs> utilisateur = utilisateursRepository.findById(id);
if (utilisateur.isEmpty()) { if (utilisateur.isEmpty()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cet utilisateur n'existe pas"); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Cet utilisateur n'existe pas");
} }
if (nom_utilisateur != null) { if (nom_utilisateur != null) {
utilisateur.get().setNom_utilisateur(nom_utilisateur); utilisateur.get().setNom_utilisateur(nom_utilisateur);
} }
if (prenom_utilisateur != null) { if (prenom_utilisateur != null) {
utilisateur.get().setPrenom_utilisateur(prenom_utilisateur); utilisateur.get().setPrenom_utilisateur(prenom_utilisateur);
} }
if (mail_principal != null) { if (mail_principal != null) {
utilisateur.get().setMail_principal(mail_principal); utilisateur.get().setMail_principal(mail_principal);
} }
if (mail_secondaire != null) { if (mail_secondaire != null) {
utilisateur.get().setMail_secondaire(mail_secondaire); utilisateur.get().setMail_secondaire(mail_secondaire);
} }
if (numero_telephone != null) { if (numero_telephone != null) {
utilisateur.get().setNumero_telephone(numero_telephone); utilisateur.get().setNumero_telephone(numero_telephone);
} }
return this.utilisateursRepository.save(utilisateur.get()); return this.utilisateursRepository.save(utilisateur.get());
} }
} }