Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/userDTO/DisplayUserDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/userDTO/DisplayUserDTO.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/userDTO/DisplayUserDTO.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -12,5 +12,6 @@
         String email,
         String phoneNumber,
-        Role role
+        Role role,
+        String profilePhoto
 ) {
     public static DisplayUserDTO fromUser(User user) {
@@ -21,5 +22,6 @@
                 user.getEmail(),
                 user.getPhoneNumber(),
-                user.getUserRole()
+                user.getUserRole(),
+                user.getProfilePhotoUrl()
         );
     }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -44,4 +44,6 @@
     private Role userRole;
 
+    private String profilePhotoUrl;
+
     public User(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
         this.firstName = firstName;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LogoDeletionException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LogoDeletionException.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ 	(revision )
@@ -1,7 +1,0 @@
-package mk.ukim.finki.it.reservengo.model.exceptions;
-
-public class LogoDeletionException extends RuntimeException {
-    public LogoDeletionException(String message) {
-        super(message);
-    }
-}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LogoUploadException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LogoUploadException.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ 	(revision )
@@ -1,7 +1,0 @@
-package mk.ukim.finki.it.reservengo.model.exceptions;
-
-public class LogoUploadException extends RuntimeException {
-    public LogoUploadException(String message) {
-        super(message);
-    }
-}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoDeletionException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoDeletionException.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoDeletionException.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -2,6 +2,6 @@
 
 public class PhotoDeletionException extends RuntimeException {
-    public PhotoDeletionException(String message, Throwable cause) {
-        super(message,cause);
+    public PhotoDeletionException(String message) {
+        super(message);
     }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoUploadException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoUploadException.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoUploadException.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class PhotoUploadException extends RuntimeException {
+    public PhotoUploadException(String message) {
+        super(message);
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -2,6 +2,6 @@
 
 import mk.ukim.finki.it.reservengo.model.exceptions.InvalidFileException;
-import mk.ukim.finki.it.reservengo.model.exceptions.LogoDeletionException;
-import mk.ukim.finki.it.reservengo.model.exceptions.LogoUploadException;
+import mk.ukim.finki.it.reservengo.model.exceptions.PhotoDeletionException;
+import mk.ukim.finki.it.reservengo.model.exceptions.PhotoUploadException;
 import mk.ukim.finki.it.reservengo.service.intf.FileStorageService;
 import org.springframework.stereotype.Service;
@@ -20,4 +20,5 @@
     private final Path logosDir = rootUploadsDir.resolve("logos");
     private final Path localsDir = rootUploadsDir.resolve("locals");
+    private final Path profilesDir = rootUploadsDir.resolve("profiles");
     private static final Set<String> ALLOWED_EXTENSIONS = Set.of("jpg", "jpeg", "png");
     private static final Set<String> ALLOWED_CONTENT_TYPES = Set.of("image/jpeg", "image/png");
@@ -26,7 +27,8 @@
     public FileStorageServiceImpl() throws IOException {
         try {
-            Files.createDirectories(rootUploadsDir);
-            Files.createDirectories(logosDir);
-            Files.createDirectories(localsDir);
+            createIfNotExists(rootUploadsDir);
+            createIfNotExists(logosDir);
+            createIfNotExists(localsDir);
+            createIfNotExists(profilesDir);
         } catch (IOException e) {
             throw new FileSystemException("Could not initialize storage directories");
@@ -34,18 +36,18 @@
     }
 
+    private void createIfNotExists(Path dir) throws IOException {
+        if (!Files.exists(dir)) {
+            Files.createDirectories(dir);
+        }
+    }
+
     @Override
     public String saveLogoFile(MultipartFile file) {
-        validateFile(file);
-        String originalFilename = file.getOriginalFilename();
-        String fileExtension = getFileExtension(Objects.requireNonNull(originalFilename)).toLowerCase();
+        return savePhotoFile(file, logosDir, "/uploads/logos/");
+    }
 
-        try {
-            String fileName = generateUniqueFileName(fileExtension);
-            Path targetPath = logosDir.resolve(fileName);
-            Files.copy(file.getInputStream(), targetPath, StandardCopyOption.REPLACE_EXISTING);
-            return "/uploads/logos/" + fileName;
-        } catch (IOException e) {
-            throw new LogoUploadException("Failed to upload logo.");
-        }
+    @Override
+    public String saveProfilePhotoFile(MultipartFile file) {
+        return savePhotoFile(file, profilesDir, "/uploads/profiles/");
     }
 
@@ -60,30 +62,30 @@
             Files.deleteIfExists(fullPath);
         } catch (IOException e) {
-            throw new LogoDeletionException("Failed to delete photo.");
+            throw new PhotoDeletionException("Failed to delete photo.");
         }
     }
 
-    @Override
-    public String saveLocalPhoto(Long localId, MultipartFile file) {
-        try {
-            Path localFolder = localsDir.resolve(String.valueOf(localId));
-            Files.createDirectories(localFolder);
-            String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename();
-            Path target = localFolder.resolve("photos").resolve(fileName);
-            Files.createDirectories(target.getParent());
-            Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING);
-            return "/uploads/locals/" + localId + "/photos/" + fileName;
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to save local photo", e);
-        }
-    }
+//    @Override
+//    public String saveLocalPhoto(Long localId, MultipartFile file) {
+//        try {
+//            Path localFolder = localsDir.resolve(String.valueOf(localId));
+//            Files.createDirectories(localFolder);
+//            String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename();
+//            Path target = localFolder.resolve("photos").resolve(fileName);
+//            Files.createDirectories(target.getParent());
+//            Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING);
+//            return "/uploads/locals/" + localId + "/photos/" + fileName;
+//        } catch (IOException e) {
+//            throw new RuntimeException("Failed to save local photo", e);
+//        }
+//    }
 
     private void validateFile(MultipartFile file) {
         if (file == null || file.isEmpty()) {
-            throw new InvalidFileException("Logo file cannot be empty");
+            throw new InvalidFileException("Photo file cannot be empty");
         }
 
         if (file.getSize() > MAX_FILE_SIZE) {
-            throw new InvalidFileException("Logo file size exceeds maximum allowed size of 5MB");
+            throw new InvalidFileException("Photo file size exceeds maximum allowed size of 5MB");
         }
 
@@ -112,3 +114,18 @@
         return lastDotIndex > 0 ? filename.substring(lastDotIndex + 1) : "";
     }
+
+    private String savePhotoFile(MultipartFile file, Path targetDir, String webPathPrefix) {
+        validateFile(file);
+        String originalFilename = file.getOriginalFilename();
+        String fileExtension = getFileExtension(Objects.requireNonNull(originalFilename)).toLowerCase();
+
+        try {
+            String fileName = generateUniqueFileName(fileExtension);
+            Path targetPath = targetDir.resolve(fileName);
+            Files.copy(file.getInputStream(), targetPath, StandardCopyOption.REPLACE_EXISTING);
+            return webPathPrefix + fileName;
+        } catch (IOException e) {
+            throw new PhotoUploadException("Failed to upload photo.");
+        }
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -94,17 +94,17 @@
     @Override
     public void deleteLocalLogo(Long managerId) {
-        LocalManager localManager = localManagerRepository.findById(managerId).orElseThrow(() -> new LocalManagerIdNotFoundException(managerId));
+        Local local = findLocalByManagerId(managerId);
 
-        localService.deleteLogo(localManager.getLocal().getId());
+        localService.deleteLogo(local.getId());
     }
 
-    @Override
-    public void uploadLocalPhotos(Long localId, List<MultipartFile> photos) {
-        localService.uploadPhotos(localId, photos);
-    }
-
-    @Override
-    public void deleteLocalPhotos(Long localId, List<String> photoPaths) {
-        localService.deletePhotos(localId, photoPaths);
-    }
+//    @Override
+//    public void uploadLocalPhotos(Long localId, List<MultipartFile> photos) {
+//        localService.uploadPhotos(localId, photos);
+//    }
+//
+//    @Override
+//    public void deleteLocalPhotos(Long localId, List<String> photoPaths) {
+//        localService.deletePhotos(localId, photoPaths);
+//    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -11,5 +11,4 @@
 import org.springframework.web.multipart.MultipartFile;
 
-import java.util.ArrayList;
 import java.util.List;
 
@@ -90,51 +89,51 @@
             localRepository.save(local);
         } else {
-            throw new LogoDeletionException("No logo found for local with id: " + localId);
+            throw new PhotoDeletionException("No logo found for local with id: " + localId);
         }
     }
 
-    @Override
-    public void uploadPhotos(Long localId, List<MultipartFile> photos) {
-        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+//    @Override
+//    public void uploadPhotos(Long localId, List<MultipartFile> photos) {
+//        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+//
+//        List<String> photoPaths = local.getLocalPhotos();
+//
+//        if (photoPaths == null) {
+//            photoPaths = new ArrayList<>();
+//        }
+//
+//        for (MultipartFile photo : photos) {
+//            if (!photo.isEmpty()) {
+//                String filePath = fileStorageService.saveLocalPhoto(localId, photo);
+//                photoPaths.add(filePath);
+//            }
+//        }
+//        local.setLocalPhotos(photoPaths);
+//        localRepository.save(local);
+//    }
 
-        List<String> photoPaths = local.getLocalPhotos();
-
-        if (photoPaths == null) {
-            photoPaths = new ArrayList<>();
-        }
-
-        for (MultipartFile photo : photos) {
-            if (!photo.isEmpty()) {
-                String filePath = fileStorageService.saveLocalPhoto(localId, photo);
-                photoPaths.add(filePath);
-            }
-        }
-        local.setLocalPhotos(photoPaths);
-        localRepository.save(local);
-    }
-
-    @Override
-    public void deletePhotos(Long localId, List<String> photoPaths) {
-        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
-
-        List<String> uploadedPhotos = local.getLocalPhotos();
-
-        if (uploadedPhotos == null) {
-            uploadedPhotos = new ArrayList<>();
-        }
-
-        for (String photoPath : photoPaths) {
-            if (uploadedPhotos.contains(photoPath)) {
-                try {
-                    fileStorageService.deletePhotoFile(photoPath);
-                    uploadedPhotos.remove(photoPath);
-                } catch (RuntimeException e) {
-                    throw new PhotoDeletionException("Failed to delete photo: " + photoPath, e);
-                }
-            }
-        }
-
-        local.setLocalPhotos(uploadedPhotos);
-        localRepository.save(local);
-    }
+//    @Override
+//    public void deletePhotos(Long localId, List<String> photoPaths) {
+//        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+//
+//        List<String> uploadedPhotos = local.getLocalPhotos();
+//
+//        if (uploadedPhotos == null) {
+//            uploadedPhotos = new ArrayList<>();
+//        }
+//
+//        for (String photoPath : photoPaths) {
+//            if (uploadedPhotos.contains(photoPath)) {
+//                try {
+//                    fileStorageService.deletePhotoFile(photoPath);
+//                    uploadedPhotos.remove(photoPath);
+//                } catch (RuntimeException e) {
+//                    throw new PhotoDeletionException("Failed to delete photo: " + photoPath, e);
+//                }
+//            }
+//        }
+//
+//        local.setLocalPhotos(uploadedPhotos);
+//        localRepository.save(local);
+//    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -4,13 +4,18 @@
 import mk.ukim.finki.it.reservengo.model.domain.User;
 import mk.ukim.finki.it.reservengo.model.exceptions.EmailNotFoundException;
+import mk.ukim.finki.it.reservengo.model.exceptions.PhotoDeletionException;
 import mk.ukim.finki.it.reservengo.model.exceptions.UserEmailAlreadyExistsException;
 import mk.ukim.finki.it.reservengo.model.exceptions.UserIdNotFoundException;
 import mk.ukim.finki.it.reservengo.repository.UserRepository;
+import mk.ukim.finki.it.reservengo.service.intf.FileStorageService;
 import mk.ukim.finki.it.reservengo.service.intf.JWTService;
 import mk.ukim.finki.it.reservengo.service.intf.UserService;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
 @Service
+@Transactional
 public class UserServiceImpl implements UserService {
 
@@ -18,9 +23,11 @@
     private final JWTService jwtService;
     private final PasswordEncoder passwordEncoder;
+    private final FileStorageService fileStorageService;
 
-    public UserServiceImpl(UserRepository userRepository, PasswordEncoder passwordEncoder, JWTService jwtService) {
+    public UserServiceImpl(UserRepository userRepository, PasswordEncoder passwordEncoder, JWTService jwtService, FileStorageService fileStorageService) {
         this.userRepository = userRepository;
         this.jwtService = jwtService;
         this.passwordEncoder = passwordEncoder;
+        this.fileStorageService = fileStorageService;
     }
 
@@ -71,5 +78,34 @@
 
     @Override
-    public DisplayUserDTO editUser(Long userId, EditUserProfileDTO editUserProfileDTO) {
+    public String uploadProfilePhoto(Long id, MultipartFile photoFile) {
+        User user = userRepository.findById(id).orElseThrow(() -> new UserIdNotFoundException(id));
+
+        if (user.getProfilePhotoUrl() != null && !user.getProfilePhotoUrl().isEmpty() ) {
+            fileStorageService.deletePhotoFile(user.getProfilePhotoUrl());
+        }
+
+        String photoPath = fileStorageService.saveProfilePhotoFile(photoFile);
+        user.setProfilePhotoUrl(photoPath);
+        userRepository.save(user);
+
+        return photoPath;
+    }
+
+    @Override
+    public void deleteProfilePhoto(Long id) {
+        User user = userRepository.findById(id).orElseThrow(() -> new UserIdNotFoundException(id));
+        String photoUrl = user.getProfilePhotoUrl();
+
+        if (photoUrl != null && !photoUrl.isEmpty()) {
+            fileStorageService.deletePhotoFile(photoUrl);
+            user.setProfilePhotoUrl(null);
+            userRepository.save(user);
+        } else {
+            throw new PhotoDeletionException("No profile photo found for user with id: " + id);
+        }
+    }
+
+    @Override
+    public User editUser(Long userId, EditUserProfileDTO editUserProfileDTO) {
         User user = userRepository.findById(userId).orElseThrow(() -> new UserIdNotFoundException(userId));
 
@@ -79,5 +115,5 @@
         userRepository.save(user);
 
-        return DisplayUserDTO.fromUser(user);
+        return user;
     }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -6,5 +6,7 @@
     String saveLogoFile(MultipartFile file);
 
-    String saveLocalPhoto(Long localId, MultipartFile file);
+    String saveProfilePhotoFile(MultipartFile file);
+
+//    String saveLocalPhoto(Long localId, MultipartFile file);
 
     void deletePhotoFile(String filePath);
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -30,6 +30,6 @@
     void deleteLocalLogo(Long managerId);
 
-    void uploadLocalPhotos(Long localId, List<MultipartFile> photos);
-
-    void deleteLocalPhotos(Long localId, List<String> photoPaths);
+//    void uploadLocalPhotos(Long localId, List<MultipartFile> photos);
+//
+//    void deleteLocalPhotos(Long localId, List<String> photoPaths);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -22,6 +22,6 @@
     void deleteLogo(Long localId);
 
-    void uploadPhotos(Long localId, List<MultipartFile> photos);
-
-    void deletePhotos(Long localId, List<String> photoPaths);
+//    void uploadPhotos(Long localId, List<MultipartFile> photos);
+//
+//    void deletePhotos(Long localId, List<String> photoPaths);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -3,9 +3,10 @@
 import mk.ukim.finki.it.reservengo.dto.userDTO.*;
 import mk.ukim.finki.it.reservengo.model.domain.User;
+import org.springframework.web.multipart.MultipartFile;
 
 public interface UserService {
     User findUserById(Long userId);
 
-    DisplayUserDTO editUser(Long userId, EditUserProfileDTO editUserProfileDTO);
+    User editUser(Long userId, EditUserProfileDTO editUserProfileDTO);
 
     User findUserByEmail(String email);
@@ -16,3 +17,7 @@
 
     void changePassword(Long userId, EditUserPasswordDTO editUserPasswordDTO);
+
+    String uploadProfilePhoto(Long id, MultipartFile photoFile);
+
+    void deleteProfilePhoto(Long id);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -74,9 +74,4 @@
     }
 
-    @ExceptionHandler(PhotoDeletionException.class)
-    public ResponseEntity<String> handlePhotoDeletion(PhotoDeletionException ex) {
-        return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
-    }
-
     @ExceptionHandler(MenuDeletionException.class)
     public ResponseEntity<String> handleMenuDeletion(MenuDeletionException ex) {
@@ -99,11 +94,11 @@
     }
 
-    @ExceptionHandler(LogoUploadException.class)
-    public ResponseEntity<String> handleFailedLogoUpload(LogoUploadException ex) {
+    @ExceptionHandler(PhotoUploadException.class)
+    public ResponseEntity<String> handleFailedPhotoUpload(PhotoUploadException ex) {
         return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
     }
 
-    @ExceptionHandler(LogoDeletionException.class)
-    public ResponseEntity<String> handleFailedLogoDelete(LogoDeletionException ex) {
+    @ExceptionHandler(PhotoDeletionException.class)
+    public ResponseEntity<String> handleFailedPhotoDelete(PhotoDeletionException ex) {
         return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
     }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -29,5 +29,5 @@
     }
 
-    @PostMapping("/my-local/edit")
+    @PutMapping("/my-local/edit")
     public ResponseEntity<DisplayLocalDetailsDTO> editLocalInformation(@AuthenticationPrincipal User user, @RequestBody CreateLocalDetailsDTO createLocalDetailsDTO) {
         DisplayLocalDetailsDTO displayLocalDetailsDTO = DisplayLocalDetailsDTO.from(localManagerService.editLocal(user.getId(), createLocalDetailsDTO));
@@ -45,5 +45,4 @@
     public ResponseEntity<Void> deleteLocalLogo(@AuthenticationPrincipal User user) {
         localManagerService.deleteLocalLogo(user.getId());
-        System.out.println("zdravo");
         return new ResponseEntity<>(HttpStatus.OK);
     }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/UserController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/UserController.java	(revision 94ab9038341b2e160af240badc7cf95ede39c3da)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/UserController.java	(revision bb9f33d7cd7dff90d619deca11a02dc2bd207ac3)
@@ -8,4 +8,5 @@
 import org.springframework.security.core.annotation.AuthenticationPrincipal;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 
@@ -28,5 +29,5 @@
     @PutMapping("/edit")
     public ResponseEntity<DisplayUserDTO> editProfile(@AuthenticationPrincipal User user, @RequestBody EditUserProfileDTO editUserProfileDTO) {
-        DisplayUserDTO displayUserDTO = userService.editUser(user.getId(), editUserProfileDTO);
+        DisplayUserDTO displayUserDTO = DisplayUserDTO.fromUser(userService.editUser(user.getId(), editUserProfileDTO));
         return new ResponseEntity<>(displayUserDTO, HttpStatus.OK);
     }
@@ -43,3 +44,16 @@
         return new ResponseEntity<>(HttpStatus.OK);
     }
+
+    @PostMapping("/upload-avatar")
+    public ResponseEntity<String> uploadLogo(@AuthenticationPrincipal User user,
+                                             @RequestParam("avatar") MultipartFile logoFile) {
+        String logoUrl = userService.uploadProfilePhoto(user.getId(), logoFile);
+        return new ResponseEntity<>(logoUrl, HttpStatus.OK);
+    }
+
+    @DeleteMapping("/delete-avatar")
+    public ResponseEntity<Void> deleteLocalLogo(@AuthenticationPrincipal User user) {
+        userService.deleteProfilePhoto(user.getId());
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
 }
