Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/ReserveNGoApplication.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/ReserveNGoApplication.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/ReserveNGoApplication.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -4,11 +4,11 @@
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.Bean;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
 
-
+@EnableJpaAuditing
 @SpringBootApplication
 public class ReserveNGoApplication {
-
     public static void main(String[] args) {
         SpringApplication.run(ReserveNGoApplication.class, args);
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/listeners/Auditable.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/listeners/Auditable.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/listeners/Auditable.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -0,0 +1,25 @@
+package mk.ukim.finki.it.reservengo.config.listeners;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.EntityListeners;
+import jakarta.persistence.MappedSuperclass;
+import lombok.Data;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import java.time.LocalDateTime;
+
+@MappedSuperclass
+@EntityListeners(AuditingEntityListener.class)
+@Data
+public abstract class Auditable {
+
+    @CreatedDate
+    @Column(nullable = false, updatable = false)
+    private LocalDateTime createdAt;
+
+    @LastModifiedDate
+    @Column(nullable = false)
+    private LocalDateTime modifiedAt;
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/constants/LocalDateTimeConstants.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/constants/LocalDateTimeConstants.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/constants/LocalDateTimeConstants.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.constants;
+
+import java.time.format.DateTimeFormatter;
+
+public class LocalDateTimeConstants {
+    public static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/adminDTO/DisplayAdminLocalsDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/adminDTO/DisplayAdminLocalsDTO.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/adminDTO/DisplayAdminLocalsDTO.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -0,0 +1,31 @@
+package mk.ukim.finki.it.reservengo.dto.adminDTO;
+
+import mk.ukim.finki.it.reservengo.model.domain.Local;
+
+import java.util.List;
+
+import static mk.ukim.finki.it.reservengo.constants.LocalDateTimeConstants.FORMATTER;
+
+public record DisplayAdminLocalsDTO(
+        Long localId,
+        String localName,
+        String localLogo,
+        String createdAt,
+        String modifiedAt
+) {
+    public static DisplayAdminLocalsDTO fromLocal(Local local) {
+        return new DisplayAdminLocalsDTO(
+                local.getId(),
+                local.getName(),
+                local.getLogoUrl(),
+                local.getCreatedAt().format(FORMATTER),
+                local.getModifiedAt().format(FORMATTER)
+        );
+    }
+
+    public static List<DisplayAdminLocalsDTO> fromLocals(List<Local> locals) {
+        return locals.stream()
+                .map(DisplayAdminLocalsDTO::fromLocal)
+                .toList();
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -1,7 +1,4 @@
 package mk.ukim.finki.it.reservengo.dto.jwtDTO;
 
-import mk.ukim.finki.it.reservengo.model.domain.Customer;
-import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
-import mk.ukim.finki.it.reservengo.model.domain.LocalWorker;
 import mk.ukim.finki.it.reservengo.model.domain.User;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
@@ -17,41 +14,4 @@
         String token
 ) {
-
-    public static JWTAuthenticationResponseDTO fromCustomer(Customer customer, String jwt) {
-        return new JWTAuthenticationResponseDTO(
-                customer.getId(),
-                customer.getFirstName(),
-                customer.getLastName(),
-                customer.getEmail(),
-                customer.getPhoneNumber(),
-                Role.ROLE_CUSTOMER,
-                jwt
-        );
-    }
-
-    public static JWTAuthenticationResponseDTO fromLocalWorker(LocalWorker localWorker, String jwt) {
-        return new JWTAuthenticationResponseDTO(
-                localWorker.getId(),
-                localWorker.getFirstName(),
-                localWorker.getLastName(),
-                localWorker.getEmail(),
-                localWorker.getPhoneNumber(),
-                Role.ROLE_LOCAL_WORKER,
-                jwt
-        );
-    }
-
-    public static JWTAuthenticationResponseDTO fromLocalManager(LocalManager localManager, String jwt) {
-        return new JWTAuthenticationResponseDTO(
-                localManager.getId(),
-                localManager.getFirstName(),
-                localManager.getLastName(),
-                localManager.getEmail(),
-                localManager.getPhoneNumber(),
-                Role.ROLE_LOCAL_MANAGER,
-                jwt
-        );
-    }
-
     public static JWTAuthenticationResponseDTO fromUser(User user, String jwt) {
         return new JWTAuthenticationResponseDTO(
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/userDTO/DisplayUserDTO.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -3,4 +3,6 @@
 import mk.ukim.finki.it.reservengo.model.domain.User;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+import java.util.List;
 
 public record DisplayUserDTO(
@@ -22,3 +24,9 @@
         );
     }
+
+    public static List<DisplayUserDTO> fromUsers(List<? extends User> users) {
+        return users.stream()
+                .map(DisplayUserDTO::fromUser)
+                .toList();
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -22,4 +22,3 @@
     @Column(name = "social_app_link")
     private Map<String, String> socialLinks;
-
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -4,11 +4,18 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import mk.ukim.finki.it.reservengo.config.listeners.Auditable;
 import mk.ukim.finki.it.reservengo.model.enumerations.Service;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
 
+@EqualsAndHashCode(callSuper = true)
 @Entity
 @Table(name = "local_")
@@ -16,5 +23,6 @@
 @AllArgsConstructor
 @NoArgsConstructor
-public class Local {
+@EntityListeners(AuditingEntityListener.class)
+public class Local extends Auditable {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -3,4 +3,5 @@
 import jakarta.persistence.*;
 import lombok.*;
+import mk.ukim.finki.it.reservengo.config.listeners.Auditable;
 import mk.ukim.finki.it.reservengo.model.enumerations.ReservationStatus;
 
@@ -8,9 +9,10 @@
 import java.util.Map;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 @Entity
 @AllArgsConstructor
 @NoArgsConstructor
-public class Reservation {
+public class Reservation extends Auditable {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -23,6 +25,4 @@
     private Local local;
 
-    private LocalDateTime timeOfRes;
-
     @ElementCollection
     @MapKeyColumn(name = "table_id")
@@ -32,4 +32,3 @@
     @Enumerated(EnumType.STRING)
     private ReservationStatus status;
-
 }
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -5,5 +5,7 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import mk.ukim.finki.it.reservengo.config.listeners.Auditable;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 import org.springframework.security.core.GrantedAuthority;
@@ -14,4 +16,5 @@
 import java.util.List;
 
+@EqualsAndHashCode(callSuper = true)
 @Entity
 @Inheritance(strategy = InheritanceType.JOINED)
@@ -20,14 +23,5 @@
 @AllArgsConstructor
 @NoArgsConstructor
-public class User implements UserDetails {
-    public User(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
-        this.firstName = firstName;
-        this.lastName = lastName;
-        this.email = email;
-        this.password = password;
-        this.phoneNumber = phoneNumber;
-        this.userRole = userRole;
-    }
-
+public class User extends Auditable implements UserDetails {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -48,4 +42,13 @@
     @Enumerated(EnumType.STRING)
     private Role userRole;
+
+    public User(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.email = email;
+        this.password = password;
+        this.phoneNumber = phoneNumber;
+        this.userRole = userRole;
+    }
 
     @Override
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalManagerIdNotFoundException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalManagerIdNotFoundException.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalManagerIdNotFoundException.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class LocalManagerIdNotFoundException extends RuntimeException{
+    public LocalManagerIdNotFoundException(Long id) {
+        super("Manager with id: " + id + " not found.");
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ManagerAlreadyAssignedException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ManagerAlreadyAssignedException.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ManagerAlreadyAssignedException.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class ManagerAlreadyAssignedException extends RuntimeException {
+    public ManagerAlreadyAssignedException(Long managerId, Long localId) {
+        super("Manager with id: " + managerId + " is already assigned to local with id: " + localId + ".");
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ManagerNotAssignedException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ManagerNotAssignedException.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ManagerNotAssignedException.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class ManagerNotAssignedException extends RuntimeException {
+    public ManagerNotAssignedException(Long id) {
+        super("Manager with id: " + id + " is not assigned to any local.");
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalManagerRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalManagerRepository.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalManagerRepository.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -5,8 +5,8 @@
 import org.springframework.stereotype.Repository;
 
-import java.util.Optional;
+import java.util.List;
 
 @Repository
 public interface LocalManagerRepository extends JpaRepository<LocalManager, Long> {
-    Optional<LocalManager> findByEmail(String email);
+    List<LocalManager> findByLocal_Id(Long localId);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -1,9 +1,18 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
+import mk.ukim.finki.it.reservengo.dto.adminDTO.DisplayAdminLocalsDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDTO;
+import mk.ukim.finki.it.reservengo.dto.userDTO.DisplayUserDTO;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
+import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
+import mk.ukim.finki.it.reservengo.model.enumerations.Position;
+import mk.ukim.finki.it.reservengo.model.exceptions.ManagerAlreadyAssignedException;
+import mk.ukim.finki.it.reservengo.model.exceptions.ManagerNotAssignedException;
 import mk.ukim.finki.it.reservengo.service.intf.AdminService;
-import mk.ukim.finki.it.reservengo.service.intf.CustomerService;
+import mk.ukim.finki.it.reservengo.service.intf.LocalManagerService;
 import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service
@@ -11,7 +20,9 @@
 
     private final LocalService localService;
+    private final LocalManagerService localManagerService;
 
-    public AdminServiceImpl(LocalService localService, CustomerService customerService) {
+    public AdminServiceImpl(LocalService localService, LocalManagerService localManagerService) {
         this.localService = localService;
+        this.localManagerService = localManagerService;
     }
 
@@ -25,3 +36,37 @@
         localService.delete(id);
     }
+
+    @Override
+    public List<DisplayAdminLocalsDTO> getLocals() {
+        return DisplayAdminLocalsDTO.fromLocals(localService.listAll());
+    }
+
+    @Override
+    public List<DisplayUserDTO> findManagersByLocalId(Long localId) {
+        List<LocalManager> managers = localManagerService.findAllByLocalId(localId);
+        return DisplayUserDTO.fromUsers(managers);
+    }
+
+    @Override
+    public void assignManagerToLocal(Long localId, Long managerId) {
+        LocalManager manager = localManagerService.findManagerById(managerId);
+        if (manager.getLocal() != null) {
+            throw new ManagerAlreadyAssignedException(manager.getId(), manager.getLocal().getId());
+        }
+        Local local = localService.findLocalById(localId);
+        manager.setLocal(local);
+        manager.setPosition(Position.MANAGER);
+        localManagerService.update(manager.getId(), manager);
+    }
+
+    @Override
+    public void removeManagerFromLocal(Long managerId) {
+        LocalManager manager = localManagerService.findManagerById(managerId);
+        if (manager.getLocal() == null) {
+            throw new ManagerNotAssignedException(manager.getId());
+        }
+        manager.setLocal(null);
+        manager.setPosition(null);
+        localManagerService.update(manager.getId(), manager);
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -43,5 +43,5 @@
         String jwt = jwtService.generateToken(customer);
 
-        return JWTAuthenticationResponseDTO.fromCustomer(customer, jwt);
+        return JWTAuthenticationResponseDTO.fromUser(customer, jwt);
     }
 
@@ -53,5 +53,5 @@
         String jwt = jwtService.generateToken(localWorker);
 
-        return JWTAuthenticationResponseDTO.fromLocalWorker(localWorker, jwt);
+        return JWTAuthenticationResponseDTO.fromUser(localWorker, jwt);
     }
 
@@ -63,5 +63,5 @@
         String jwt = jwtService.generateToken(localManager);
 
-        return JWTAuthenticationResponseDTO.fromLocalManager(localManager, jwt);
+        return JWTAuthenticationResponseDTO.fromUser(localManager, jwt);
     }
 
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -37,5 +37,5 @@
     public void addFavouriteLocal(Long userId, Long localId) {
         Customer customer = customerRepository.findById(userId).orElseThrow(() -> new CustomerIdNotFoundException(userId));
-        Local local = localService.getLocalById(localId);
+        Local local = localService.findLocalById(localId);
 
         if (customer.getFavouriteLocals().contains(local)) {
@@ -50,5 +50,5 @@
     public void removeFavouriteLocal(Long userId, Long localId) {
         Customer customer = customerRepository.findById(userId).orElseThrow(() -> new CustomerIdNotFoundException(userId));
-        Local local = localService.getLocalById(localId);
+        Local local = localService.findLocalById(localId);
 
         if (!customer.getFavouriteLocals().contains(local)) {
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -4,4 +4,8 @@
 import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
 import mk.ukim.finki.it.reservengo.model.exceptions.*;
+import mk.ukim.finki.it.reservengo.model.exceptions.LocalIdNotFoundException;
+import mk.ukim.finki.it.reservengo.model.exceptions.LocalManagerIdNotFoundException;
+import mk.ukim.finki.it.reservengo.model.exceptions.LogoDeletionException;
+import mk.ukim.finki.it.reservengo.model.exceptions.UserEmailAlreadyExistsException;
 import mk.ukim.finki.it.reservengo.repository.LocalManagerRepository;
 import mk.ukim.finki.it.reservengo.repository.LocalRepository;
@@ -145,3 +149,27 @@
         }
     }
+
+    public List<LocalManager> findAllByLocalId(Long localId) {
+        return localManagerRepository.findByLocal_Id(localId);
+    }
+
+    @Override
+    public List<LocalManager> findAll() {
+        return localManagerRepository.findAll();
+    }
+
+    @Override
+    public LocalManager findManagerById(Long id) {
+        return localManagerRepository.findById(id).orElseThrow(() -> new LocalManagerIdNotFoundException(id));
+    }
+
+    @Override
+    public void update(Long id, LocalManager manager) {
+        LocalManager existingManager = localManagerRepository.findById(id).orElseThrow(() -> new LocalManagerIdNotFoundException(id));
+
+        existingManager.setLocal(manager.getLocal());
+        existingManager.setPosition(manager.getPosition());
+
+        localManagerRepository.save(existingManager);
+    }
 }
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -24,5 +24,5 @@
 
     @Override
-    public Local getLocalById(Long id) {
+    public Local findLocalById(Long id) {
         return localRepository.findById(id).orElseThrow(() -> new LocalIdNotFoundException(id));
     }
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -26,10 +26,10 @@
 
     @Override
-    public User getUserById(Long userId) {
+    public User findUserById(Long userId) {
         return userRepository.findById(userId).orElseThrow(() -> new UserIdNotFoundException(userId));
     }
 
     @Override
-    public User getUserByEmail(String email) {
+    public User findUserByEmail(String email) {
         return userRepository.findByEmail(email).orElseThrow(() -> new EmailNotFoundException(email));
     }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -1,5 +1,9 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
+import mk.ukim.finki.it.reservengo.dto.adminDTO.DisplayAdminLocalsDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDTO;
+import mk.ukim.finki.it.reservengo.dto.userDTO.DisplayUserDTO;
+
+import java.util.List;
 
 public interface AdminService {
@@ -7,3 +11,11 @@
 
     void deleteLocal(Long id);
+
+    List<DisplayAdminLocalsDTO> getLocals();
+
+    List<DisplayUserDTO> findManagersByLocalId(Long localId);
+
+    void assignManagerToLocal(Long localId, Long managerId);
+
+    void removeManagerFromLocal(Long managerId);
 }
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -21,4 +21,10 @@
     void deleteLocalMenuPhoto(Long localId);
 
+    List<LocalManager> findAllByLocalId(Long localId);
 
+    List<LocalManager> findAll();
+
+    LocalManager findManagerById(Long id);
+
+    void update(Long id, LocalManager manager);
 }
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -8,5 +8,5 @@
     List<Local> listAll();
 
-    Local getLocalById(Long id);
+    Local findLocalById(Long id);
 
     void save(String name);
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -5,9 +5,9 @@
 
 public interface UserService {
-    User getUserById(Long userId);
+    User findUserById(Long userId);
 
     DisplayUserDTO editUser(Long userId, EditUserProfileDTO editUserProfileDTO);
 
-    User getUserByEmail(String email);
+    User findUserByEmail(String email);
 
     boolean emailExists(String email);
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -34,4 +34,9 @@
     @ExceptionHandler(UserIdNotFoundException.class)
     public ResponseEntity<String> handleUserIdNotFound(UserIdNotFoundException ex) {
+        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
+    }
+
+    @ExceptionHandler(LocalManagerIdNotFoundException.class)
+    public ResponseEntity<String> handleLocalManagerIdNotFound(LocalManagerIdNotFoundException ex) {
         return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
     }
@@ -81,4 +86,14 @@
         return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
     }
+
+    @ExceptionHandler(ManagerAlreadyAssignedException.class)
+    public ResponseEntity<String> handleManagerAlreadyAssigned(ManagerAlreadyAssignedException ex) {
+        return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
+    }
+
+    @ExceptionHandler(ManagerNotAssignedException.class)
+    public ResponseEntity<String> handleManagerNotAssigned(ManagerNotAssignedException ex) {
+        return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
+    }
 }
 
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/AdminController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/AdminController.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/AdminController.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -1,10 +1,15 @@
 package mk.ukim.finki.it.reservengo.web.controller;
 
+import mk.ukim.finki.it.reservengo.dto.adminDTO.DisplayAdminLocalsDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDTO;
+import mk.ukim.finki.it.reservengo.dto.userDTO.DisplayUserDTO;
 import mk.ukim.finki.it.reservengo.service.intf.AdminService;
+import mk.ukim.finki.it.reservengo.service.intf.LocalManagerService;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 @RestController
@@ -14,7 +19,9 @@
 
     private final AdminService adminService;
+    private final LocalManagerService localManagerService;
 
-    public AdminController(AdminService adminService) {
+    public AdminController(AdminService adminService, LocalManagerService localManagerService) {
         this.adminService = adminService;
+        this.localManagerService = localManagerService;
     }
 
@@ -22,5 +29,5 @@
     public ResponseEntity<Void> addLocal(@RequestBody CreateLocalDTO localDTO) {
         adminService.addLocal(localDTO);
-        return new ResponseEntity<>(HttpStatus.OK);
+        return new ResponseEntity<>(HttpStatus.CREATED);
     }
 
@@ -30,3 +37,33 @@
         return new ResponseEntity<>(HttpStatus.OK);
     }
+
+    @GetMapping("/locals")
+    public ResponseEntity<List<DisplayAdminLocalsDTO>> getLocals() {
+        List<DisplayAdminLocalsDTO> locals = adminService.getLocals();
+        return new ResponseEntity<>(locals, HttpStatus.OK);
+    }
+
+    @GetMapping("/local-managers/{id}")
+    public ResponseEntity<List<DisplayUserDTO>> getManagersForLocal(@PathVariable Long id) {
+        List<DisplayUserDTO> managers = adminService.findManagersByLocalId(id);
+        return new ResponseEntity<>(managers, HttpStatus.OK);
+    }
+
+    @GetMapping("/local-managers")
+    public ResponseEntity<List<DisplayUserDTO>> getManagers() {
+        List<DisplayUserDTO> managers = DisplayUserDTO.fromUsers(localManagerService.findAll());
+        return new ResponseEntity<>(managers, HttpStatus.OK);
+    }
+
+    @PostMapping("/assign/{localId}/{managerId}")
+    public ResponseEntity<Void> assignManagerToLocal(@PathVariable Long localId, @PathVariable Long managerId) {
+        adminService.assignManagerToLocal(localId, managerId);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @DeleteMapping("/remove/{managerId}")
+    public ResponseEntity<Void> removeManagerFromLocal(@PathVariable Long managerId) {
+        adminService.removeManagerFromLocal(managerId);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalController.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalController.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -3,5 +3,4 @@
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDetailsDTO;
-import mk.ukim.finki.it.reservengo.model.domain.Local;
 import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 import org.springframework.http.HttpStatus;
@@ -29,5 +28,5 @@
     @GetMapping("/{id}")
     public ResponseEntity<DisplayLocalDetailsDTO> getLocalDetails(@PathVariable Long id) {
-        DisplayLocalDetailsDTO local = DisplayLocalDetailsDTO.from(localService.getLocalById(id));
+        DisplayLocalDetailsDTO local = DisplayLocalDetailsDTO.from(localService.findLocalById(id));
         return new ResponseEntity<>(local, HttpStatus.OK);
     }
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -9,5 +9,5 @@
 
 @RestController
-@RequestMapping("/api/local-manager")
+@RequestMapping("/api/local-managers")
 public class LocalManagerController {
 
@@ -34,5 +34,5 @@
     public ResponseEntity<?> uploadMenu(@PathVariable Long localId,
                                         @RequestParam("menu") MultipartFile menuFile) {
-        localManagerService.uploadLocalMenu(localId,menuFile);
+        localManagerService.uploadLocalMenu(localId, menuFile);
         return ResponseEntity.ok().build();
     }
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 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/UserController.java	(revision 3af859482e05cea71ece3262dfe30a4b9b00c861)
@@ -22,5 +22,5 @@
     @GetMapping("/profile")
     public ResponseEntity<DisplayUserDTO> getProfile(@AuthenticationPrincipal User user) {
-        DisplayUserDTO displayUserDTO = DisplayUserDTO.fromUser(userService.getUserById(user.getId()));
+        DisplayUserDTO displayUserDTO = DisplayUserDTO.fromUser(userService.findUserById(user.getId()));
         return new ResponseEntity<>(displayUserDTO, HttpStatus.OK);
     }
