107 lines
4.1 KiB
Java
107 lines
4.1 KiB
Java
package enseirb.myinpulse.service.database;
|
|
|
|
import enseirb.myinpulse.model.Administrator;
|
|
import enseirb.myinpulse.model.Annotation;
|
|
import enseirb.myinpulse.model.MakeAppointment;
|
|
import enseirb.myinpulse.model.Project;
|
|
import enseirb.myinpulse.repository.AdministratorRepository;
|
|
|
|
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.util.Optional;
|
|
|
|
@Service
|
|
public class AdministratorService {
|
|
protected static final Logger logger = LogManager.getLogger();
|
|
|
|
private final AdministratorRepository administratorRepository;
|
|
|
|
@Autowired
|
|
AdministratorService(AdministratorRepository administratorRepository) {
|
|
this.administratorRepository = administratorRepository;
|
|
}
|
|
|
|
public Iterable<Administrator> allAdministrators() {
|
|
return this.administratorRepository.findAll();
|
|
}
|
|
|
|
public Administrator getAdministratorById(long id) {
|
|
Optional<Administrator> administrator = this.administratorRepository.findById(id);
|
|
if (administrator.isEmpty()) {
|
|
logger.error("No administrator found with id {}", id);
|
|
throw new ResponseStatusException(
|
|
HttpStatus.NOT_FOUND, "Cet administrateur n'existe pas");
|
|
}
|
|
return administrator.get();
|
|
}
|
|
|
|
public Administrator getAdministratorByPrimaryMain(String primaryMail) {
|
|
Optional<Administrator> administrator =
|
|
this.administratorRepository.findByPrimaryMail(primaryMail);
|
|
if (administrator.isEmpty()) {
|
|
logger.error("No administrator found with the mail {}", primaryMail);
|
|
throw new ResponseStatusException(
|
|
HttpStatus.NOT_FOUND, "Cet administrateur n'existe pas");
|
|
}
|
|
return administrator.get();
|
|
}
|
|
|
|
public Administrator addAdministrator(Administrator administrator) {
|
|
return this.administratorRepository.save(administrator);
|
|
}
|
|
|
|
public void updateAdministratorListProject(long idAdministrator, Project project) {
|
|
Administrator administrator = getAdministratorById(idAdministrator);
|
|
administrator.updateListProject(project);
|
|
this.administratorRepository.save(administrator);
|
|
}
|
|
|
|
public void updateAdministratorListAnnotation(long idAdministrator, Annotation annotation) {
|
|
Administrator administrator = getAdministratorById(idAdministrator);
|
|
administrator.updateListAnnotation(annotation);
|
|
this.administratorRepository.save(administrator);
|
|
}
|
|
|
|
public void updateAdministratorMakeAppointment(
|
|
long idAdministrator, MakeAppointment makeAppointment) {
|
|
Administrator administrator = getAdministratorById(idAdministrator);
|
|
administrator.setMakeAppointment(makeAppointment);
|
|
this.administratorRepository.save(administrator);
|
|
}
|
|
|
|
public Administrator updateAdministrator(
|
|
Long idAdministrator,
|
|
Project project,
|
|
Annotation annotation,
|
|
MakeAppointment makeAppointment) {
|
|
Optional<Administrator> administrator = administratorRepository.findById(idAdministrator);
|
|
if (administrator.isEmpty()) {
|
|
logger.error(
|
|
"updateAdministrator : No administrator found with id {}", idAdministrator);
|
|
throw new ResponseStatusException(
|
|
HttpStatus.NOT_FOUND, "Cet administrateur n'existe pas");
|
|
}
|
|
if (project != null) {
|
|
administrator.get().updateListProject(project);
|
|
}
|
|
if (annotation != null) {
|
|
administrator.get().updateListAnnotation(annotation);
|
|
}
|
|
if (makeAppointment != null) {
|
|
administrator.get().setMakeAppointment(makeAppointment);
|
|
}
|
|
return this.administratorRepository.save(administrator.get());
|
|
}
|
|
|
|
/*
|
|
public Administrator getAdministratorByProject(Project project) {
|
|
r
|
|
}
|
|
*/
|
|
}
|