Index: src/main/java/mk/ukim/finki/db/distributorapp/_web/api/RestCityController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/_web/api/RestCityController.java	(revision 863e8b9c1fc20326aadeb06267714f3f30705170)
+++ src/main/java/mk/ukim/finki/db/distributorapp/_web/api/RestCityController.java	(revision 65546ef268c80b0fff1e53c9830c280b81188e56)
@@ -4,4 +4,6 @@
 import mk.ukim.finki.db.distributorapp.city.CityService;
 import mk.ukim.finki.db.distributorapp.city.dto.CityDtoRegister;
+import mk.ukim.finki.db.distributorapp.users.UserService;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -11,4 +13,5 @@
 import org.springframework.web.bind.annotation.RestController;
 
+import java.security.Principal;
 import java.util.List;
 
@@ -19,4 +22,5 @@
 public class RestCityController {
     private final CityService cityService;
+    private final UserService userService;
 
     @GetMapping("/all")
@@ -26,3 +30,12 @@
         return ResponseEntity.ok().body(cities);
     }
+
+    @GetMapping("/manager/available-cities")
+    @PreAuthorize("hasAnyRole('MANAGER')")
+    public ResponseEntity<List<CityDtoRegister>> getAvailableCitiesForManager(Principal principal) {
+        String userEmail = principal.getName();
+        UserDto user = this.userService.findUserDtoByEmail(userEmail);
+        List<CityDtoRegister> cities = this.cityService.findCitiesForManager(user.getId());
+        return ResponseEntity.ok().body(cities);
+    }
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/_web/api/RestVehicleController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/_web/api/RestVehicleController.java	(revision 863e8b9c1fc20326aadeb06267714f3f30705170)
+++ src/main/java/mk/ukim/finki/db/distributorapp/_web/api/RestVehicleController.java	(revision 65546ef268c80b0fff1e53c9830c280b81188e56)
@@ -9,4 +9,5 @@
 import mk.ukim.finki.db.distributorapp.warehouse.WarehouseService;
 import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseDto;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -14,4 +15,5 @@
 
 import java.security.Principal;
+import java.time.LocalDate;
 import java.util.List;
 
@@ -27,5 +29,5 @@
     @GetMapping("/find-by-city")
     @PreAuthorize("hasAnyRole('ADMIN')")
-    public ResponseEntity<List<VehicleBasicDto>> getVehiclesByCity(@RequestParam Integer cityId){
+    public ResponseEntity<List<VehicleBasicDto>> getVehiclesByCity(@RequestParam Integer cityId) {
         WarehouseDto wh = this.warehouseService.findByCityId(cityId);
         List<VehicleBasicDto> vehiclesByCity = this.vehicleService.getVehiclesByWarehouse(wh.getId());
@@ -35,5 +37,5 @@
     @PostMapping("/add-new")
     @PreAuthorize("hasAnyRole('ADMIN')")
-    public ResponseEntity<VehicleDto> addNewVehicle(@RequestBody VehicleBasicDto vehicleBasicDto){
+    public ResponseEntity<VehicleDto> addNewVehicle(@RequestBody VehicleBasicDto vehicleBasicDto) {
         return null;
     }
@@ -47,3 +49,15 @@
         return ResponseEntity.ok(vehicles);
     }
+
+    @GetMapping("/manager/vehicles/available-vehicles")
+    @PreAuthorize("hasAnyRole('MANAGER')")
+    public ResponseEntity<List<VehicleBasicDto>> getManagerAvailableVehicles(
+            Principal principal,
+            @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date
+    ) {
+        String userEmail = principal.getName();
+        UserDto user = this.userService.findUserDtoByEmail(userEmail);
+        List<VehicleBasicDto> vehicles = this.vehicleService.getAvailableVehiclesForDateByManager(user.getId(), date);
+        return ResponseEntity.ok(vehicles);
+    }
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/city/CityRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/city/CityRepository.java	(revision 863e8b9c1fc20326aadeb06267714f3f30705170)
+++ src/main/java/mk/ukim/finki/db/distributorapp/city/CityRepository.java	(revision 65546ef268c80b0fff1e53c9830c280b81188e56)
@@ -53,3 +53,16 @@
     )
     void deleteById(@NonNull Integer id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    with manager_region as (select c.region_id as region
+                    from city c
+                    join users u on u.user_id=c.city_id
+                    where u.user_id = ?1)
+                    select c1.city_id as id, c1.city_name as name
+                    from city c1 join manager_region mr on mr.region = c1.region_id
+                    """
+    )
+    List<CityDtoRegister> findCitiesForManager(Long id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/city/CityService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/city/CityService.java	(revision 863e8b9c1fc20326aadeb06267714f3f30705170)
+++ src/main/java/mk/ukim/finki/db/distributorapp/city/CityService.java	(revision 65546ef268c80b0fff1e53c9830c280b81188e56)
@@ -15,3 +15,5 @@
 
     void deleteById(Integer id);
+
+    List<CityDtoRegister> findCitiesForManager(Long id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/city/CityServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/city/CityServiceImpl.java	(revision 863e8b9c1fc20326aadeb06267714f3f30705170)
+++ src/main/java/mk/ukim/finki/db/distributorapp/city/CityServiceImpl.java	(revision 65546ef268c80b0fff1e53c9830c280b81188e56)
@@ -32,3 +32,8 @@
         this.cityRepository.deleteById(id);
     }
+
+    @Override
+    public List<CityDtoRegister> findCitiesForManager(Long id) {
+        return this.cityRepository.findCitiesForManager(id);
+    }
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleRepository.java	(revision 863e8b9c1fc20326aadeb06267714f3f30705170)
+++ src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleRepository.java	(revision 65546ef268c80b0fff1e53c9830c280b81188e56)
@@ -10,4 +10,5 @@
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
@@ -122,3 +123,16 @@
     )
     List<VehicleBasicDto> getBasicVehiclesByManager(@Param("manager") Long managerId);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select v.veh_id as id,
+                    v.wh_id as warehouseId,
+                    v.veh_plate as plateNumber
+                    from vehicle v
+                    left join delivery d on v.veh_id = d.veh_id and d.del_date = ?2
+                    where d.del_id is null
+                    """
+    )
+    List<VehicleBasicDto> getAvailableVehiclesForDateByManager(Long id, LocalDate date);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleService.java	(revision 863e8b9c1fc20326aadeb06267714f3f30705170)
+++ src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleService.java	(revision 65546ef268c80b0fff1e53c9830c280b81188e56)
@@ -4,4 +4,5 @@
 import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleDto;
 
+import java.time.LocalDate;
 import java.util.List;
 
@@ -19,3 +20,5 @@
 
     List<VehicleBasicDto> getBasicVehiclesByManagerId(Long managerId);
+
+    List<VehicleBasicDto> getAvailableVehiclesForDateByManager(Long id, LocalDate date);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleServiceImpl.java	(revision 863e8b9c1fc20326aadeb06267714f3f30705170)
+++ src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleServiceImpl.java	(revision 65546ef268c80b0fff1e53c9830c280b81188e56)
@@ -6,4 +6,5 @@
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
 import java.util.List;
 
@@ -65,3 +66,8 @@
         return this.vehicleRepository.getBasicVehiclesByManager(managerId);
     }
+
+    @Override
+    public List<VehicleBasicDto> getAvailableVehiclesForDateByManager(Long id, LocalDate date) {
+        return this.vehicleRepository.getAvailableVehiclesForDateByManager(id, date);
+    }
 }
