Index: c/main/java/mk/ukim/finki/db/distributorapp/model/sec/ConfirmationToken.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/sec/ConfirmationToken.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ 	(revision )
@@ -1,36 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.sec;
-
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.Users;
-
-import java.util.Date;
-import java.util.UUID;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Entity
-@Table(name = "confirmationToken")
-public class ConfirmationToken {
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    @Column(name = "token_id")
-    private Long tokenId;
-
-    private String confirmationToken;
-
-    private Date createdDate;
-
-    @OneToOne(targetEntity = Users.class, fetch = FetchType.EAGER)
-    private Users user;
-
-    public ConfirmationToken(Users user){
-        this.user=user;
-        createdDate=new Date();
-        confirmationToken = UUID.randomUUID().toString();
-    }
-}
Index: c/main/java/mk/ukim/finki/db/distributorapp/model/sec/EmailService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/sec/EmailService.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.sec;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mail.SimpleMailMessage;
-import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-@Service("emailService")
-public class EmailService {
-    private final JavaMailSender javaMailSender;
-
-    @Autowired
-    public EmailService(JavaMailSender javaMailSender) {
-        this.javaMailSender = javaMailSender;
-    }
-
-    @Async
-    public void sendEmail(SimpleMailMessage message) {
-        javaMailSender.send(message);
-    }
-}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ConfirmationTokenRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ConfirmationTokenRepository.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ConfirmationTokenRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-import mk.ukim.finki.db.distributorapp.model.sec.ConfirmationToken;
+import mk.ukim.finki.db.distributorapp.security.ConfirmationToken;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -9,4 +9,5 @@
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalTime;
 import java.util.List;
 import java.util.Optional;
@@ -37,5 +38,5 @@
             value = ""
     )
-    Optional<Customer> create();
+    Optional<Customer> create(Long id, String customerEDB, String customerName, String customerStreet, LocalTime openTime, LocalTime closeTime, String customerImage);
 
     @Modifying
@@ -45,5 +46,5 @@
             value = ""
     )
-    Optional<Customer> edit();
+    Optional<Customer> edit(Long id, String customerEDB, String customerName, String customerStreet, LocalTime openTime, LocalTime closeTime, String customerImage);
 
     @Modifying
@@ -53,4 +54,4 @@
             value = ""
     )
-    void delete();
+    void delete(Long id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryStatusRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryStatusRepository.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryStatusRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -37,5 +37,5 @@
             value = ""
     )
-    Optional<Delivery_Status> create();
+    Optional<Delivery_Status> create(String name, String description);
 
     @Modifying
@@ -45,5 +45,5 @@
             value = ""
     )
-    Optional<Delivery_Status> edit();
+    Optional<Delivery_Status> edit(Short id, String name, String description);
 
     @Modifying
@@ -53,4 +53,4 @@
             value = ""
     )
-    void delete();
+    void delete(Short id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -37,5 +37,5 @@
             value = ""
     )
-    Optional<Manager> create();
+    Optional<Manager> create(Long id, Integer whId);
 
     @Modifying
@@ -45,5 +45,5 @@
             value = ""
     )
-    Optional<Manager> edit();
+    Optional<Manager> edit(Long id, Integer whId);
 
     @Modifying
@@ -53,4 +53,4 @@
             value = ""
     )
-    void delete();
+    void delete(Long id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/OrderStatusRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/OrderStatusRepository.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/OrderStatusRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -37,5 +37,5 @@
             value = ""
     )
-    Optional<Order_Status> create();
+    Optional<Order_Status> create(String name, String description);
 
     @Modifying
@@ -45,5 +45,5 @@
             value = ""
     )
-    Optional<Order_Status> edit();
+    Optional<Order_Status> edit(Short id, String name, String description);
 
     @Modifying
@@ -53,4 +53,4 @@
             value = ""
     )
-    void delete();
+    void delete(Short id);
 }
