Index: ReserveNGo-backend/.gitignore
===================================================================
--- ReserveNGo-backend/.gitignore	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/.gitignore	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -15,5 +15,5 @@
 
 ### IntelliJ IDEA ###
-.idea
+.idea/
 *.iws
 *.iml
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -42,4 +42,5 @@
                         .permitAll()
                         .requestMatchers("/api/customer/**").hasRole("CUSTOMER")
+                        .requestMatchers("/api/admin/**").hasRole("ADMIN")
                         .anyRequest()
                         .authenticated()
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Local.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Local.java	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Local.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -69,4 +69,19 @@
     private List<LocalWorker> workers;
 
+    public Local(String name) {
+        this.name = name;
+    }
+
+    public double calculateLocalAverageRating() {
+        if (ratings == null || ratings.isEmpty()) {
+            return 0.0;
+        }
+        double sum = 0.0;
+        for (Integer rating : ratings.values()) {
+            sum += rating;
+        }
+        return sum / ratings.size();
+    }
+
 
     public Long getId() {
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Reservation.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Reservation.java	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Reservation.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -42,3 +42,7 @@
     @Enumerated(EnumType.STRING)
     private ReservationStatus status;
+
+    public void setStatus(ReservationStatus status) {
+        this.status = status;
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalIdNotFoundException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalIdNotFoundException.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LocalIdNotFoundException.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class LocalIdNotFoundException extends RuntimeException {
+    public LocalIdNotFoundException(Long id) {
+        super("Local with ID " + id + " not found.");
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ReservationIdNotFoundException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ReservationIdNotFoundException.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/ReservationIdNotFoundException.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class ReservationIdNotFoundException extends RuntimeException {
+    public ReservationIdNotFoundException(Long id) {
+        super("Reservation with ID " + id + " was not found");
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/ReservationRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/ReservationRepository.java	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/ReservationRepository.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -5,5 +5,8 @@
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
 public interface ReservationRepository extends JpaRepository<Reservation, Long> {
+    List<Reservation> findAllByCustomerId(Long customerId);
 }
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 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -1,4 +1,6 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
+import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.repository.LocalRepository;
 import mk.ukim.finki.it.reservengo.service.intf.AdminService;
 import org.springframework.stereotype.Service;
@@ -6,3 +8,20 @@
 @Service
 public class AdminServiceImpl implements AdminService {
+
+    private final LocalRepository localRepository;
+
+    public AdminServiceImpl(LocalRepository localRepository) {
+        this.localRepository = localRepository;
+    }
+
+    @Override
+    public void addLocal(String name) {
+        Local local = new Local(name);
+        localRepository.save(local);
+    }
+
+    @Override
+    public void deleteLocal(Long id) {
+        localRepository.deleteById(id);
+    }
 }
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 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -92,7 +92,4 @@
         String jwt = jwtService.generateTokenNoClaims(user);
 
-        System.out.println(jwt);
-        System.out.println(user);
-
         return new JWTAuthenticationResponse(
                 user.getId(),
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 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -2,4 +2,5 @@
 
 import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.model.exceptions.LocalIdNotFoundException;
 import mk.ukim.finki.it.reservengo.repository.LocalRepository;
 import mk.ukim.finki.it.reservengo.service.intf.LocalService;
@@ -22,5 +23,10 @@
     }
 
-    
+    @Override
+    public Local getLocalById(Long id) {
+        return localRepository.findById(id)
+                .orElseThrow(() -> new LocalIdNotFoundException(id));
+    }
+
 
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/ReservationServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/ReservationServiceImpl.java	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/ReservationServiceImpl.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -1,8 +1,31 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
+import mk.ukim.finki.it.reservengo.model.Reservation;
+import mk.ukim.finki.it.reservengo.model.exceptions.ReservationIdNotFoundException;
+import mk.ukim.finki.it.reservengo.repository.ReservationRepository;
 import mk.ukim.finki.it.reservengo.service.intf.ReservationService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
+
 @Service
 public class ReservationServiceImpl implements ReservationService {
+
+    private final ReservationRepository reservationRepository;
+
+    public ReservationServiceImpl(ReservationRepository reservationRepository) {
+        this.reservationRepository = reservationRepository;
+    }
+
+    @Override
+    public Reservation getReservationById(Long id) {
+        return this.reservationRepository.findById(id).orElseThrow(() -> new ReservationIdNotFoundException(id));
+    }
+
+    @Override
+    public List<Reservation> getCustomerReservations(Long id) {
+        return this.reservationRepository.findAllByCustomerId(id);
+    }
+
 }
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 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -2,3 +2,7 @@
 
 public interface AdminService {
+
+    void addLocal(String name);
+
+    void deleteLocal(Long id);
 }
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 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -7,3 +7,5 @@
 public interface LocalService {
     List<Local> listAll();
+
+    Local getLocalById(Long id);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/ReservationService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/ReservationService.java	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/ReservationService.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -1,4 +1,10 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
+import mk.ukim.finki.it.reservengo.model.Reservation;
+
+import java.util.List;
+
 public interface ReservationService {
+    Reservation getReservationById(Long id);
+    List<Reservation> getCustomerReservations(Long id);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AdminController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AdminController.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AdminController.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -0,0 +1,29 @@
+package mk.ukim.finki.it.reservengo.web;
+
+import mk.ukim.finki.it.reservengo.service.intf.AdminService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/admin")
+@CrossOrigin(origins = "*")
+public class AdminController {
+
+    private final AdminService adminService;
+
+    public AdminController(AdminService adminService) {
+        this.adminService = adminService;
+    }
+
+    @PostMapping("/add")
+    public ResponseEntity<?> addLocal(@RequestParam String name) {
+        adminService.addLocal(name);
+        return ResponseEntity.ok().build(); // optional if you want to return something after adding
+    }
+
+    @PostMapping("/delete/{id}")
+    public ResponseEntity<?> deleteLocal(@PathVariable Long id) {
+        adminService.deleteLocal(id);
+        return ResponseEntity.ok().build(); // optional if you want to return something after deleting
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -2,12 +2,13 @@
 
 import mk.ukim.finki.it.reservengo.model.Customer;
+import mk.ukim.finki.it.reservengo.model.Reservation;
 import mk.ukim.finki.it.reservengo.model.User;
 import mk.ukim.finki.it.reservengo.service.intf.CustomerService;
+import mk.ukim.finki.it.reservengo.service.intf.ReservationService;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.core.annotation.AuthenticationPrincipal;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 @RestController
@@ -17,7 +18,9 @@
 
     private final CustomerService customerService;
+    private final ReservationService reservationService;
 
-    public CustomerController(CustomerService customerService) {
+    public CustomerController(CustomerService customerService, ReservationService reservationService) {
         this.customerService = customerService;
+        this.reservationService = reservationService;
     }
 
@@ -33,3 +36,10 @@
         return ResponseEntity.ok(userProfile);
     }
+
+
+    @GetMapping("/reservations")
+    public ResponseEntity<?> getCustomerReservations(@AuthenticationPrincipal User user) {
+        List<Reservation> customerReservations = reservationService.getCustomerReservations(user.getId());
+        return ResponseEntity.ok(customerReservations);
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalController.java	(revision 17bf12d01090e4cd5be0ef692e22fb445a8c6a95)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalController.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -1,13 +1,11 @@
 package mk.ukim.finki.it.reservengo.web;
 
+import mk.ukim.finki.it.reservengo.model.Local;
 import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
-@RequestMapping("/api")
+@RequestMapping("/api/locals")
 @CrossOrigin("*")
 public class LocalController {
@@ -19,7 +17,15 @@
     }
 
-    @GetMapping("/locals")
-    public ResponseEntity<?> getLocals(){
+    @GetMapping
+    public ResponseEntity<?> getLocals() {
         return ResponseEntity.ok(localService.listAll());
     }
+
+    @GetMapping("/{id}")
+    public ResponseEntity<?> getLocalInformation(@PathVariable Long id) {
+        Local local = localService.getLocalById(id);
+        return ResponseEntity.ok(local);
+    }
+
+
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/ReservationController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/ReservationController.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/ReservationController.java	(revision 48940995dcf9cf95fefb7c0d601060dc84f3a121)
@@ -0,0 +1,35 @@
+package mk.ukim.finki.it.reservengo.web;
+
+import mk.ukim.finki.it.reservengo.model.Reservation;
+import mk.ukim.finki.it.reservengo.model.enumerations.ReservationStatus;
+import mk.ukim.finki.it.reservengo.service.intf.ReservationService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api")
+@CrossOrigin("*")
+public class ReservationController {
+    private final ReservationService reservationService;
+
+    public ReservationController(ReservationService reservationService) {
+        this.reservationService = reservationService;
+    }
+
+    //TODO RE-EVALUATE RESERVATIONS ARCHITECTURE
+
+    @GetMapping("/reservations/{id}")
+    public ResponseEntity<?> getReservationInformation(@PathVariable Long id) {
+        Reservation reservation = reservationService.getReservationById(id);
+        return ResponseEntity.ok(reservation);
+    }
+
+    @PostMapping("/reservations/{id}/status")
+    public ResponseEntity<?> updateReservationStatus(@PathVariable Long id,
+                                                     @RequestParam ReservationStatus status) {
+        Reservation reservation = reservationService.getReservationById(id);
+        reservation.setStatus(status);
+        return ResponseEntity.ok(reservation);
+    }
+
+}
