feat: entrepreneur api and api service

This commit is contained in:
Théo Le Lez 2025-02-26 14:51:02 +01:00
parent e66fa33577
commit dd5ca2cbd7
5 changed files with 176 additions and 25 deletions

View File

@ -1,6 +1,6 @@
package enseirb.myinpulse.controller; package enseirb.myinpulse.controller;
import enseirb.myinpulse.model.LCSection; import enseirb.myinpulse.model.SectionCell;
import enseirb.myinpulse.model.Project; import enseirb.myinpulse.model.Project;
import enseirb.myinpulse.service.EntrepreneurApiService; import enseirb.myinpulse.service.EntrepreneurApiService;
@ -29,12 +29,12 @@ public class EntrepreneurApi {
* @return status code * @return status code
*/ */
@PutMapping("/entrepreneur/lcsection/modify/{sectionId}") @PutMapping("/entrepreneur/lcsection/modify/{sectionId}")
public void editLCSection( public void editSectionCell(
@PathVariable String sectionId, @PathVariable Long sectionId,
@RequestBody LCSection section, @RequestBody SectionCell sectionCell,
@AuthenticationPrincipal Jwt principal) { @AuthenticationPrincipal Jwt principal) {
entrepreneurApiService.editLCSection( entrepreneurApiService.editSectionCell(
sectionId, section, principal.getClaimAsString("email")); sectionId, sectionCell, principal.getClaimAsString("email"));
} }
/** /**
@ -45,9 +45,9 @@ public class EntrepreneurApi {
* @return status code * @return status code
*/ */
@DeleteMapping("/entrepreneur/lcsection/remove/{sectionId}") @DeleteMapping("/entrepreneur/lcsection/remove/{sectionId}")
public void removeLCSection( public void removeSectionCell(
@PathVariable String sectionId, @AuthenticationPrincipal Jwt principal) { @PathVariable Long sectionId, @AuthenticationPrincipal Jwt principal) {
entrepreneurApiService.removeLCSection(sectionId, principal.getClaimAsString("email")); entrepreneurApiService.removeSectionCell(sectionId, principal.getClaimAsString("email"));
} }
/** /**
@ -57,13 +57,10 @@ public class EntrepreneurApi {
* *
* @return status code * @return status code
*/ */
@PostMapping("/entrepreneur/lcsection/add/{sectionId}") @PostMapping("/entrepreneur/lcsection/add") // remove id from doc aswell
public void addLCSection( public void addLCSection(
@PathVariable String sectionId, @RequestBody SectionCell sectionCell, @AuthenticationPrincipal Jwt principal) {
@RequestBody LCSection section, entrepreneurApiService.addSectionCell(sectionCell, principal.getClaimAsString("email"));
@AuthenticationPrincipal Jwt principal) {
entrepreneurApiService.addLCSection(
sectionId, section, principal.getClaimAsString("email"));
} }
/** /**

View File

@ -33,7 +33,7 @@ public class Annotation {
return comment; return comment;
} }
public void setCommentary(String comment) { public void setComment(String comment) {
this.comment = comment; this.comment = comment;
} }
} }

View File

@ -1,29 +1,66 @@
package enseirb.myinpulse.service; package enseirb.myinpulse.service;
import enseirb.myinpulse.model.LCSection;
import enseirb.myinpulse.model.Project; import enseirb.myinpulse.model.Project;
import enseirb.myinpulse.model.SectionCell;
import enseirb.myinpulse.service.database.ProjectService;
import enseirb.myinpulse.service.database.SectionCellService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
@Service @Service
public class EntrepreneurApiService { public class EntrepreneurApiService {
public void editLCSection(String sectionId, LCSection section, String mail) { private final SectionCellService sectionCellService;
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); private final ProjectService projectService;
@Autowired
EntrepreneurApiService(SectionCellService sectionCellService, ProjectService projectService) {
this.sectionCellService = sectionCellService;
this.projectService = projectService;
} }
public void removeLCSection(String sectionId, String mail) { public void editSectionCell(Long sectionCellId, SectionCell sectionCell, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); SectionCell editSectionCell = sectionCellService.getSectionCellById(sectionCellId);
if (editSectionCell == null) {
System.err.println("Trying to edit unknown section cell");
throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cette cellule de section n'existe pas");
}
sectionCellService.updateSectionCell(
sectionCellId,
sectionCell.getTitle(),
sectionCell.getContentSectionCell(),
sectionCell.getModificationDate());
} }
public void addLCSection(String sectionId, LCSection section, String mail) { public void removeSectionCell(Long sectionCellId, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); SectionCell editSectionCell = sectionCellService.getSectionCellById(sectionCellId);
if (editSectionCell == null) {
System.err.println("Trying to remove unknown section cell");
throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cette cellule de section n'existe pas");
}
sectionCellService.removeSectionCellById(sectionCellId);
}
public void addSectionCell(SectionCell sectionCell, String mail) {
if (sectionCell == null) {
System.err.println("Trying to create an empty section cell");
throw new ResponseStatusException(
HttpStatus.BAD_REQUEST, "La cellule de section fournie est vide");
}
sectionCellService.addNewSectionCell(sectionCell);
} }
public void requestNewProject(Project project, String mail) { public void requestNewProject(Project project, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); if (project == null) {
System.err.println("Trying to request the creation of a null project");
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Le projet fourni est vide");
}
project.setProjectStatus("PENDING");
projectService.addNewProject(project);
} }
} }

View File

@ -0,0 +1,54 @@
package enseirb.myinpulse.service.database;
import enseirb.myinpulse.model.Annotation;
import enseirb.myinpulse.repository.AnnotationRepository;
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 AnnotationService {
private final AnnotationRepository annotationRepository;
@Autowired
AnnotationService(AnnotationRepository annotationRepository) {
this.annotationRepository = annotationRepository;
}
public Iterable<Annotation> getAllAnnotations() {
return annotationRepository.findAll();
}
public Annotation getAnnotationById(Long id) {
Optional<Annotation> annotation = annotationRepository.findById(id);
if (annotation.isEmpty()) {
throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cette annotation n'existe pas");
}
return annotation.get();
}
public Annotation addNewAnnotation(Annotation annotation) {
return this.annotationRepository.save(annotation);
}
public void deleteAnnotationById(Long id) {
this.annotationRepository.deleteById(id);
}
public Annotation updateAnnotation(Long id, String comment) {
Optional<Annotation> annotation = annotationRepository.findById(id);
if (annotation.isEmpty()) {
return null;
}
if (comment != null) {
annotation.get().setComment(comment);
}
return this.annotationRepository.save(annotation.get());
}
}

View File

@ -0,0 +1,63 @@
package enseirb.myinpulse.service.database;
import enseirb.myinpulse.model.SectionCell;
import enseirb.myinpulse.repository.SectionCellRepository;
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.util.Optional;
@Service
public class SectionCellService {
private final SectionCellRepository sectionCellRepository;
@Autowired
SectionCellService(SectionCellRepository sectionCellRepository) {
this.sectionCellRepository = sectionCellRepository;
}
public Iterable<SectionCell> getAllSectionCells() {
return this.sectionCellRepository.findAll();
}
public SectionCell getSectionCellById(Long id) {
Optional<SectionCell> sectionCell = this.sectionCellRepository.findById(id);
if (sectionCell.isEmpty()) {
throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cette cellule de section n'existe pas");
}
return sectionCell.get();
}
public SectionCell addNewSectionCell(SectionCell sectionCell) {
return this.sectionCellRepository.save(sectionCell);
}
public void removeSectionCellById(Long id) {
this.sectionCellRepository.deleteById(id);
}
public SectionCell updateSectionCell(
Long id, String title, String contentSectionCell, LocalDateTime modificationDate) {
Optional<SectionCell> sectionCell = this.sectionCellRepository.findById(id);
if (sectionCell.isEmpty()) {
throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Cette cellule de section n'existe pas");
}
if (title != null) {
sectionCell.get().setTitle(title);
}
if (contentSectionCell != null) {
sectionCell.get().setContentSectionCell(contentSectionCell);
}
if (modificationDate != null) {
sectionCell.get().setModificationDate(modificationDate);
}
return this.sectionCellRepository.save(sectionCell.get());
}
}