Leo/Backend #95
@ -23,7 +23,7 @@ public class StorageController {
 | 
				
			|||||||
    @PostMapping("/upload/{fileType}")
 | 
					    @PostMapping("/upload/{fileType}")
 | 
				
			||||||
    public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file, @PathVariable FileType fileType) {
 | 
					    public ResponseEntity<String> 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);
 | 
					        if (path == null) return new ResponseEntity<>("issue with the file storage", HttpStatus.BAD_REQUEST);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					package ovh.herisson.Clyde.Exceptions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class CouldntDeleteFileException extends Exception{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -3,11 +3,14 @@ package ovh.herisson.Clyde.Services;
 | 
				
			|||||||
import org.springframework.core.io.UrlResource;
 | 
					import org.springframework.core.io.UrlResource;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
import org.springframework.web.multipart.MultipartFile;
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					import ovh.herisson.Clyde.Exceptions.CouldntDeleteFileException;
 | 
				
			||||||
import ovh.herisson.Clyde.Repositories.FileRepository;
 | 
					import ovh.herisson.Clyde.Repositories.FileRepository;
 | 
				
			||||||
import ovh.herisson.Clyde.Tables.FileType;
 | 
					import ovh.herisson.Clyde.Tables.*;
 | 
				
			||||||
import ovh.herisson.Clyde.Tables.StorageFile;
 | 
					
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import org.springframework.core.io.Resource;
 | 
					import org.springframework.core.io.Resource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.nio.file.Files;
 | 
					import java.nio.file.Files;
 | 
				
			||||||
import java.nio.file.Path;
 | 
					import java.nio.file.Path;
 | 
				
			||||||
import java.nio.file.Paths;
 | 
					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;}
 | 
					        if (file.getOriginalFilename().isEmpty()){return null;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -49,8 +52,20 @@ public class StorageService {
 | 
				
			|||||||
        String url = this.rootLocation.resolve(Paths.get(Objects.requireNonNull(stringUuid)))
 | 
					        String url = this.rootLocation.resolve(Paths.get(Objects.requireNonNull(stringUuid)))
 | 
				
			||||||
                .normalize().toString();
 | 
					                .normalize().toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        fileRepo.save(new StorageFile(file.getName(),url, fileType));
 | 
					        fileRepo.save(new StorageFile(file.getName(),url, fileType, user, request));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return url;
 | 
					        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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -4,7 +4,10 @@ import jakarta.persistence.*;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Entity
 | 
				
			||||||
public class InscriptionRequest {
 | 
					public class InscriptionRequest {
 | 
				
			||||||
 | 
					    @Id
 | 
				
			||||||
    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
					    @GeneratedValue(strategy = GenerationType.AUTO)
 | 
				
			||||||
    private int id;
 | 
					    private int id;
 | 
				
			||||||
    private String firstName;
 | 
					    private String firstName;
 | 
				
			||||||
 | 
				
			|||||||
@ -20,7 +20,7 @@ public class ReinscriptionRequest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    //Permet de différencier les demandes de changement et une réinscription dans le même cursus
 | 
					    //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
 | 
					    //Pour la réinscription on va le mettre a 0
 | 
				
			||||||
    private boolean type;
 | 
					    private boolean type = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ReinscriptionRequest(){}
 | 
					    public ReinscriptionRequest(){}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,6 @@
 | 
				
			|||||||
package ovh.herisson.Clyde.Tables;
 | 
					package ovh.herisson.Clyde.Tables;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import jakarta.persistence.Entity;
 | 
					import jakarta.persistence.*;
 | 
				
			||||||
import jakarta.persistence.GeneratedValue;
 | 
					 | 
				
			||||||
import jakarta.persistence.GenerationType;
 | 
					 | 
				
			||||||
import jakarta.persistence.Id;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Entity
 | 
					@Entity
 | 
				
			||||||
@ -20,10 +17,21 @@ public class StorageFile {
 | 
				
			|||||||
    private FileType fileType;
 | 
					    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.name = name;
 | 
				
			||||||
        this.url = url;
 | 
					        this.url = url;
 | 
				
			||||||
        this.fileType = fileType;
 | 
					        this.fileType = fileType;
 | 
				
			||||||
 | 
					        this.user = user;
 | 
				
			||||||
 | 
					        this.request = request;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public StorageFile(){}
 | 
					    public StorageFile(){}
 | 
				
			||||||
@ -60,4 +68,20 @@ public class StorageFile {
 | 
				
			|||||||
    public void setFileType(FileType fileType) {
 | 
					    public void setFileType(FileType fileType) {
 | 
				
			||||||
        this.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;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user