diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/StorageController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/StorageController.java index 2a36657..be58f17 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/StorageController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/StorageController.java @@ -23,7 +23,7 @@ public class StorageController { @PostMapping("/upload/{fileType}") public ResponseEntity handleFileUpload(@RequestParam("file") MultipartFile file, @PathVariable FileType fileType) { - String path = storageServ.store(file,fileType); + String path = storageServ.store(file,fileType, null, null); if (path == null) return new ResponseEntity<>("issue with the file storage", HttpStatus.BAD_REQUEST); diff --git a/backend/src/main/java/ovh/herisson/Clyde/Exceptions/CouldntDeleteFileException.java b/backend/src/main/java/ovh/herisson/Clyde/Exceptions/CouldntDeleteFileException.java new file mode 100644 index 0000000..ce0d637 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Exceptions/CouldntDeleteFileException.java @@ -0,0 +1,4 @@ +package ovh.herisson.Clyde.Exceptions; + +public class CouldntDeleteFileException extends Exception{ +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/StorageService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/StorageService.java index 77dff70..eeea9e3 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/StorageService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/StorageService.java @@ -3,11 +3,14 @@ package ovh.herisson.Clyde.Services; import org.springframework.core.io.UrlResource; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import ovh.herisson.Clyde.Exceptions.CouldntDeleteFileException; import ovh.herisson.Clyde.Repositories.FileRepository; -import ovh.herisson.Clyde.Tables.FileType; -import ovh.herisson.Clyde.Tables.StorageFile; +import ovh.herisson.Clyde.Tables.*; + +import java.io.File; import java.io.IOException; import org.springframework.core.io.Resource; + import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -27,7 +30,7 @@ public class StorageService { } - public String store(MultipartFile file, FileType fileType) { + public String store(MultipartFile file, FileType fileType, User user, InscriptionRequest request) { if (file.getOriginalFilename().isEmpty()){return null;} @@ -49,8 +52,20 @@ public class StorageService { String url = this.rootLocation.resolve(Paths.get(Objects.requireNonNull(stringUuid))) .normalize().toString(); - fileRepo.save(new StorageFile(file.getName(),url, fileType)); + fileRepo.save(new StorageFile(file.getName(),url, fileType, user, request)); return url; } + + public void delete(StorageFile file) throws CouldntDeleteFileException { + File f = new File(file.getUrl()); + //Delete le fichier + try{ + f.delete(); + } catch (Exception e) { + throw new CouldntDeleteFileException(); + } + //Delete l'entité + fileRepo.delete(file); + } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java index 2e5bf0d..fa853b1 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java @@ -4,7 +4,10 @@ import jakarta.persistence.*; import java.util.Date; + +@Entity public class InscriptionRequest { + @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String firstName; diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java index 8a56f88..0a4db64 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java @@ -20,7 +20,7 @@ public class ReinscriptionRequest { //Permet de différencier les demandes de changement et une réinscription dans le même cursus //Pour la réinscription on va le mettre a 0 - private boolean type; + private boolean type = false; public ReinscriptionRequest(){} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/StorageFile.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/StorageFile.java index a96d0ec..4124231 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/StorageFile.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/StorageFile.java @@ -1,9 +1,6 @@ package ovh.herisson.Clyde.Tables; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; @Entity @@ -20,10 +17,21 @@ public class StorageFile { private FileType fileType; - public StorageFile(String name, String url, FileType fileType){ + //Pour lier un user ou une demande d'inscription au fichier + @ManyToOne + @JoinColumn(name = "user") + private User user; + + @ManyToOne + @JoinColumn(name = "inscriptionrequest") + private InscriptionRequest request; + + public StorageFile(String name, String url, FileType fileType, User user, InscriptionRequest request){ this.name = name; this.url = url; this.fileType = fileType; + this.user = user; + this.request = request; } public StorageFile(){} @@ -60,4 +68,20 @@ public class StorageFile { public void setFileType(FileType fileType) { this.fileType = fileType; } + + public void setUser(User user) { + this.user = user; + } + + public User getUser() { + return user; + } + + public void setRequest(InscriptionRequest request) { + this.request = request; + } + + public InscriptionRequest getRequest() { + return request; + } }