diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelAppointment.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelAppointment.java deleted file mode 100644 index f29a2eb..0000000 --- a/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelAppointment.java +++ /dev/null @@ -1,8 +0,0 @@ -package enseirb.myinpulse.model; - -public class DelAppointment { - int validated; - int[] akserId; - int[] destId; - String date; // TODO: date type ? -} diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelProject.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelProject.java deleted file mode 100644 index 25a21f9..0000000 --- a/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelProject.java +++ /dev/null @@ -1,7 +0,0 @@ -package enseirb.myinpulse.model; - -public class DelProject { - int projectId; - String projectName; - String projectDescription; -} diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelReport.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelReport.java deleted file mode 100644 index bbdbae8..0000000 --- a/MyINPulse-back/src/main/java/enseirb/myinpulse/model/DelReport.java +++ /dev/null @@ -1,6 +0,0 @@ -package enseirb.myinpulse.model; - -public class DelReport { - int projectId; - String reportContent; -} diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/model/LCSection.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/model/LCSection.java deleted file mode 100644 index 4fd6ec4..0000000 --- a/MyINPulse-back/src/main/java/enseirb/myinpulse/model/LCSection.java +++ /dev/null @@ -1,7 +0,0 @@ -package enseirb.myinpulse.model; - -// 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: btw why does a LC section have an administrator ? - -public class LCSection {} diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/repository/SectionCellRepository.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/repository/SectionCellRepository.java index 674c549..4ad5b51 100644 --- a/MyINPulse-back/src/main/java/enseirb/myinpulse/repository/SectionCellRepository.java +++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/repository/SectionCellRepository.java @@ -6,8 +6,13 @@ import enseirb.myinpulse.model.SectionCell; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; +import java.time.LocalDateTime; + @RepositoryRestResource public interface SectionCellRepository extends JpaRepository { Iterable findByProjectSectionCellAndSectionId(Project project, long sectionId); + + Iterable findByProjectSectionCellAndSectionIdAndModificationDateBefore( + Project project, long sectionId, LocalDateTime date); } diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/service/EntrepreneurApiService.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/service/EntrepreneurApiService.java index 4e04f88..1bab1a1 100644 --- a/MyINPulse-back/src/main/java/enseirb/myinpulse/service/EntrepreneurApiService.java +++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/service/EntrepreneurApiService.java @@ -1,13 +1,9 @@ package enseirb.myinpulse.service; -import enseirb.myinpulse.model.Entrepreneur; import enseirb.myinpulse.model.Project; import enseirb.myinpulse.model.SectionCell; -import enseirb.myinpulse.model.User; -import enseirb.myinpulse.service.database.EntrepreneurService; import enseirb.myinpulse.service.database.ProjectService; import enseirb.myinpulse.service.database.SectionCellService; -import enseirb.myinpulse.service.database.UserService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -23,28 +19,19 @@ public class EntrepreneurApiService { private final SectionCellService sectionCellService; private final ProjectService projectService; - private final UserService userService; - private final EntrepreneurService entrepreneurService; + private final UtilsService utilsService; @Autowired EntrepreneurApiService( SectionCellService sectionCellService, ProjectService projectService, - UserService userService, - EntrepreneurService entrepreneurService) { + UtilsService utilsService) { this.sectionCellService = sectionCellService; this.projectService = projectService; - this.userService = userService; - this.entrepreneurService = entrepreneurService; + this.utilsService = utilsService; } - // Create utils file ? - Boolean isAllowedToCheckProject(String mail, long projectId) { - User user = this.userService.getUserByEmail(mail); - Entrepreneur entrepreneur = this.entrepreneurService.getEntrepreneurById(user.getIdUser()); - Project project = this.projectService.getProjectById(projectId); - return entrepreneur.getProjectParticipation() == project; - } + public void editSectionCell(Long sectionCellId, SectionCell sectionCell, String mail) { SectionCell editSectionCell = sectionCellService.getSectionCellById(sectionCellId); @@ -53,7 +40,7 @@ public class EntrepreneurApiService { throw new ResponseStatusException( HttpStatus.NOT_FOUND, "Cette cellule de section n'existe pas"); } - if (!isAllowedToCheckProject(mail, this.sectionCellService.getProjectId(sectionCellId))) { + if (!utilsService.isAllowedToCheckProject(mail, this.sectionCellService.getProjectId(sectionCellId))) { logger.warn( "User {} tried to edit section cells {} of the project {} but is not allowed to.", mail, @@ -81,7 +68,7 @@ public class EntrepreneurApiService { throw new ResponseStatusException( HttpStatus.NOT_FOUND, "Cette cellule de section n'existe pas"); } - if (!isAllowedToCheckProject(mail, this.sectionCellService.getProjectId(sectionCellId))) { + if (!utilsService.isAllowedToCheckProject(mail, this.sectionCellService.getProjectId(sectionCellId))) { logger.warn( "User {} tried to remove section cells {} of the project {} but is not allowed to.", mail, @@ -104,7 +91,7 @@ public class EntrepreneurApiService { throw new ResponseStatusException( HttpStatus.BAD_REQUEST, "La cellule de section fournie est vide"); } - if (!isAllowedToCheckProject( + if (!utilsService.isAllowedToCheckProject( mail, this.sectionCellService.getProjectId(sectionCell.getIdSectionCell()))) { logger.warn( "User {} tried to add a section cell to the project {} but is not allowed to.", diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/service/SharedApiService.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/service/SharedApiService.java index e5983e0..98cd05b 100644 --- a/MyINPulse-back/src/main/java/enseirb/myinpulse/service/SharedApiService.java +++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/service/SharedApiService.java @@ -10,6 +10,8 @@ import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.web.server.ResponseStatusException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -18,57 +20,32 @@ public class SharedApiService { protected static final Logger logger = LogManager.getLogger(); - private final AdministratorService administratorService; - private final UserService userService; private final ProjectService projectService; private final EntrepreneurService entrepreneurService; private final SectionCellService sectionCellService; private final AppointmentService appointmentService; + private final UtilsService utilsService; + @Autowired SharedApiService( - AdministratorService administratorService, - UserService userService, ProjectService projectService, EntrepreneurService entrepreneurService, SectionCellService sectionCellService, - AppointmentService appointmentService) { - this.administratorService = administratorService; - this.userService = userService; + AppointmentService appointmentService, + UtilsService utilsService) { this.projectService = projectService; this.entrepreneurService = entrepreneurService; this.sectionCellService = sectionCellService; this.appointmentService = appointmentService; - } - - // TODO: test - Boolean isAnAdmin(String mail) { - try { - long userId = this.userService.getUserByEmail(mail).getIdUser(); - Administrator a = this.administratorService.getAdministratorById(userId); - return true; - } catch (ResponseStatusException e) { - logger.info(e); - return false; - } - } - - // TODO: test - Boolean isAllowedToCheckProject(String mail, long projectId) { - if (isAnAdmin(mail)) { - return true; - } - User user = this.userService.getUserByEmail(mail); - Entrepreneur entrepreneur = this.entrepreneurService.getEntrepreneurById(user.getIdUser()); - Project project = this.projectService.getProjectById(projectId); - return entrepreneur.getProjectParticipation() == project; + this.utilsService = utilsService; } // TODO filter this with date public Iterable getSectionCells( long projectId, long sectionId, String date, String mail) { - if (!isAllowedToCheckProject(mail, projectId)) { + if (!utilsService.isAllowedToCheckProject(mail, projectId)) { logger.warn( "User {} tried to check section cells of the project {} but is not allowed to.", mail, @@ -76,13 +53,18 @@ public class SharedApiService { throw new ResponseStatusException( HttpStatus.UNAUTHORIZED, "You're not allowed to check this project"); } + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + LocalDateTime dateTime = LocalDateTime.parse(date, formatter); + Project project = this.projectService.getProjectById(projectId); - return this.sectionCellService.getSectionCellsByProject(project, sectionId); + return this.sectionCellService.getSectionCellsByProjectAndSectionIdBeforeDate( + project, sectionId, dateTime); } // TODO: test public Iterable getEntrepreneursByProjectId(long projectId, String mail) { - if (!isAllowedToCheckProject(mail, projectId)) { + if (!utilsService.isAllowedToCheckProject(mail, projectId)) { logger.warn( "User {} tried to check the member of the project {} but is not allowed to.", mail, @@ -94,9 +76,9 @@ public class SharedApiService { return this.entrepreneurService.GetEntrepreneurByProject(project); } - // TODO: test, protect via email + // TODO: test public Administrator getAdminByProjectId(long projectId, String mail) { - if (!isAllowedToCheckProject(mail, projectId)) { + if (!utilsService.isAllowedToCheckProject(mail, projectId)) { logger.warn( "User {} tried to check the admin of the project {} but is not allowed to.", mail, @@ -110,7 +92,7 @@ public class SharedApiService { // TODO public Iterable getAppointmentsByProjectId(long projectId, String mail) { - if (!isAllowedToCheckProject(mail, projectId)) { + if (!utilsService.isAllowedToCheckProject(mail, projectId)) { logger.warn( "User {} tried to check the appointments related to the project {} but is not allowed to.", mail, @@ -145,7 +127,7 @@ public class SharedApiService { .getFirst() .getProjectSectionCell() .getIdProject(); - if (!isAllowedToCheckProject(mail, projectId)) { + if (!utilsService.isAllowedToCheckProject(mail, projectId)) { logger.warn( "User {} tried to generate the PDF report {} related to the appointment {} but is not allowed to.", mail, diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/service/UtilsService.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/service/UtilsService.java new file mode 100644 index 0000000..a49e82e --- /dev/null +++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/service/UtilsService.java @@ -0,0 +1,62 @@ +package enseirb.myinpulse.service; + +import enseirb.myinpulse.model.Administrator; +import enseirb.myinpulse.model.Entrepreneur; +import enseirb.myinpulse.model.Project; +import enseirb.myinpulse.model.User; +import enseirb.myinpulse.service.database.AdministratorService; +import enseirb.myinpulse.service.database.EntrepreneurService; +import enseirb.myinpulse.service.database.ProjectService; +import enseirb.myinpulse.service.database.UserService; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.server.ResponseStatusException; + +@Service +public class UtilsService { + + protected static final Logger logger = LogManager.getLogger(); + + private final UserService userService; + private final ProjectService projectService; + private final EntrepreneurService entrepreneurService; + private final AdministratorService administratorService; + + @Autowired + UtilsService( + ProjectService projectService, + UserService userService, + EntrepreneurService entrepreneurService, + AdministratorService administratorService) { + this.userService = userService; + this.projectService = projectService; + this.entrepreneurService = entrepreneurService; + this.administratorService = administratorService; + } + + // TODO: test? + public Boolean isAllowedToCheckProject(String mail, long projectId) { + if (isAnAdmin(mail)) { + return true; + } + User user = this.userService.getUserByEmail(mail); + Entrepreneur entrepreneur = this.entrepreneurService.getEntrepreneurById(user.getIdUser()); + Project project = this.projectService.getProjectById(projectId); + return entrepreneur.getProjectParticipation() == project; + } + + // TODO: test + Boolean isAnAdmin(String mail) { + try { + long userId = this.userService.getUserByEmail(mail).getIdUser(); + Administrator a = this.administratorService.getAdministratorById(userId); + return true; + } catch (ResponseStatusException e) { + logger.info(e); + return false; + } + } +} diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/service/database/SectionCellService.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/service/database/SectionCellService.java index 5a70bee..59c7397 100644 --- a/MyINPulse-back/src/main/java/enseirb/myinpulse/service/database/SectionCellService.java +++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/service/database/SectionCellService.java @@ -84,4 +84,10 @@ public class SectionCellService { SectionCell sectionCell = getSectionCellById(sectionCellId); return sectionCell.getAppointmentSectionCell(); } + + public Iterable getSectionCellsByProjectAndSectionIdBeforeDate( + Project project, long sectionId, LocalDateTime date) { + return sectionCellRepository.findByProjectSectionCellAndSectionIdAndModificationDateBefore( + project, sectionId, date); + } }