Index: c/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatus.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatus.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ 	(revision )
@@ -1,56 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.statuses.Pro_Forma_Status;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface ProFormaStatus extends JpaRepository<Pro_Forma_Status, Short> {
-    @Query(
-            nativeQuery = true,
-            value = ""
-    )
-    List<Pro_Forma_Status> listAll();
-
-    @Query(
-            nativeQuery = true,
-            value = ""
-    )
-    List<Pro_Forma_Status> findAllByName(@NonNull @Param("name") String name);
-
-    @Query(
-            nativeQuery = true,
-            value = ""
-    )
-    Optional<Pro_Forma_Status> findById(@NonNull @Param("id") Short id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = ""
-    )
-    Optional<Pro_Forma_Status> create();
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = ""
-    )
-    Optional<Pro_Forma_Status> edit();
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = ""
-    )
-    void delete();
-}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatusRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatusRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatusRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,56 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.statuses.Pro_Forma_Status;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface ProFormaStatusRepository extends JpaRepository<Pro_Forma_Status, Short> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Pro_Forma_Status> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Pro_Forma_Status> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Pro_Forma_Status> findById(@NonNull @Param("id") Short id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Pro_Forma_Status> create(String name, String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Pro_Forma_Status> edit(Short id, String name, String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete(Short id);
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -9,8 +9,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Optional;
 
-public interface VehicleRepository extends JpaRepository<Vehicle, Long> {
+public interface VehicleRepository extends JpaRepository<Vehicle, Integer> {
     @Query(
             nativeQuery = true,
@@ -23,5 +24,5 @@
             value = ""
     )
-    List<Vehicle> findAllByName(@NonNull @Param("name") String name);
+    List<Vehicle> findAllByWarehouse(@NonNull @Param("wh") Integer warehouseId);
 
     @Query(
@@ -29,5 +30,5 @@
             value = ""
     )
-    Optional<Vehicle> findById(@NonNull @Param("id") Short id);
+    Optional<Vehicle> findById(@NonNull @Param("id") Integer id);
 
     @Modifying
@@ -37,5 +38,7 @@
             value = ""
     )
-    Optional<Vehicle> create();
+    Optional<Vehicle> create(Integer vehicleCarryWeight, Short vehicleServiceInterval, Integer vehicleKilometers,
+                             LocalDate vehicleLastService, Integer vehicleLastServiceKm, String vehiclePlate,
+                             String vehicleVIN, LocalDate vehicleRegDate, Integer whId, Long driverId);
 
     @Modifying
@@ -45,5 +48,7 @@
             value = ""
     )
-    Optional<Vehicle> edit();
+    Optional<Vehicle> edit(Integer id, Integer vehicleCarryWeight, Short vehicleServiceInterval, Integer vehicleKilometers,
+                           LocalDate vehicleLastService, Integer vehicleLastServiceKm, String vehiclePlate,
+                           String vehicleVIN, LocalDate vehicleRegDate, Integer whId, Long driverId);
 
     @Modifying
@@ -53,4 +58,4 @@
             value = ""
     )
-    void delete();
+    void delete(Integer id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -23,5 +23,5 @@
             value = ""
     )
-    List<Warehouse> findAllByName(@NonNull @Param("name") String name);
+    List<Warehouse> findAllByCity(@NonNull @Param("city") Long city);
 
     @Query(
@@ -37,5 +37,5 @@
             value = ""
     )
-    Optional<Warehouse> create();
+    Optional<Warehouse> create(String whAddress, Long city);
 
     @Modifying
@@ -45,5 +45,5 @@
             value = ""
     )
-    Optional<Warehouse> edit();
+    Optional<Warehouse> edit(Long id, String whAddress, Long city);
 
     @Modifying
Index: src/main/java/mk/ukim/finki/db/distributorapp/security/ConfirmationToken.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/security/ConfirmationToken.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/security/ConfirmationToken.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,36 @@
+package mk.ukim.finki.db.distributorapp.security;
+
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.Users;
+
+import java.util.Date;
+import java.util.UUID;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "confirmationToken")
+public class ConfirmationToken {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "token_id")
+    private Long tokenId;
+
+    private String confirmationToken;
+
+    private Date createdDate;
+
+    @OneToOne(targetEntity = Users.class, fetch = FetchType.EAGER)
+    private Users user;
+
+    public ConfirmationToken(Users user){
+        this.user=user;
+        createdDate=new Date();
+        confirmationToken = UUID.randomUUID().toString();
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/security/EmailService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/security/EmailService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/security/EmailService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,22 @@
+package mk.ukim.finki.db.distributorapp.security;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+@Service("emailService")
+public class EmailService {
+    private final JavaMailSender javaMailSender;
+
+    @Autowired
+    public EmailService(JavaMailSender javaMailSender) {
+        this.javaMailSender = javaMailSender;
+    }
+
+    @Async
+    public void sendEmail(SimpleMailMessage message) {
+        javaMailSender.send(message);
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -1,4 +1,23 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.Customer;
+
+import java.time.LocalTime;
+import java.util.List;
+import java.util.Optional;
+
 public interface CustomerService {
+
+    List<Customer> findAllCustomers();
+
+    List<Customer> findCustomerByName(String name);
+
+    Optional<Customer> findCustomerById(Long id);
+
+    Optional<Customer> create(Long id, String customerEDB, String customerName,
+                              String customerStreet, LocalTime openTime, LocalTime closeTime, String customerImage);
+
+    Optional<Customer> edit (Long id, String customerEDB, String customerName,
+                             String customerStreet, LocalTime openTime, LocalTime closeTime, String customerImage);
+    void delete (Long id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryStatusService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryStatusService.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryStatusService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -1,4 +1,20 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.statuses.Delivery_Status;
+
+import java.util.List;
+import java.util.Optional;
+
 public interface DeliveryStatusService {
+    List<Delivery_Status> listDeliveryStatus();
+
+    Optional<Delivery_Status> getDeliveryStatusById(Short id);
+
+    Optional<Delivery_Status> createDeliveryStatus(String name, String description);
+
+    Optional<Delivery_Status> updateDeliveryStatus(Short id, String name, String description);
+
+    List<Delivery_Status> getDeliveryStatusByName(String name);
+
+    void delete(Short id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -1,4 +1,20 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.Manager;
+import mk.ukim.finki.db.distributorapp.model.Warehouse;
+
+import java.util.List;
+import java.util.Optional;
+
 public interface ManagerService {
+    List<Manager> getAllManagers();
+
+    Optional<Manager> getManagerById(int id);
+
+    Optional<Manager> createManager(Long id, Warehouse warehouse);
+
+    Optional<Manager> updateManager(Manager manager, Warehouse warehouse);
+
+    void deleteManagerById(Long id);
+
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/OrderStatusService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/OrderStatusService.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/OrderStatusService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -1,4 +1,20 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.statuses.Order_Status;
+
+import java.util.List;
+import java.util.Optional;
+
 public interface OrderStatusService {
+    List<Order_Status> listOrderStatus();
+
+    Optional<Order_Status> getOrderStatusById(Short id);
+
+    Optional<Order_Status> createOrderStatus(String name, String description);
+
+    Optional<Order_Status> updateOrderStatus(Short id, String name, String description);
+
+    List<Order_Status> getOrderStatusByName(String name);
+
+    void delete(Short id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaStatusService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaStatusService.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaStatusService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -1,4 +1,20 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.statuses.Pro_Forma_Status;
+
+import java.util.List;
+import java.util.Optional;
+
 public interface ProFormaStatusService {
+    List<Pro_Forma_Status> listProFormaStatus();
+
+    Optional<Pro_Forma_Status> getProFormaStatusById(Short id);
+
+    Optional<Pro_Forma_Status> createProFormaStatus(String name, String description);
+
+    Optional<Pro_Forma_Status> updateProFormaStatus(Short id, String name, String description);
+
+    List<Pro_Forma_Status> getProFormaStatusByName(String name);
+
+    void delete(Short id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -1,4 +1,26 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.Driver;
+import mk.ukim.finki.db.distributorapp.model.Vehicle;
+import mk.ukim.finki.db.distributorapp.model.Warehouse;
+
+import java.time.LocalDate;
+import java.util.List;
+import java.util.Optional;
+
 public interface VehicleService {
+
+    List<Vehicle> getAllVehicles();
+
+    List<Vehicle> getVehiclesByWarehouse(Warehouse warehouse);
+
+    Optional<Vehicle> createVehicle(Integer vehicleCarryWeight, Short vehicleServiceInterval, Integer vehicleKilometers,
+                                    LocalDate vehicleLastService, Integer vehicleLastServiceKm, String vehiclePlate,
+                                    String vehicleVIN, LocalDate vehicleRegDate, Warehouse warehouse, Driver driver);
+
+    Optional<Vehicle> updateVehicle(Integer id, Integer vehicleCarryWeight, Short vehicleServiceInterval, Integer vehicleKilometers,
+                                    LocalDate vehicleLastService, Integer vehicleLastServiceKm, String vehiclePlate,
+                                    String vehicleVIN, LocalDate vehicleRegDate, Warehouse warehouse, Driver driver);
+
+    void deleteVehicleById(Integer id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -1,4 +1,21 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.City;
+import mk.ukim.finki.db.distributorapp.model.Warehouse;
+
+import java.util.List;
+import java.util.Optional;
+
 public interface WarehouseService {
+    List<Warehouse> findAll();
+
+    List<Warehouse> findAllByCity(City city);
+
+    Optional<Warehouse> findById(Integer id);
+
+    Optional<Warehouse> create(String whAddress, City city);
+
+    Optional<Warehouse> edit(Long id, String whAddress, City city);
+
+    Optional<Warehouse> delete(Integer id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,48 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.Customer;
+import mk.ukim.finki.db.distributorapp.repository.CustomerRepository;
+import mk.ukim.finki.db.distributorapp.service.CustomerService;
+
+import java.time.LocalTime;
+import java.util.List;
+import java.util.Optional;
+
+public class CustomerServiceImpl implements CustomerService {
+
+    private final CustomerRepository customerRepository;
+
+    public CustomerServiceImpl(CustomerRepository customerRepository) {
+        this.customerRepository = customerRepository;
+    }
+
+    @Override
+    public List<Customer> findAllCustomers() {
+        return this.customerRepository.findAll();
+    }
+
+    @Override
+    public List<Customer> findCustomerByName(String name) {
+        return this.customerRepository.findAllByName(name);
+    }
+
+    @Override
+    public Optional<Customer> findCustomerById(Long id) {
+        return this.customerRepository.findById(id);
+    }
+
+    @Override
+    public Optional<Customer> create(Long id, String customerEDB, String customerName, String customerStreet, LocalTime openTime, LocalTime closeTime, String customerImage) {
+        return this.customerRepository.create(id, customerEDB,customerName,customerStreet,openTime,closeTime,customerImage);
+    }
+
+    @Override
+    public Optional<Customer> edit(Long id, String customerEDB, String customerName, String customerStreet, LocalTime openTime, LocalTime closeTime, String customerImage) {
+        return this.customerRepository.edit(id, customerEDB,customerName,customerStreet,openTime,closeTime,customerImage);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.customerRepository.delete(id);
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryStatusServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryStatusServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryStatusServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,46 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.statuses.Delivery_Status;
+import mk.ukim.finki.db.distributorapp.repository.DeliveryStatusRepository;
+import mk.ukim.finki.db.distributorapp.service.DeliveryStatusService;
+
+import java.util.List;
+import java.util.Optional;
+
+public class DeliveryStatusServiceImpl implements DeliveryStatusService {
+    private final DeliveryStatusRepository deliveryStatusRepository;
+
+    public DeliveryStatusServiceImpl(DeliveryStatusRepository deliveryStatusRepository) {
+        this.deliveryStatusRepository = deliveryStatusRepository;
+    }
+
+    @Override
+    public List<Delivery_Status> listDeliveryStatus() {
+        return this.deliveryStatusRepository.findAll();
+    }
+
+    @Override
+    public Optional<Delivery_Status> getDeliveryStatusById(Short id) {
+        return this.deliveryStatusRepository.findById(id);
+    }
+
+    @Override
+    public Optional<Delivery_Status> createDeliveryStatus(String name, String description) {
+        return this.deliveryStatusRepository.create(name, description);
+    }
+
+    @Override
+    public Optional<Delivery_Status> updateDeliveryStatus(Short id, String name, String description) {
+        return this.deliveryStatusRepository.edit(id, name, description);
+    }
+
+    @Override
+    public List<Delivery_Status> getDeliveryStatusByName(String name) {
+        return this.deliveryStatusRepository.findAllByName(name);
+    }
+
+    @Override
+    public void delete(Short id) {
+        this.deliveryStatusRepository.delete(id);
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManagerServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManagerServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManagerServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.Manager;
+import mk.ukim.finki.db.distributorapp.model.Warehouse;
+import mk.ukim.finki.db.distributorapp.repository.ManagerRepository;
+import mk.ukim.finki.db.distributorapp.service.ManagerService;
+
+import java.util.List;
+import java.util.Optional;
+
+public class ManagerServiceImpl implements ManagerService {
+    private final ManagerRepository managerRepository;
+
+    public ManagerServiceImpl(ManagerRepository managerRepository) {
+        this.managerRepository = managerRepository;
+    }
+
+    @Override
+    public List<Manager> getAllManagers() {
+        return this.managerRepository.findAll();
+    }
+
+    @Override
+    public Optional<Manager> getManagerById(int id) {
+        return this.managerRepository.findById(id);
+    }
+
+    @Override
+    public Optional<Manager> createManager(Long id, Warehouse warehouse) {
+        return this.managerRepository.create(id, warehouse.getWarehouse_id());
+    }
+
+    @Override
+    public Optional<Manager> updateManager(Manager manager, Warehouse warehouse) {
+        return this.managerRepository.edit(manager.getUser_id(),warehouse.getWarehouse_id());
+    }
+
+    @Override
+    public void deleteManagerById(Long id) {
+        this.managerRepository.delete(id);
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderStatusServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderStatusServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderStatusServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,47 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.statuses.Order_Status;
+import mk.ukim.finki.db.distributorapp.repository.OrderStatusRepository;
+import mk.ukim.finki.db.distributorapp.service.OrderStatusService;
+
+import java.util.List;
+import java.util.Optional;
+
+public class OrderStatusServiceImpl implements OrderStatusService {
+    private final OrderStatusRepository orderStatusRepository;
+
+    public OrderStatusServiceImpl(OrderStatusRepository orderStatusRepository) {
+        this.orderStatusRepository = orderStatusRepository;
+    }
+
+
+    @Override
+    public List<Order_Status> listOrderStatus() {
+        return this.orderStatusRepository.findAll();
+    }
+
+    @Override
+    public Optional<Order_Status> getOrderStatusById(Short id) {
+        return this.orderStatusRepository.findById(id);
+    }
+
+    @Override
+    public Optional<Order_Status> createOrderStatus(String name, String description) {
+        return this.orderStatusRepository.create(name, description);
+    }
+
+    @Override
+    public Optional<Order_Status> updateOrderStatus(Short id, String name, String description) {
+        return this.orderStatusRepository.edit(id, name, description);
+    }
+
+    @Override
+    public List<Order_Status> getOrderStatusByName(String name) {
+        return this.orderStatusRepository.findAllByName(name);
+    }
+
+    @Override
+    public void delete(Short id) {
+        this.orderStatusRepository.deleteById(id);
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaStatusServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaStatusServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaStatusServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,46 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.statuses.Pro_Forma_Status;
+import mk.ukim.finki.db.distributorapp.repository.ProFormaStatusRepository;
+import mk.ukim.finki.db.distributorapp.service.ProFormaStatusService;
+
+import java.util.List;
+import java.util.Optional;
+
+public class ProFormaStatusServiceImpl implements ProFormaStatusService {
+    private final ProFormaStatusRepository proFormaStatusRepository;
+
+    public ProFormaStatusServiceImpl(ProFormaStatusRepository proFormaStatusRepository) {
+        this.proFormaStatusRepository = proFormaStatusRepository;
+    }
+
+    @Override
+    public List<Pro_Forma_Status> listProFormaStatus() {
+        return this.proFormaStatusRepository.findAll();
+    }
+
+    @Override
+    public Optional<Pro_Forma_Status> getProFormaStatusById(Short id) {
+        return this.proFormaStatusRepository.findById(id);
+    }
+
+    @Override
+    public Optional<Pro_Forma_Status> createProFormaStatus(String name, String description) {
+        return this.proFormaStatusRepository.create(name, description);
+    }
+
+    @Override
+    public Optional<Pro_Forma_Status> updateProFormaStatus(Short id, String name, String description) {
+        return this.proFormaStatusRepository.edit(id, name, description);
+    }
+
+    @Override
+    public List<Pro_Forma_Status> getProFormaStatusByName(String name) {
+        return this.proFormaStatusRepository.findAllByName(name);
+    }
+
+    @Override
+    public void delete(Short id) {
+        this.proFormaStatusRepository.deleteById(id);
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision dc94016ae2601ffee08f4d8e9b3eeb377763802b)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -5,6 +5,6 @@
 import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidArgumentsException;
 import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidUserCredentialsException;
-import mk.ukim.finki.db.distributorapp.model.sec.ConfirmationToken;
-import mk.ukim.finki.db.distributorapp.model.sec.EmailService;
+import mk.ukim.finki.db.distributorapp.security.ConfirmationToken;
+import mk.ukim.finki.db.distributorapp.security.EmailService;
 import mk.ukim.finki.db.distributorapp.repository.ConfirmationTokenRepository;
 import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/VehicleServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/VehicleServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/VehicleServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,53 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.Driver;
+import mk.ukim.finki.db.distributorapp.model.Vehicle;
+import mk.ukim.finki.db.distributorapp.model.Warehouse;
+import mk.ukim.finki.db.distributorapp.repository.VehicleRepository;
+import mk.ukim.finki.db.distributorapp.service.VehicleService;
+
+import java.time.LocalDate;
+import java.util.List;
+import java.util.Optional;
+
+public class VehicleServiceImpl implements VehicleService {
+    private final VehicleRepository vehicleRepository;
+
+    public VehicleServiceImpl(VehicleRepository vehicleRepository) {
+        this.vehicleRepository = vehicleRepository;
+    }
+
+    @Override
+    public List<Vehicle> getAllVehicles() {
+        return this.vehicleRepository.listAll();
+    }
+
+    @Override
+    public List<Vehicle> getVehiclesByWarehouse(Warehouse warehouse) {
+        return this.vehicleRepository.findAllByWarehouse(warehouse.getWarehouse_id());
+    }
+
+    @Override
+    public Optional<Vehicle> createVehicle(Integer vehicleCarryWeight, Short vehicleServiceInterval, Integer vehicleKilometers,
+                                           LocalDate vehicleLastService, Integer vehicleLastServiceKm, String vehiclePlate,
+                                           String vehicleVIN, LocalDate vehicleRegDate, Warehouse warehouse, Driver driver) {
+
+        return this.vehicleRepository.create(vehicleCarryWeight, vehicleServiceInterval, vehicleKilometers, vehicleLastService,
+                vehicleLastServiceKm, vehiclePlate, vehicleVIN, vehicleRegDate, warehouse.getWarehouse_id(), driver.getUser_id());
+    }
+
+    @Override
+    public Optional<Vehicle> updateVehicle(Integer id, Integer vehicleCarryWeight, Short vehicleServiceInterval, Integer vehicleKilometers,
+                                           LocalDate vehicleLastService, Integer vehicleLastServiceKm, String vehiclePlate, String vehicleVIN,
+                                           LocalDate vehicleRegDate, Warehouse warehouse, Driver driver) {
+
+
+        return this.vehicleRepository.edit(id, vehicleCarryWeight, vehicleServiceInterval, vehicleKilometers, vehicleLastService, vehicleLastServiceKm,
+                vehiclePlate, vehicleVIN, vehicleRegDate, warehouse.getWarehouse_id(), driver.getUser_id());
+    }
+
+    @Override
+    public void deleteVehicleById(Integer id) {
+        this.vehicleRepository.delete(id);
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WarehouseServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WarehouseServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WarehouseServiceImpl.java	(revision de8bc593b0659959f7d075aff9a2bd57be1fe1d5)
@@ -0,0 +1,47 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.City;
+import mk.ukim.finki.db.distributorapp.model.Warehouse;
+import mk.ukim.finki.db.distributorapp.repository.WarehouseRepository;
+import mk.ukim.finki.db.distributorapp.service.WarehouseService;
+
+import java.util.List;
+import java.util.Optional;
+
+public class WarehouseServiceImpl implements WarehouseService {
+    private final WarehouseRepository warehouseRepository;
+
+    public WarehouseServiceImpl(WarehouseRepository warehouseRepository) {
+        this.warehouseRepository = warehouseRepository;
+    }
+
+    @Override
+    public List<Warehouse> findAll() {
+        return this.warehouseRepository.findAll();
+    }
+
+    @Override
+    public List<Warehouse> findAllByCity(City city){
+        return this.warehouseRepository.findAllByCity(city.getCity_id());
+    }
+
+    @Override
+    public Optional<Warehouse> findById(Integer id) {
+        return this.warehouseRepository.findById(id);
+    }
+
+    @Override
+    public Optional<Warehouse> create(String whAddress, City city) {
+        return this.warehouseRepository.create(whAddress, city.getCity_id());
+    }
+
+    @Override
+    public Optional<Warehouse> edit(Long id, String whAddress, City city) {
+        return this.warehouseRepository.edit(id, whAddress, city.getCity_id());
+    }
+
+    @Override
+    public Optional<Warehouse> delete(Integer id) {
+        return this.warehouseRepository.findById(id);
+    }
+}
