154 lines
6.3 KiB
Java
154 lines
6.3 KiB
Java
package enseirb.myinpulse.service;
|
|
|
|
import enseirb.myinpulse.model.*;
|
|
import enseirb.myinpulse.service.database.*;
|
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
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.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class SharedApiService {
|
|
|
|
protected static final Logger logger = LogManager.getLogger();
|
|
|
|
private final ProjectService projectService;
|
|
private final EntrepreneurService entrepreneurService;
|
|
private final SectionCellService sectionCellService;
|
|
private final AppointmentService appointmentService;
|
|
|
|
private final UtilsService utilsService;
|
|
|
|
@Autowired
|
|
SharedApiService(
|
|
ProjectService projectService,
|
|
EntrepreneurService entrepreneurService,
|
|
SectionCellService sectionCellService,
|
|
AppointmentService appointmentService,
|
|
UtilsService utilsService) {
|
|
this.projectService = projectService;
|
|
this.entrepreneurService = entrepreneurService;
|
|
this.sectionCellService = sectionCellService;
|
|
this.appointmentService = appointmentService;
|
|
this.utilsService = utilsService;
|
|
}
|
|
|
|
// TODO filter this with date
|
|
public Iterable<SectionCell> getSectionCells(
|
|
long projectId, long sectionId, String date, String mail) {
|
|
|
|
if (!utilsService.isAllowedToCheckProject(mail, projectId)) {
|
|
logger.warn(
|
|
"User {} tried to check section cells of the project {} but is not allowed to.",
|
|
mail,
|
|
projectId);
|
|
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.getSectionCellsByProjectAndSectionIdBeforeDate(
|
|
project, sectionId, dateTime);
|
|
}
|
|
|
|
// TODO: test
|
|
public Iterable<Entrepreneur> getEntrepreneursByProjectId(long projectId, String mail) {
|
|
if (!utilsService.isAllowedToCheckProject(mail, projectId)) {
|
|
logger.warn(
|
|
"User {} tried to check the member of the project {} but is not allowed to.",
|
|
mail,
|
|
projectId);
|
|
throw new ResponseStatusException(
|
|
HttpStatus.UNAUTHORIZED, "You're not allowed to check this project");
|
|
}
|
|
Project project = this.projectService.getProjectById(projectId);
|
|
return this.entrepreneurService.GetEntrepreneurByProject(project);
|
|
}
|
|
|
|
// TODO: test
|
|
public Administrator getAdminByProjectId(long projectId, String mail) {
|
|
if (!utilsService.isAllowedToCheckProject(mail, projectId)) {
|
|
logger.warn(
|
|
"User {} tried to check the admin of the project {} but is not allowed to.",
|
|
mail,
|
|
projectId);
|
|
throw new ResponseStatusException(
|
|
HttpStatus.UNAUTHORIZED, "You're not allowed to check this project");
|
|
}
|
|
Project project = this.projectService.getProjectById(projectId);
|
|
return project.getAdministrator();
|
|
}
|
|
|
|
// TODO
|
|
public Iterable<Appointment> getAppointmentsByProjectId(long projectId, String mail) {
|
|
if (!utilsService.isAllowedToCheckProject(mail, projectId)) {
|
|
logger.warn(
|
|
"User {} tried to check the appointments related to the project {} but is not allowed to.",
|
|
mail,
|
|
projectId);
|
|
throw new ResponseStatusException(
|
|
HttpStatus.UNAUTHORIZED, "You're not allowed to check this project");
|
|
}
|
|
logger.info(
|
|
"User {} tried to check the appointments related to the project {}",
|
|
mail,
|
|
projectId);
|
|
Iterable<SectionCell> sectionCells =
|
|
this.sectionCellService.getSectionCellsByProject(
|
|
projectService.getProjectById(projectId),
|
|
2L); // sectionId useless in this function ?
|
|
List<Appointment> appointments = new ArrayList<Appointment>();
|
|
sectionCells.forEach(
|
|
sectionCell -> {
|
|
appointments.addAll(
|
|
this.sectionCellService.getAppointmentsBySectionCellId(
|
|
sectionCell.getIdSectionCell()));
|
|
});
|
|
return appointments;
|
|
}
|
|
|
|
// TODO
|
|
public void getPDFReport(long appointmentId, String mail) {
|
|
long projectId =
|
|
this.appointmentService
|
|
.getAppointmentById(appointmentId)
|
|
.getAppointmentListSectionCell()
|
|
.getFirst()
|
|
.getProjectSectionCell()
|
|
.getIdProject();
|
|
if (!utilsService.isAllowedToCheckProject(mail, projectId)) {
|
|
logger.warn(
|
|
"User {} tried to generate the PDF report {} related to the appointment {} but is not allowed to.",
|
|
mail,
|
|
this.appointmentService
|
|
.getAppointmentById(appointmentId)
|
|
.getAppointmentReport()
|
|
.getIdReport(),
|
|
appointmentId);
|
|
throw new ResponseStatusException(
|
|
HttpStatus.UNAUTHORIZED, "You're not allowed to check this project");
|
|
}
|
|
/* return this.appointmentService
|
|
.getAppointmentById(appointmentId)
|
|
.getAppointmentReport().getReportContent(); */
|
|
// generate pdf from this string, and format it to be decent looking
|
|
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
|
|
}
|
|
|
|
// TODO
|
|
public void createAppointmentRequest(Appointment appointment, String mail) {
|
|
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
|
|
}
|
|
}
|