Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/DisplayLocalDetailsDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/DisplayLocalDetailsDTO.java	(revision 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/DisplayLocalDetailsDTO.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -4,5 +4,4 @@
 import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.model.domain.Local;
-import mk.ukim.finki.it.reservengo.model.domain.WorkingHour;
 import mk.ukim.finki.it.reservengo.model.enumerations.LocalType;
 import mk.ukim.finki.it.reservengo.model.enumerations.ProvidedService;
@@ -18,5 +17,5 @@
         List<ProvidedService> services,
         Double ratingAvg,
-        List<DisplayEventDTO> events,
+        List<DisplayEventDTO> events, // ne gi vrakaj tuka eventite
         List<String> localPhotos,
         String menuLink,
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java	(revision 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -23,3 +23,5 @@
     private List<Local> favouriteLocals;
 
+    @ManyToMany
+    private List<Event> favouriteEvents;
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/EventAlreadyFavouredException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/EventAlreadyFavouredException.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/EventAlreadyFavouredException.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class EventAlreadyFavouredException extends RuntimeException {
+    public EventAlreadyFavouredException(Long id) {
+        super("Event with id: " + id + " already favoured.");
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/EventAlreadyUnfavouredException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/EventAlreadyUnfavouredException.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/EventAlreadyUnfavouredException.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class EventAlreadyUnfavouredException extends RuntimeException {
+    public EventAlreadyUnfavouredException(Long id) {
+        super("Event with id: " + id + " already unfavoured.");
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalAlreadyFavouredException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalAlreadyFavouredException.java	(revision 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalAlreadyFavouredException.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.model.exceptions;
 
-public class LocalAlreadyFavouredException extends RuntimeException{
+public class LocalAlreadyFavouredException extends RuntimeException {
     public LocalAlreadyFavouredException(Long id) {
         super("Local with id: " + id + " already favoured.");
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalAlreadyUnfavouredException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalAlreadyUnfavouredException.java	(revision 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalAlreadyUnfavouredException.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.model.exceptions;
 
-public class LocalAlreadyUnfavouredException extends RuntimeException{
+public class LocalAlreadyUnfavouredException extends RuntimeException {
     public LocalAlreadyUnfavouredException(Long id) {
         super("Local with id: " + id + " already unfavoured.");
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 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -1,13 +1,13 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
+import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
 import mk.ukim.finki.it.reservengo.model.domain.Customer;
+import mk.ukim.finki.it.reservengo.model.domain.Event;
 import mk.ukim.finki.it.reservengo.model.domain.Local;
-import mk.ukim.finki.it.reservengo.model.exceptions.CustomerIdNotFoundException;
-import mk.ukim.finki.it.reservengo.model.exceptions.LocalAlreadyFavouredException;
-import mk.ukim.finki.it.reservengo.model.exceptions.LocalAlreadyUnfavouredException;
-import mk.ukim.finki.it.reservengo.model.exceptions.UserEmailAlreadyExistsException;
+import mk.ukim.finki.it.reservengo.model.exceptions.*;
 import mk.ukim.finki.it.reservengo.repository.CustomerRepository;
 import mk.ukim.finki.it.reservengo.service.intf.CustomerService;
+import mk.ukim.finki.it.reservengo.service.intf.EventService;
 import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 import mk.ukim.finki.it.reservengo.service.intf.UserService;
@@ -21,9 +21,11 @@
     private final LocalService localService;
     private final UserService userService;
+    private final EventService eventService;
 
-    public CustomerServiceImpl(CustomerRepository customerRepository, LocalService localService, UserService userService) {
+    public CustomerServiceImpl(CustomerRepository customerRepository, LocalService localService, UserService userService, EventService eventService) {
         this.customerRepository = customerRepository;
         this.localService = localService;
         this.userService = userService;
+        this.eventService = eventService;
     }
 
@@ -67,3 +69,35 @@
         customerRepository.save(customer);
     }
+
+    @Override
+    public List<DisplayEventDTO> listFavouriteEvents(Long id) {
+        Customer customer = customerRepository.findById(id).orElseThrow(() -> new CustomerIdNotFoundException(id));
+        return DisplayEventDTO.fromEvents(customer.getFavouriteEvents());
+    }
+
+    @Override
+    public void addFavouriteEvent(Long userId, Long eventId) {
+        Customer customer = customerRepository.findById(userId).orElseThrow(() -> new CustomerIdNotFoundException(userId));
+        Event event = eventService.findEventById(eventId);
+
+        if (customer.getFavouriteEvents().contains(event)) {
+            throw new EventAlreadyFavouredException(eventId);
+        }
+
+        customer.getFavouriteEvents().add(event);
+        customerRepository.save(customer);
+    }
+
+    @Override
+    public void removeFavouriteEvent(Long userId, Long eventId) {
+        Customer customer = customerRepository.findById(userId).orElseThrow(() -> new CustomerIdNotFoundException(userId));
+        Event event = eventService.findEventById(eventId);
+
+        if (!customer.getFavouriteEvents().contains(event)) {
+            throw new EventAlreadyUnfavouredException(eventId);
+        }
+
+        customer.getFavouriteEvents().remove(event);
+        customerRepository.save(customer);
+    }
 }
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 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -2,5 +2,4 @@
 
 import mk.ukim.finki.it.reservengo.dto.eventDTO.CreateEventDTO;
-import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDetailsDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DeleteLocalPhotosDTO;
@@ -9,6 +8,4 @@
 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.EventStatus;
-import mk.ukim.finki.it.reservengo.model.enumerations.EventType;
 import mk.ukim.finki.it.reservengo.model.enumerations.Position;
 import mk.ukim.finki.it.reservengo.model.exceptions.EventNotInLocalException;
@@ -21,5 +18,4 @@
 import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 import mk.ukim.finki.it.reservengo.service.intf.UserService;
-import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -148,10 +144,4 @@
 
     @Override
-    public Page<DisplayEventDTO> findAllEventsByLocal(Long managerId, String name, EventType eventType, EventStatus eventStatus, int page, int size, String sortBy, String direction) {
-        Local local = findLocalByManagerId(managerId);
-        return eventService.searchEvents(local, name, eventType, eventStatus, page, size, sortBy, direction);
-    }
-
-    @Override
     public Event editEvent(Long managerId, Long eventId, CreateEventDTO createEventDTO) {
         Local local = findLocalByManagerId(managerId);
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/CustomerService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/CustomerService.java	(revision 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/CustomerService.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
+import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
 import mk.ukim.finki.it.reservengo.model.domain.Customer;
@@ -16,3 +17,9 @@
 
     void save(Customer customer);
+
+    List<DisplayEventDTO> listFavouriteEvents(Long id);
+
+    void addFavouriteEvent(Long userId, Long eventId);
+
+    void removeFavouriteEvent(Long userId, Long eventId);
 }
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 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -2,5 +2,4 @@
 
 import mk.ukim.finki.it.reservengo.dto.eventDTO.CreateEventDTO;
-import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDetailsDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DeleteLocalPhotosDTO;
@@ -9,8 +8,5 @@
 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.EventStatus;
-import mk.ukim.finki.it.reservengo.model.enumerations.EventType;
 import mk.ukim.finki.it.reservengo.model.enumerations.Position;
-import org.springframework.data.domain.Page;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -46,6 +42,4 @@
     void deleteEvent(Long managerId, Long eventId);
 
-    Page<DisplayEventDTO> findAllEventsByLocal(Long managerId, String name, EventType eventType, EventStatus eventStatus, int page, int size, String sortBy, String direction);
-
     Event editEvent(Long managerId, Long eventId, CreateEventDTO createEventDTO);
 }
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 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -113,4 +113,14 @@
         return ResponseEntity.status(HttpStatus.FORBIDDEN).body(ex.getMessage());
     }
+
+    @ExceptionHandler(EventAlreadyFavouredException.class)
+    public ResponseEntity<String> handleEventAlreadyFavoured(EventAlreadyFavouredException ex) {
+        return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
+    }
+
+    @ExceptionHandler(EventAlreadyUnfavouredException.class)
+    public ResponseEntity<String> handleEventAlreadyUnfavoured(EventAlreadyUnfavouredException ex) {
+        return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
+    }
 }
 
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/CustomerController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/CustomerController.java	(revision 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/CustomerController.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.it.reservengo.web.controller;
 
+import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
 import mk.ukim.finki.it.reservengo.model.domain.User;
@@ -40,3 +41,21 @@
         return new ResponseEntity<>(HttpStatus.OK);
     }
+
+    @GetMapping("/favourite-events")
+    public ResponseEntity<List<DisplayEventDTO>> listFavouriteEvents(@AuthenticationPrincipal User user) {
+        List<DisplayEventDTO> list = customerService.listFavouriteEvents(user.getId());
+        return new ResponseEntity<>(list, HttpStatus.OK);
+    }
+
+    @PostMapping("/favourite-events/add/{id}")
+    public ResponseEntity<Void> addFavouriteEvent(@AuthenticationPrincipal User user, @PathVariable Long id) {
+        customerService.addFavouriteEvent(user.getId(), id);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @PostMapping("/favourite-events/remove/{id}")
+    public ResponseEntity<Void> removeFavouriteEvent(@AuthenticationPrincipal User user, @PathVariable Long id) {
+        customerService.removeFavouriteEvent(user.getId(), id);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/EventController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/EventController.java	(revision 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/EventController.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -3,7 +3,9 @@
 import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.eventDTO.PagedEventDTO;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 import mk.ukim.finki.it.reservengo.model.enumerations.EventStatus;
 import mk.ukim.finki.it.reservengo.model.enumerations.EventType;
 import mk.ukim.finki.it.reservengo.service.intf.EventService;
+import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 import org.springframework.data.domain.Page;
 import org.springframework.http.HttpStatus;
@@ -18,11 +20,14 @@
 public class EventController {
     private final EventService eventService;
+    private final LocalService localService;
 
-    public EventController(EventService eventService) {
+    public EventController(EventService eventService, LocalService localService) {
         this.eventService = eventService;
+        this.localService = localService;
     }
 
     @GetMapping
     public ResponseEntity<PagedEventDTO> getEvents(
+            @RequestParam(required = false) Long localId,
             @RequestParam(required = false) String name,
             @RequestParam(required = false) EventType eventType,
@@ -33,5 +38,6 @@
             @RequestParam(defaultValue = "10") int size
     ) {
-        Page<DisplayEventDTO> dtoPage = eventService.searchEvents(null, name, eventType, eventStatus, page, size, sortBy, direction);
+        Local local = localId == null ? null : localService.findLocalById(localId);
+        Page<DisplayEventDTO> dtoPage = eventService.searchEvents(local, name, eventType, eventStatus, page, size, sortBy, direction);
         PagedEventDTO pagedEventDTO = PagedEventDTO.from(dtoPage);
         return new ResponseEntity<>(pagedEventDTO, 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 903697b124d8379847adf185dcc1da92812e1641)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java	(revision 25349f4e9d8ef8214ea7ac8c050961fb195abda9)
@@ -3,5 +3,4 @@
 import mk.ukim.finki.it.reservengo.dto.eventDTO.CreateEventDTO;
 import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
-import mk.ukim.finki.it.reservengo.dto.eventDTO.PagedEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDetailsDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DeleteLocalPhotosDTO;
@@ -9,8 +8,5 @@
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDetailsDTO;
 import mk.ukim.finki.it.reservengo.model.domain.User;
-import mk.ukim.finki.it.reservengo.model.enumerations.EventStatus;
-import mk.ukim.finki.it.reservengo.model.enumerations.EventType;
 import mk.ukim.finki.it.reservengo.service.intf.LocalManagerService;
-import org.springframework.data.domain.Page;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -79,20 +75,4 @@
     }
 
-    @GetMapping("/events")
-    public ResponseEntity<PagedEventDTO> getEvents(
-            @AuthenticationPrincipal User user,
-            @RequestParam(required = false) String name,
-            @RequestParam(required = false) EventType eventType,
-            @RequestParam(required = false) EventStatus eventStatus, // active, upcoming
-            @RequestParam(required = false, defaultValue = "name") String sortBy, // created at, name
-            @RequestParam(required = false, defaultValue = "asc") String direction,
-            @RequestParam(defaultValue = "0") int page,
-            @RequestParam(defaultValue = "10") int size
-    ) {
-        Page<DisplayEventDTO> dtoPage = localManagerService.findAllEventsByLocal(user.getId(), name, eventType, eventStatus, page, size, sortBy, direction);
-        PagedEventDTO pagedEventDTO = PagedEventDTO.from(dtoPage);
-        return new ResponseEntity<>(pagedEventDTO, HttpStatus.OK);
-    }
-
     @PutMapping("/events/edit/{id}")
     public ResponseEntity<DisplayEventDTO> editEvent(@AuthenticationPrincipal User user, @PathVariable Long id, @RequestBody CreateEventDTO createEventDTO) {
