Changes in / [dd7a2b6:0391097]


Ignore:
Location:
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo
Files:
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java

    rdd7a2b6 r0391097  
    7171                        .allowedHeaders("*")
    7272                        .allowCredentials(true);
    73 
    74                 registry.addMapping("/uploads/**")
    75                         .allowedOrigins("http://localhost:5173")
    76                         .allowedMethods("*")// maybe should be only GET
    77                         .allowedHeaders("*");
    7873            }
    7974        };
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java

    rdd7a2b6 r0391097  
    1515public class FileStorageServiceImpl implements FileStorageService {
    1616
    17     private final Path rootUploadsDir = Paths.get("uploads");
    18     private final Path logosDir = rootUploadsDir.resolve("logos");
    19     private final Path localsDir = rootUploadsDir.resolve("locals");
     17    private final Path uploadDirectory = Paths.get("uploads");
    2018
    2119    public FileStorageServiceImpl() throws IOException {
    22         Files.createDirectories(rootUploadsDir);
    23         Files.createDirectories(logosDir);
    24         Files.createDirectories(localsDir);
     20        Files.createDirectories(uploadDirectory);
    2521    }
    2622
    2723    @Override
    28     public String saveLogoFile(MultipartFile file) {
     24    public String saveFile(MultipartFile file) {
    2925        try {
    3026            String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename();
    31             Path target = logosDir.resolve(fileName);
     27            Path target = uploadDirectory.resolve(fileName);
    3228            Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING);
    33             return "/uploads/logos/" + fileName;
     29            return "/uploads/" + fileName;
    3430        } catch (IOException e) {
    35             throw new RuntimeException("Failed to save logo", e);
    36         }
    37     }
    38 
    39     @Override
    40     public String saveLocalPhoto(Long localId, MultipartFile file) {
    41         try {
    42             Path localFolder = localsDir.resolve(String.valueOf(localId));
    43             Files.createDirectories(localFolder);
    44             String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename();
    45             Path target = localFolder.resolve(fileName);
    46             Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING);
    47             return "/uploads/locals/" + localId + "/" + fileName;
    48         } catch (IOException e) {
    49             throw new RuntimeException("Failed to save local photo", e);
     31            throw new RuntimeException("Failed to save file", e);
    5032        }
    5133    }
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java

    rdd7a2b6 r0391097  
    44import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
    55import mk.ukim.finki.it.reservengo.model.exceptions.LocalIdNotFoundException;
    6 import mk.ukim.finki.it.reservengo.model.exceptions.LogoDeletionException;
    76import mk.ukim.finki.it.reservengo.model.exceptions.UserEmailAlreadyExistsException;
    87import mk.ukim.finki.it.reservengo.repository.LocalManagerRepository;
     
    1312import org.springframework.stereotype.Service;
    1413import org.springframework.web.multipart.MultipartFile;
    15 
    16 import java.io.IOException;
    17 import java.nio.file.Files;
    18 import java.nio.file.Path;
    19 import java.nio.file.Paths;
    20 import java.util.ArrayList;
    21 import java.util.List;
    2214
    2315@Service
     
    4032        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
    4133
    42         String logoPath = fileStorageService.saveLogoFile(logoFile);
     34        String logoPath = fileStorageService.saveFile(logoFile);
    4335        local.setLogoUrl(logoPath);
    4436
     
    5345        localManagerRepository.save(localManager);
    5446    }
    55 
    56     @Override
    57     public void deleteLocalLogo(Long localId) {
    58         Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
    59         String logoUrl = local.getLogoUrl();
    60 
    61         if (logoUrl != null && !logoUrl.isEmpty()) {
    62             Path filePath = Paths.get("uploads").resolve(Paths.get(logoUrl).getFileName().toString());
    63 
    64             try {
    65                 Files.deleteIfExists(filePath);
    66             } catch (IOException e) {
    67                 throw new LogoDeletionException("Failed to delete logo from path: " + filePath, e);
    68             }
    69         }
    70         local.setLogoUrl(null);
    71         localRepository.save(local);
    72     }
    73 
    74     @Override
    75     public void uploadPhotos(Long localId, List<MultipartFile> photos) {
    76         Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
    77 
    78         List<String> photoPaths = local.getLocalPhotos();
    79 
    80         if (photoPaths == null) {
    81             photoPaths = new ArrayList<>();
    82         }
    83 
    84         for (MultipartFile photo : photos) {
    85             if (!photo.isEmpty()) {
    86                 String filePath = fileStorageService.saveLocalPhoto(localId, photo);
    87                 photoPaths.add(filePath);
    88             }
    89         }
    90         local.setLocalPhotos(photoPaths);
    91         localRepository.save(local);
    92     }
    9347}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java

    rdd7a2b6 r0391097  
    44
    55public interface FileStorageService {
    6     String saveLogoFile(MultipartFile file);
    7     String saveLocalPhoto(Long localId, MultipartFile file);
     6    String saveFile(MultipartFile file);
    87}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java

    rdd7a2b6 r0391097  
    44import org.springframework.web.multipart.MultipartFile;
    55
    6 import java.util.List;
    7 
    86public interface LocalManagerService {
    97    void uploadLogo(Long localId, MultipartFile logoFile);
    108
    119    void save(LocalManager localManager);
    12 
    13     void deleteLocalLogo(Long localId);
    14 
    15     void uploadPhotos(Long localId, List<MultipartFile> photos);
    1610}
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java

    rdd7a2b6 r0391097  
    5656        return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
    5757    }
    58 
    59     @ExceptionHandler(LogoDeletionException.class)
    60     public ResponseEntity<String> handleLogoDeletion(LogoDeletionException ex) {
    61         return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
    62     }
    6358}
    6459
  • ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java

    rdd7a2b6 r0391097  
    55import org.springframework.web.bind.annotation.*;
    66import org.springframework.web.multipart.MultipartFile;
    7 
    8 import java.util.List;
    97
    108@RestController
     
    2422        return ResponseEntity.ok().build();
    2523    }
    26 
    27     @DeleteMapping("/{localId}/delete-logo")
    28     public ResponseEntity<?> deleteLocalLogo(@PathVariable Long localId) {
    29         localManagerService.deleteLocalLogo(localId);
    30         return ResponseEntity.ok().build();
    31     }
    32 
     24    //TODO implement delete logo
    3325    @PostMapping("/{localId}/upload-photos")
    34     public ResponseEntity<?> uploadPhotos(@PathVariable Long localId,
    35                                           @RequestParam("photos") List<MultipartFile> photos) {
    36         localManagerService.uploadPhotos(localId, photos);
     26    //TODO implement this next
     27    public ResponseEntity<?> uploadPhotos(@PathVariable Long localId) {
    3728        return ResponseEntity.ok().build();
    3829    }
Note: See TracChangeset for help on using the changeset viewer.