Index: pom.xml
===================================================================
--- pom.xml	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ pom.xml	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -55,7 +55,13 @@
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
         </dependency>
     </dependencies>
Index: src/main/java/mk/ukim/finki/db/distributorapp/encryption/PassEncryption.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/encryption/PassEncryption.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/encryption/PassEncryption.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,58 @@
+package mk.ukim.finki.db.distributorapp.encryption;
+
+import org.springframework.stereotype.Component;
+
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.PBEKeySpec;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.spec.InvalidKeySpecException;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.Random;
+
+@Component
+public class PassEncryption {
+    private static final Random random = new SecureRandom();
+    private static final String characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+    private static final int iterations = 20000;
+    private static final int keyLength = 256;
+
+    public static String genSaltValue(int length) {
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < length; i++) {
+            sb.append(characters.charAt(random.nextInt(characters.length())));
+        }
+
+        return new String(sb);
+    }
+
+    public static byte[] hash(char[] password, byte[] salt) {
+        PBEKeySpec spec = new PBEKeySpec(password, salt, iterations, keyLength);
+        Arrays.fill(password, Character.MIN_VALUE);
+        try {
+            SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
+            return skf.generateSecret(spec).getEncoded();
+        } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
+            throw new AssertionError("Error while hashing a password: " + e.getMessage(), e);
+        } finally {
+            spec.clearPassword();
+        }
+    }
+
+    public static String generateSecurePassword(String password, String salt){
+        String res = null;
+        byte[] securePassword = hash(password.toCharArray(),salt.getBytes());
+
+        res = Base64.getEncoder().encodeToString(securePassword);
+        return res;
+    }
+
+    public boolean verifyUserPassword(String providedPassword, String securedPassword, String salt){
+        boolean res = false;
+        String newSecuredPassword = generateSecurePassword(securedPassword,salt);
+        res = newSecuredPassword.equals(securedPassword);
+
+        return res;
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Article.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Article.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Article.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,7 +1,7 @@
 package mk.ukim.finki.db.distributorapp.model;
+
 
 import jakarta.persistence.*;
 import lombok.Data;
-import mk.ukim.finki.db.distributorapp.model.junctions.WarehouseArticle;
 
 import java.util.List;
@@ -12,18 +12,25 @@
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long articleId;
+    @Column(name = "art_id")
+    private Long article_id;
 
+    @Column(name = "art_name", nullable = false)
     private String article_name;
-    private Double article_weight;
-    private Double price;
 
-    @ManyToMany(mappedBy = "articles")
-    private List<Order> orders;
+    @Column(name = "art_weight", nullable = false)
+    private Integer article_weight;
 
     @ManyToOne
-    @JoinColumn(name = "category_id", nullable = false)
+    @JoinColumn(name = "ctg_id", nullable = false)
     private Category category;
 
-    @OneToMany(mappedBy = "article", cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<WarehouseArticle> warehouseArticles;
+    @ManyToOne
+    @JoinColumn(name = "man_id", nullable = false)
+    private Manufacturer manufacturer;
+
+    @OneToMany(mappedBy = "article")
+    private List<Price> prices;
+
+    @OneToMany(mappedBy = "article")
+    private List<Article_Unit> articleUnits;
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Article_Unit.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Article_Unit.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Article_Unit.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,41 @@
+package mk.ukim.finki.db.distributorapp.model;
+
+import jakarta.persistence.*;
+import lombok.Data;
+
+import java.util.Date;
+
+@Entity
+@Data
+public class Article_Unit {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long unit_id;
+
+    @Column(name = "unit_expiration_date", nullable = false)
+    private Date unit_expiration_date;
+
+    @Column(name = "unit_serial_number", nullable = false)
+    private String unit_serial_number;
+
+    @Column(name = "unit_batch_number", nullable = false)
+    private String unit_batch_number;
+
+    @Column(name = "unit_manufacture_date", nullable = false)
+    private Date unit_manufacture_date;
+
+    @Column(name = "unit_cost_price", nullable = false)
+    private double unit_cost_price;
+
+    @ManyToOne
+    @JoinColumn(name = "art_id", nullable = false)
+    private Article article;
+
+    @ManyToOne
+    @JoinColumn(name = "wh_id", nullable = false)
+    private Warehouse warehouse;
+
+    @ManyToOne
+    @JoinColumn(name = "ord_id")
+    private Orders order;
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Category.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Category.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Category.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -6,14 +6,18 @@
 import java.util.List;
 
-@Entity
+@Entity(name = "Category")
 @Data
 public class Category {
-
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long categoryId;
-    private String categoryName;
+    @Column(name = "ctg_id")
+    private Long category_id;
 
-    @OneToMany(mappedBy = "category", cascade = CascadeType.ALL,orphanRemoval = true)
+    @Column(name = "ctg_name", nullable = false)
+    private String category_name;
+
+    @OneToMany(mappedBy = "category")
     private List<Article> articles;
+
+
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/City.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/City.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/City.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -6,17 +6,19 @@
 import java.util.List;
 
+@Entity
 @Data
-@Entity
 public class City {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long cityId;
-    private String cityName;
+    @Column(name = "city_id")
+    private Long city_id;
 
-    @OneToMany(mappedBy = "city", cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<User> users;
+    @Column(name = "city_name", nullable = false)
+    private String city_name;
 
-    @OneToMany(mappedBy = "city", cascade = CascadeType.ALL, orphanRemoval = true)
+    @OneToMany(mappedBy = "city")
+    private List<Users> users;
+
+    @OneToMany(mappedBy = "city")
     private List<Warehouse> warehouses;
-
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Customer.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Customer.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Customer.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.db.distributorapp.model;
 
-import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
 import jakarta.persistence.Entity;
 import jakarta.persistence.OneToMany;
@@ -7,16 +7,30 @@
 import lombok.EqualsAndHashCode;
 
+import java.time.LocalTime;
 import java.util.List;
 
 @EqualsAndHashCode(callSuper = true)
+@Entity
 @Data
-@Entity
-public class Customer extends User{
-    public String EDB;
-    public String loc_address;
-    public String company_name;
+public class Customer extends Users {
+    @Column(name = "cust_EDB", nullable = false)
+    private String customer_EDB;
 
-    @OneToMany(mappedBy = "customer",cascade = CascadeType.ALL,orphanRemoval = true)
-    public List<Order> orders;
+    @Column(name = "cust_company_name", nullable = false)
+    private String customer_company_name;
 
+    @Column(name = "cust_address", nullable = false)
+    private String address;
+
+    @Column(name = "cust_open_time", nullable = false)
+    private LocalTime customer_open_time;
+
+    @Column(name = "cust_close_time", nullable = false)
+    private LocalTime customer_close_time;
+
+    @Column(name = "cust_representative_image", nullable = false)
+    private String customer_representative_image;
+
+    @OneToMany(mappedBy = "customer")
+    private List<Orders> orders;
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Delivery.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Delivery.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Delivery.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -3,25 +3,45 @@
 import jakarta.persistence.*;
 import lombok.Data;
-import mk.ukim.finki.db.distributorapp.model.enumerations.DeliveryStatus;
+import mk.ukim.finki.db.distributorapp.model.statuses.Delivery_Status;
 
-import java.util.Date;
+import java.time.LocalDate;
+import java.time.LocalTime;
 import java.util.List;
 
+@Entity
 @Data
-@Entity
 public class Delivery {
-
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long deliveryId;
-    private Date dateCreated;
-    @Enumerated
-    private DeliveryStatus deliveryStatus;
+    @Column(name = "del_id")
+    private Long delivery_id;
 
-    @OneToMany(mappedBy = "delivery", cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<Order> orders;
+    @Column(name = "del_date_created", nullable = false)
+    private LocalDate delivery_date_created;
+
+    @Column(name = "del_date", nullable = false)
+    private LocalDate delivery_date;
+
+    @Column(name = "del_start_km")
+    private Integer delivery_start_km;
+
+    @Column(name = "del_end_km")
+    private Integer delivery_end_km;
+
+    @Column(name = "del_start_time")
+    private LocalTime delivery_start_time;
+
+    @Column(name = "del_end_time")
+    private LocalTime delivery_end_time;
 
     @ManyToOne
-    @JoinColumn(name = "vehicle_id",nullable = false)
+    @JoinColumn(name = "del_status_id", nullable = false)
+    private Delivery_Status delivery_status;
+
+    @ManyToOne
+    @JoinColumn(name = "veh_id", nullable = false)
     private Vehicle vehicle;
+
+    @OneToMany(mappedBy = "delivery")
+    private List<Orders> orders;
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Driver.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Driver.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Driver.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -2,14 +2,15 @@
 
 import jakarta.persistence.Entity;
+import jakarta.persistence.JoinColumn;
 import jakarta.persistence.OneToOne;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-@Data
 @EqualsAndHashCode(callSuper = true)
 @Entity
-public class Driver extends User {
-
+@Data
+public class Driver extends Users {
     @OneToOne
+    @JoinColumn(name = "vh_id", nullable = false)
     private Vehicle vehicle;
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Manager.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Manager.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Manager.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -7,10 +7,10 @@
 import lombok.EqualsAndHashCode;
 
-@Data
 @EqualsAndHashCode(callSuper = true)
 @Entity
-public class Manager extends User {
+@Data
+public class Manager extends Users{
     @OneToOne
-    @JoinColumn(name = "warehouse_id",referencedColumnName = "warehouseId")
+    @JoinColumn(name = "wh_id",nullable = false,unique = true)
     private Warehouse warehouse;
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Manufacturer.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Manufacturer.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Manufacturer.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,30 @@
+package mk.ukim.finki.db.distributorapp.model;
+
+import jakarta.persistence.*;
+import lombok.Data;
+
+import java.util.List;
+
+@Entity
+@Data
+public class Manufacturer {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "man_id")
+    private Long manufacturer_id;
+
+    @Column(name = "man_name", nullable = false)
+    private String manufacturer_name;
+
+    @Column(name = "man_address", nullable = false)
+    private String manufacturer_address;
+
+    @Column(name = "man_mobile", nullable = false)
+    private String manufacturer_mobile;
+
+    @Column(name = "man_email", nullable = false)
+    private String manufacturer_email;
+
+    @OneToMany(mappedBy = "manufacturer")
+    private List<Article> articles;
+}
Index: c/main/java/mk/ukim/finki/db/distributorapp/model/Order.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Order.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.enumerations.OrderStatus;
-
-import java.util.List;
-
-@Data
-@Entity
-@NoArgsConstructor
-public class Order {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long orderId;
-    private Double amount;
-    private OrderStatus orderStatus;
-
-    @ManyToOne
-    @JoinColumn(name = "user_id")
-    private Customer customer;
-
-    @ManyToMany
-    @JoinTable(
-            name = "order_article",
-            joinColumns = @JoinColumn(name = "order_id",referencedColumnName = "orderId"),
-            inverseJoinColumns = @JoinColumn(name = "article_id",referencedColumnName = "articleId")
-    )
-    private List<Article> articles;
-
-    @OneToOne(cascade = CascadeType.ALL)
-    @JoinColumn(name = "proforma_id",referencedColumnName = "proformaId")
-    private Proforma proforma;
-
-    @ManyToOne
-    @JoinColumn(name = "delivery_id",nullable = false,referencedColumnName = "deliveryId")
-    private Delivery delivery;
-
-    public Order(Long customerId, List<Article> articles) {}
-}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Orders.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Orders.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Orders.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,49 @@
+package mk.ukim.finki.db.distributorapp.model;
+
+import jakarta.persistence.*;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.model.statuses.Order_Status;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Entity
+@Data
+public class Orders {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "ord_id", nullable = false)
+    private Long order_id;
+
+    @Column(name = "ord_date", nullable = false)
+    private LocalDate order_date;
+
+    @Column(name = "ord_sum", nullable = false)
+    private Integer order_sum;
+
+    @Column(name = "ord_fulfillment_date")
+    private LocalDateTime order_fulfillment_date;
+
+    @Column(name = "ord_comment")
+    private String order_comment;
+
+    @ManyToOne
+    @JoinColumn(name = "ord_status_id")
+    private Order_Status order_status;
+
+    @ManyToOne
+    @JoinColumn(name = "user_id")
+    private Customer customer;
+
+    @ManyToOne
+    @JoinColumn(name = "delivery_id", nullable = false)
+    private Delivery delivery;
+
+    @OneToOne
+    @JoinColumn(name = "pf_id", nullable = false, unique = true)
+    private Pro_Forma proForma;
+
+    @OneToMany(mappedBy = "order")
+    private List<Article_Unit> articleUnits;
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Price.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Price.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Price.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,27 @@
+package mk.ukim.finki.db.distributorapp.model;
+
+import jakarta.persistence.*;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Entity
+@Data
+public class Price {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "price_id")
+    private Integer price_id;
+
+    @Column(name = "price", nullable = false)
+    private BigDecimal price;
+
+    @Column(name = "price_eff_date", nullable = false)
+    private LocalDateTime price_effective_date;
+
+    @ManyToOne
+    @JoinColumn(name = "art_id",nullable = false)
+    private Article article;
+
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Pro_Forma.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Pro_Forma.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Pro_Forma.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,29 @@
+package mk.ukim.finki.db.distributorapp.model;
+
+import jakarta.persistence.*;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.model.statuses.Pro_Forma_Status;
+
+import java.time.LocalDate;
+
+@Entity
+@Data
+public class Pro_Forma {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "pf_id")
+    private Long pro_forma_id;
+
+    @Column(name = "pf_deadline", nullable = false)
+    private LocalDate pro_forma_deadline;
+
+    @Column(name = "pf_date_created", nullable = false)
+    private LocalDate pro_forma_date_created;
+
+    @ManyToOne
+    @JoinColumn(name = "pf_status_id", nullable = false)
+    private Pro_Forma_Status pro_forma_status;
+
+    @OneToOne(mappedBy = "proForma")
+    private Orders order;
+}
Index: c/main/java/mk/ukim/finki/db/distributorapp/model/Proforma.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Proforma.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-
-
-@Data
-@Entity
-public class Proforma {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long proformaId;
-
-    private String proformaDetails;
-    private Double totalAmount;
-
-    @OneToOne(mappedBy = "proforma")
-    private Order order;
-}
Index: c/main/java/mk/ukim/finki/db/distributorapp/model/User.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/User.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,20 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-
-@Data
-@Entity
-public abstract class User {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    public Long user_id;
-    public String user_name;
-    public String user_surname;
-    public String mobile_no;
-    public String email;
-
-    @ManyToOne
-    @JoinColumn(name = "city_id",nullable = false)
-    public City city;
-}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Users.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Users.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Users.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,55 @@
+package mk.ukim.finki.db.distributorapp.model;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Entity
+@NoArgsConstructor
+@AllArgsConstructor
+@Inheritance(strategy = InheritanceType.JOINED)
+@Data
+public class Users {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long user_id;
+
+    @Column(nullable = false)
+    private String user_name;
+
+    @Column(nullable = false)
+    private String user_surname;
+
+    @Column(nullable = false)
+    private String user_password;
+
+    @Column(nullable = false)
+    private String user_email;
+
+    @Column(nullable = false)
+    private String user_mobile;
+
+    @Column(nullable = false)
+    private String user_salt;
+
+    @Column(nullable = false)
+    private Boolean user_active;
+
+    private String user_image;
+
+    @ManyToOne
+    @JoinColumn(name = "city_id", nullable = false)
+    private City city;
+
+    public Users(String name, String surname, String safePass, String email, String mobile, String saltValue, Boolean active, String image) {
+        this.user_name = name;
+        this.user_surname = surname;
+        this.user_password = safePass;
+        this.user_email = email;
+        this.user_mobile = mobile;
+        this.user_salt = saltValue;
+        this.user_active = active;
+        this.user_image = image;
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Vehicle.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Vehicle.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Vehicle.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -4,23 +4,47 @@
 import lombok.Data;
 
+import java.time.LocalDate;
 import java.util.List;
 
-
+@Entity
 @Data
-@Entity
 public class Vehicle {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long vehicleId;
-    private Double carry_weight;
+    @Column(name = "veh_id")
+    private Integer vehicle_id;
 
-    @OneToMany(mappedBy = "vehicle",cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<Delivery> deliveries;
+    @Column(name = "veh_carry_weight", nullable = false)
+    private Integer vehicle_carry_weight;
+
+    @Column(name = "veh_service_interval", nullable = false)
+    private Short vehicle_service_interval;
+
+    @Column(name = "veh_kilometers", nullable = false)
+    private Integer vehicle_kilometers;
+
+    @Column(name = "veh_last_service")
+    private LocalDate vehicle_last_service;
+
+    @Column(name = "veh_last_service_km")
+    private Integer vehicle_last_service_km;
+
+    @Column(name = "veh_plate", nullable = false)
+    private String vehicle_plate;
+
+    @Column(name = "veh_vin", nullable = false)
+    private String vehicle_vin;
+
+    @Column(name = "veh_reg", nullable = false)
+    private LocalDate vehicle_registration_date;
+
+    @ManyToOne
+    @JoinColumn(name = "wh_id", nullable = false)
+    private Warehouse warehouse;
 
     @OneToOne(mappedBy = "vehicle")
     private Driver driver;
 
-    @ManyToOne
-    @JoinColumn(name = "warehouse_id",nullable = false)
-    private Warehouse warehouse;
+    @OneToMany(mappedBy = "vehicle")
+    private List<Delivery> deliveries;
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/Warehouse.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/Warehouse.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/Warehouse.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -3,21 +3,17 @@
 import jakarta.persistence.*;
 import lombok.Data;
-import mk.ukim.finki.db.distributorapp.model.junctions.WarehouseArticle;
 
 import java.util.List;
 
-
+@Entity
 @Data
-@Entity
 public class Warehouse {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long warehouseId;
+    @Column(name = "wh_id")
+    private Integer warehouse_id;
 
-    @OneToOne(mappedBy = "warehouse")
-    private Manager manager;
-
-    @OneToMany(mappedBy = "warehouse", cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<Vehicle> vehicles;
+    @Column(name = "wh_address", nullable = false)
+    private String warehouse_address;
 
     @ManyToOne
@@ -25,5 +21,11 @@
     private City city;
 
-    @OneToMany(mappedBy = "warehouse", cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<WarehouseArticle> warehouseArticles;
+    @OneToOne(mappedBy = "warehouse")
+    private Manager manager;
+
+    @OneToMany(mappedBy = "warehouse")
+    private List<Vehicle> vehicles;
+
+    @OneToMany(mappedBy = "warehouse")
+    private List<Article_Unit> articleUnits;
 }
Index: c/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/DeliveryStatus.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/DeliveryStatus.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,7 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.enumerations;
-
-public enum DeliveryStatus {
-    PENDING,
-    SHIPPED,
-    DELIVERED
-}
Index: c/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/OrderStatus.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/OrderStatus.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.enumerations;
-
-public enum OrderStatus {
-    CREATED,
-    CONFIRMED,
-    PENDING_PAYMENT,
-    PAYMENT_RECEIVED,
-    PENDING_DELIVERY,
-    OUT_OF_STOCK,
-    DECLINED
-}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/EmailAlreadyExistsException.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/EmailAlreadyExistsException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/EmailAlreadyExistsException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.model.exceptions;
+
+public class EmailAlreadyExistsException extends RuntimeException {
+    public EmailAlreadyExistsException(String email) {
+        super("User with the email "+email+" already exists.");
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidArgumentsException.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidArgumentsException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidArgumentsException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,8 @@
+package mk.ukim.finki.db.distributorapp.model.exceptions;
+
+public class InvalidArgumentsException extends RuntimeException {
+
+    public InvalidArgumentsException() {
+        super("Invalid argument.");
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUserCredentialsException.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUserCredentialsException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUserCredentialsException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,8 @@
+package mk.ukim.finki.db.distributorapp.model.exceptions;
+
+public class InvalidUserCredentialsException extends RuntimeException {
+
+    public InvalidUserCredentialsException() {
+        super("Invalid user credentials");
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUsernameOrPasswordException.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUsernameOrPasswordException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUsernameOrPasswordException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.model.exceptions;
+
+public class InvalidUsernameOrPasswordException extends RuntimeException {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/PasswordsDoNotMatchException.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/PasswordsDoNotMatchException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/PasswordsDoNotMatchException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.model.exceptions;
+
+public class PasswordsDoNotMatchException extends RuntimeException {
+    public PasswordsDoNotMatchException() {
+        super("The two passwords do not match.");
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UserNotFoundException.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UserNotFoundException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UserNotFoundException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.model.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(HttpStatus.NOT_FOUND)
+public class UserNotFoundException extends RuntimeException{
+
+    public UserNotFoundException(String username) {
+        super(String.format("User with username: %s was not found", username));
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UsernameAlreadyExistsException.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UsernameAlreadyExistsException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UsernameAlreadyExistsException.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.model.exceptions;
+
+public class UsernameAlreadyExistsException extends RuntimeException {
+    public UsernameAlreadyExistsException(String username) {
+        super("User with the username "+username+" already exists.");
+    }
+}
Index: c/main/java/mk/ukim/finki/db/distributorapp/model/junctions/WarehouseArticle.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/junctions/WarehouseArticle.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,24 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.junctions;
-
-import jakarta.persistence.*;
-import lombok.Data;
-import mk.ukim.finki.db.distributorapp.model.Article;
-import mk.ukim.finki.db.distributorapp.model.Warehouse;
-
-@Data
-@Entity
-public class WarehouseArticle {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long warehouseArticleId;
-
-    @ManyToOne
-    @JoinColumn(name = "warehouse_id", nullable = false)
-    private Warehouse warehouse;
-
-    @ManyToOne
-    @JoinColumn(name = "article_id", nullable = false)
-    private Article article;
-
-    private int quantity;
-}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/sec/ConfirmationToken.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/sec/ConfirmationToken.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/sec/ConfirmationToken.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,36 @@
+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: src/main/java/mk/ukim/finki/db/distributorapp/model/sec/EmailService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/sec/EmailService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/sec/EmailService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,22 @@
+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/model/statuses/Delivery_Status.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/statuses/Delivery_Status.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/statuses/Delivery_Status.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,25 @@
+package mk.ukim.finki.db.distributorapp.model.statuses;
+
+import jakarta.persistence.*;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.model.Delivery;
+
+import java.util.List;
+
+@Entity
+@Data
+public class Delivery_Status {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "del_status_id")
+    private Short delivery_status_id;
+
+    @Column(name="del_status_name", nullable = false)
+    private String delivery_status_name;
+
+    @Column(name="del_status_desc", nullable = false)
+    private String delivery_status_description;
+
+    @OneToMany(mappedBy = "delivery_status")
+    private List<Delivery> deliveries;
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/statuses/Order_Status.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/statuses/Order_Status.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/statuses/Order_Status.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,25 @@
+package mk.ukim.finki.db.distributorapp.model.statuses;
+
+import jakarta.persistence.*;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.model.Orders;
+
+import java.util.List;
+
+@Entity
+@Data
+public class Order_Status {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "ord_status_id")
+    private Short order_status_id;
+
+    @Column(name="ord_status_name", nullable = false)
+    private String order_status_name;
+
+    @Column(name="ord_status_desc", nullable = false)
+    private String order_status_description;
+
+    @OneToMany(mappedBy = "order_status")
+    private List<Orders> orders;
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/model/statuses/Pro_Forma_Status.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/model/statuses/Pro_Forma_Status.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/model/statuses/Pro_Forma_Status.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,25 @@
+package mk.ukim.finki.db.distributorapp.model.statuses;
+
+import jakarta.persistence.*;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.model.Pro_Forma;
+
+import java.util.List;
+
+@Entity
+@Data
+public class Pro_Forma_Status {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "pf_status_id")
+    private Short pro_forma_status_id;
+
+    @Column(name="pf_status_name", nullable = false)
+    private String pro_forma_status_name;
+
+    @Column(name="pf_status_desc", nullable = false)
+    private String pro_forma_status_description;
+
+    @OneToMany(mappedBy = "pro_forma_status")
+    private List<Pro_Forma> pro_formas;
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,4 +1,62 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-public interface ArticleRepository {
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Article;
+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 ArticleRepository extends JpaRepository<Article, Long> {
+
+    @Query(
+            nativeQuery = true,
+            value = "select * " +
+                    "from article"
+    )
+    List<Article> listAll();
+
+    @Query(
+            value = "select * " +
+                    "from article a " +
+                    "where a.art_name like :name",
+            nativeQuery = true
+    )
+    List<Article> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = "select * " +
+                    "from article a " +
+                    "where a.art_id=:id"
+    )
+    Optional<Article> findById(@NonNull @Param("id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Article> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Article> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleUnitRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleUnitRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleUnitRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,56 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Article_Unit;
+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 ArticleUnitRepository extends JpaRepository<Article_Unit,Long> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Article_Unit> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Article_Unit> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Article_Unit> findById(@NonNull @Param("id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Article_Unit> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Article_Unit> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/CategoryRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/CategoryRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/CategoryRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,4 +1,73 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-public interface CategoryRepository {
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Category;
+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 CategoryRepository extends JpaRepository<Category, Long> {
+
+//    @Query(
+//            value = "select * " +
+//                    "from category c " +
+//                    "where c.ctg_name like :name",
+//            nativeQuery = true)
+//    List<Category> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            value = "select * " +
+                    "from category c " +
+                    "where c.ctg_name like ?1",
+            nativeQuery = true)
+    List<Category> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            value = "select * " +
+                    "from category",
+            nativeQuery = true)
+    List<Category> listAll();
+
+    @Query(
+            value = "select * " +
+                    "from category c " +
+                    "where c.ctg_id = ?1",
+            nativeQuery = true
+    )
+    Optional<Category> findById(@NonNull @Param("ctg_id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            value = "insert into category(ctg_name,ctg_desc) " +
+                    "values (:name, :desc)",
+            nativeQuery = true
+    )
+    Optional<Category> create(@NonNull @Param("name") String name,
+                              @NonNull @Param("desc") String desc);
+
+    @Modifying
+    @Transactional
+    @Query(
+            value = "update category c " +
+                    "set c.ctg_name = :name, c.ctg_desc = :desc " +
+                    "where c.ctg_id = :id",
+            nativeQuery = true
+    )
+    Optional<Category> edit(@Param("id") Long id,
+                            @Param("name") String name,
+                            @Param("desc") String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            value = "delete from category " +
+                    "where ctg_id = :id",
+            nativeQuery = true)
+    void deleteById(@NonNull @Param("id") Long id);
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/CityRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/CityRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/CityRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,4 +1,67 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-public interface CityRepository {
+import mk.ukim.finki.db.distributorapp.model.City;
+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 CityRepository extends JpaRepository<City, Long> {
+
+    @Query(
+            nativeQuery = true,
+            value = "set search_path = \"IND0_185022\"; " +
+                    "select * " +
+                    "from city c"
+    )
+    List<City> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = "set search_path = \"IND0_185022\"; " +
+                    "select * " +
+                    "from city c " +
+                    "where c.city_id = :id"
+    )
+    Optional<City> findById(@Param("id") Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = "set search_path  = \"IND0_185022\"; " +
+                    "select * " +
+                    "from city c " +
+                    "where c.city_name like :name"
+    )
+    Optional<City> findByName(@Param("name") String name);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<City> create(String name);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<City> edit(Long id, String name);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "set search_path = \"IND0_185022\"; " +
+                    "delete from city c " +
+                    "where c.city_id=:id"
+    )
+    void deleteById(@Param("id") Long id);
+
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ConfirmationTokenRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ConfirmationTokenRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ConfirmationTokenRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,14 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import mk.ukim.finki.db.distributorapp.model.sec.ConfirmationToken;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+
+public interface ConfirmationTokenRepository extends JpaRepository<ConfirmationToken, Long> {
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    ConfirmationToken findConfirmationTokenByToken(String token);
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,14 +1,56 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
+import lombok.NonNull;
 import mk.ukim.finki.db.distributorapp.model.Customer;
 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 CustomerRepository extends JpaRepository<Customer, Long> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Customer> listAll();
 
-    @Query(value = "select * from CUSTOMER u where u.user_id={id}}",
-    nativeQuery = true)
-    Optional<Customer> findById(Long id);
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Customer> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Customer> findById(@NonNull @Param("id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Customer> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Customer> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,4 +1,56 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-public interface DeliveryRepository {
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Delivery;
+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 DeliveryRepository extends JpaRepository<Delivery, Long> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Delivery> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Delivery> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Delivery> findById(@NonNull @Param("id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Delivery> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Delivery> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryStatusRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryStatusRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryStatusRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,56 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.statuses.Delivery_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 DeliveryStatusRepository extends JpaRepository<Delivery_Status, Short> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Delivery_Status> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Delivery_Status> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Delivery_Status> findById(@NonNull @Param("id") Short id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Delivery_Status> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Delivery_Status> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/DriverRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/DriverRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/DriverRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,4 +1,56 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-public interface DriverRepository {
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Driver;
+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 DriverRepository extends JpaRepository<Driver, Long> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Driver> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Driver> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Driver> findById(@NonNull @Param("id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Driver> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Driver> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,4 +1,56 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-public interface ManagerRepository {
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Manager;
+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 ManagerRepository extends JpaRepository<Manager, Integer> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Manager> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Manager> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Manager> findById(@NonNull @Param("id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Manager> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Manager> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ManufacturerRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ManufacturerRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ManufacturerRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,56 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Manufacturer;
+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 ManufacturerRepository extends JpaRepository<Manufacturer, Long> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Manufacturer> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Manufacturer> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Manufacturer> findById(@NonNull @Param("id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Manufacturer> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Manufacturer> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/OrderStatusRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/OrderStatusRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/OrderStatusRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,56 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.statuses.Order_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 OrderStatusRepository extends JpaRepository<Order_Status, Short> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Order_Status> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Order_Status> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Order_Status> findById(@NonNull @Param("id") Short id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Order_Status> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Order_Status> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,15 +1,56 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-import mk.ukim.finki.db.distributorapp.model.Order;
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Orders;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Repository;
+import org.springframework.data.repository.query.Param;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Optional;
 
-@Repository
-public interface OrdersRepository extends JpaRepository<Order,Long> {
-    @Query(value = "select * from ORDERS",
-            nativeQuery = true)
-    List<Order> findAll();
+public interface OrdersRepository extends JpaRepository<Orders, Long> {
+    @Query(
+            nativeQuery = true,
+            value = "select * from orders"
+    )
+    List<Orders> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Orders> findByCustomer(@NonNull @Param("cust") Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Orders> findById(@NonNull @Param("id") Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Orders> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Orders> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/PriceRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/PriceRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/PriceRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,56 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Price;
+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 PriceRepository extends JpaRepository<Price, Integer> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Price> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Price> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Price> findById(@NonNull @Param("id") Short id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Price> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Price> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,56 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Pro_Forma;
+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 ProFormaRepository extends JpaRepository<Pro_Forma,Long> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Pro_Forma> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Pro_Forma> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Pro_Forma> findById(@NonNull @Param("id") Short id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Pro_Forma> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Pro_Forma> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatus.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatus.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatus.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -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 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: c/main/java/mk/ukim/finki/db/distributorapp/repository/UserRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/UserRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import mk.ukim.finki.db.distributorapp.model.User;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface UserRepository extends JpaRepository<User,Long> {
-
-}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,75 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Users;
+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 UsersRepository extends JpaRepository<Users, Long> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Users> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Users> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Users> findById(@NonNull @Param("id") Short id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Users create(String name, String surname, String password, String email,
+                 String mobile, String salt, Boolean active, String image);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Users> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
+    ////////////////////////////////////////////////
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Users> findUserByUserEmailIgnoreCase(@NonNull @Param("email") String email);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Users> findUserByUserNameAndUserPassword(String pass, String username);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Users> findUserByUserName(String username);
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,4 +1,56 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-public interface VehicleRepository {
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Vehicle;
+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 VehicleRepository extends JpaRepository<Vehicle, Long> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Vehicle> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Vehicle> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Vehicle> findById(@NonNull @Param("id") Short id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Vehicle> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Vehicle> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,4 +1,56 @@
 package mk.ukim.finki.db.distributorapp.repository;
 
-public interface WarehouseRepository {
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.model.Warehouse;
+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 WarehouseRepository extends JpaRepository<Warehouse, Integer> {
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Warehouse> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    List<Warehouse> findAllByName(@NonNull @Param("name") String name);
+
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Warehouse> findById(@NonNull @Param("id") Short id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Warehouse> create();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    Optional<Warehouse> edit();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = ""
+    )
+    void delete();
 }
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+import mk.ukim.finki.db.distributorapp.model.Article;
+import mk.ukim.finki.db.distributorapp.model.Category;
+import mk.ukim.finki.db.distributorapp.model.Manufacturer;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface ArticleService {
+
+    List<Article> findAll();
+
+    Optional<Article> findById(long id);
+
+    Optional<Article> findByName(String name);
+
+    void deleteById(long id);
+
+    Optional<Article>editById(long id, Article article);
+
+    Optional<Article> save(Long id, String name, Integer weight, Category category, Manufacturer manufacturer);
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleUnitService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleUnitService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleUnitService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface ArticleUnitService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/CategoryService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/CategoryService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/CategoryService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,21 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+import mk.ukim.finki.db.distributorapp.model.Category;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface CategoryService {
+
+    List<Category> listCategories();
+
+    Optional<Category> getCategoryById(Long id);
+
+    Optional<Category> createCategory(String name, String description);
+
+    Optional<Category> updateCategory(Long id, String name, String description);
+
+    void delete(Long id);
+
+    List<Category> searchCategories(String text);
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/CityService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/CityService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/CityService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,21 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+import mk.ukim.finki.db.distributorapp.model.City;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface CityService {
+
+    List<City> listCities();
+
+    Optional<City> getCityById(Long id);
+
+    Optional<City> createCity(String name);
+
+    Optional<City> updateCity(Long id, String name);
+
+    void delete(Long id);
+
+    Optional<City> searchCities(String text);
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface CustomerService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface DeliveryService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryStatusService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryStatusService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryStatusService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface DeliveryStatusService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/DriverService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/DriverService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/DriverService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface DriverService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface ManagerService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/ManufacturerService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/ManufacturerService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/ManufacturerService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,5 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface ManufacturerService {
+
+}
Index: c/main/java/mk/ukim/finki/db/distributorapp/service/OrderService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/OrderService.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.Article;
-import mk.ukim.finki.db.distributorapp.model.Order;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface OrderService {
-    List<Order> findAll();
-    Optional<Order> findById(Long id);
-
-    Optional<Order> save(Long customerId, List<Article> articles);
-
-    void deleteById(Long id);
-    boolean exists(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 d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/OrderStatusService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface OrderStatusService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface OrdersService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/PriceService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/PriceService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/PriceService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface PriceService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface ProFormaService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaStatusService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaStatusService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaStatusService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface ProFormaStatusService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/UsersService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/UsersService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/UsersService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,15 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+import mk.ukim.finki.db.distributorapp.model.Users;
+import org.springframework.http.ResponseEntity;
+
+public interface UsersService {
+    Users register (String name, String surname, String email,
+                    String password, String mobile, String image);
+
+    ResponseEntity<?> confirmEmail (String confirmationToken);
+
+    Users login(String username, String password);
+
+    String getUserSalt(String username);
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface VehicleService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.service;
+
+public interface WarehouseService {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,56 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.Category;
+import mk.ukim.finki.db.distributorapp.repository.CategoryRepository;
+import mk.ukim.finki.db.distributorapp.service.CategoryService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class CategoryServiceImpl implements CategoryService {
+
+    private final CategoryRepository categoryRepository;
+
+    public CategoryServiceImpl(CategoryRepository categoryRepository) {
+        this.categoryRepository = categoryRepository;
+    }
+
+    private boolean categoryInvalid(String name) {
+        return name == null || name.isEmpty();
+    }
+
+    @Override
+    public List<Category> listCategories() {
+        return this.categoryRepository.listAll();
+    }
+
+    @Override
+    public Optional<Category> getCategoryById(Long id) {
+        return this.categoryRepository.findById(id);
+    }
+
+    @Override
+    public Optional<Category> createCategory(String name, String description) {
+        if (categoryInvalid(name)) {
+            throw new IllegalArgumentException();
+        }
+        return this.categoryRepository.create(name, description);
+    }
+
+    @Override
+    public Optional<Category> updateCategory(Long id, String name, String description) {
+        return this.categoryRepository.edit(id,name,description);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.categoryRepository.deleteById(id);
+    }
+
+    @Override
+    public List<Category> searchCategories(String text) {
+        return List.of();
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CityServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CityServiceImpl.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CityServiceImpl.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,48 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.model.City;
+import mk.ukim.finki.db.distributorapp.repository.CityRepository;
+import mk.ukim.finki.db.distributorapp.service.CityService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class CityServiceImpl implements CityService {
+    private final CityRepository cityRepository;
+
+    public CityServiceImpl(CityService cityService, CityRepository cityRepository) {
+        this.cityRepository = cityRepository;
+    }
+
+    @Override
+    public List<City> listCities() {
+        return this.cityRepository.listAll();
+    }
+
+    @Override
+    public Optional<City> getCityById(Long id) {
+        return this.cityRepository.findById(id);
+    }
+
+    @Override
+    public Optional<City> createCity(String name) {
+        return this.cityRepository.create(name);
+    }
+
+    @Override
+    public Optional<City> updateCity(Long id, String name) {
+        return this.cityRepository.edit(id, name);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.cityRepository.deleteById(id);
+    }
+
+    @Override
+    public Optional<City> searchCities(String text) {
+        return Optional.empty();
+    }
+}
Index: c/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderServiceImpl.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,65 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import mk.ukim.finki.db.distributorapp.model.Article;
-import mk.ukim.finki.db.distributorapp.model.Customer;
-import mk.ukim.finki.db.distributorapp.model.Order;
-import mk.ukim.finki.db.distributorapp.model.Proforma;
-import mk.ukim.finki.db.distributorapp.model.enumerations.OrderStatus;
-import mk.ukim.finki.db.distributorapp.repository.CustomerRepository;
-import mk.ukim.finki.db.distributorapp.repository.OrdersRepository;
-import mk.ukim.finki.db.distributorapp.service.OrderService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Optional;
-
-@Service
-public class OrderServiceImpl implements OrderService {
-
-    private final OrdersRepository ordersRepository;
-    private final CustomerRepository customerRepository;
-
-    public OrderServiceImpl(OrdersRepository ordersRepository, CustomerRepository customerRepository) {
-        this.ordersRepository = ordersRepository;
-        this.customerRepository = customerRepository;
-    }
-
-    @Override
-    public List<Order> findAll() {
-        return ordersRepository.findAll();
-    }
-
-    @Override
-    public Optional<Order> findById(Long id) {
-        return this.ordersRepository.findById(id);
-    }
-
-    @Override
-    public Optional<Order> save(Long customerId, List<Article> articles) {
-        Order order = new Order(customerId,articles);
-        double amount=0;
-        for(Article article:articles){
-            amount+=article.getPrice();
-        }
-        order.setAmount(amount);
-        Customer customer = this.customerRepository.findById(customerId).get();
-        order.setCustomer(customer);
-        order.setOrderStatus(OrderStatus.CREATED);
-
-        Proforma proforma = new Proforma();
-        proforma.setTotalAmount(amount);
-
-        order.setProforma(proforma);
-        return Optional.of(this.ordersRepository.save(order));
-    }
-
-    @Override
-    public void deleteById(Long id) {
-
-    }
-
-    @Override
-    public boolean exists(Long id) {
-        return false;
-    }
-}
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 d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,78 @@
+package mk.ukim.finki.db.distributorapp.service.impl;
+
+import mk.ukim.finki.db.distributorapp.encryption.PassEncryption;
+import mk.ukim.finki.db.distributorapp.model.Users;
+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.repository.ConfirmationTokenRepository;
+import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
+import mk.ukim.finki.db.distributorapp.service.UsersService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UsersServiceImpl implements UsersService {
+
+    private final UsersRepository usersRepository;
+    private final ConfirmationTokenRepository confirmationTokenRepository;
+    private final EmailService emailService;
+
+    public UsersServiceImpl(UsersRepository usersRepository, ConfirmationTokenRepository confirmationTokenRepository, EmailService emailService) {
+        this.usersRepository = usersRepository;
+        this.confirmationTokenRepository = confirmationTokenRepository;
+        this.emailService = emailService;
+    }
+
+    @Override
+    public String getUserSalt(String username) {
+        return usersRepository.findUserByUserName(username).get().getUser_salt();
+    }
+
+    @Override
+    public Users login(String username, String password) {
+        if (username == null || username.isEmpty() || password == null || password.isEmpty()) {
+            throw new InvalidArgumentsException();
+        }
+
+        String secPassword = PassEncryption.generateSecurePassword(password,usersRepository.findUserByUserName(username).get().getUser_salt());
+
+        return usersRepository.findUserByUserNameAndUserPassword(username,secPassword).orElseThrow(InvalidUserCredentialsException::new);
+    }
+
+    @Override
+    public Users register(String name, String surname, String email, String password, String mobile, String image) {
+        String saltValue = PassEncryption.genSaltValue(30);
+        String safePass = PassEncryption.generateSecurePassword(password, saltValue);
+        Users user = new Users(name,surname,safePass, email, mobile, saltValue, false, image);
+        user.setUser_salt(saltValue);
+
+        ConfirmationToken confirmationToken = new ConfirmationToken(user);
+        confirmationTokenRepository.save(confirmationToken);
+
+        SimpleMailMessage mailMessage = new SimpleMailMessage();
+        mailMessage.setTo(email);
+        mailMessage.setSubject("Complete Registration!");
+        mailMessage.setText(("To confirm your account, please click here: " +
+                "https://localhost:8080/register/confirm-account?token="+confirmationToken.getConfirmationToken()));
+        System.out.println("Confirmation Token: " + confirmationToken.getConfirmationToken());
+        emailService.sendEmail(mailMessage);
+
+        return this.usersRepository.create(name, surname, safePass, email, mobile, saltValue, false, image);
+    }
+
+    @Override
+    public ResponseEntity<?> confirmEmail(String confirmationToken) {
+        ConfirmationToken token = this.confirmationTokenRepository.findConfirmationTokenByToken(confirmationToken);
+
+        if(token != null) {
+            Users user = this.usersRepository.findUserByUserEmailIgnoreCase(token.getUser().getUser_email()).get();
+//            this.usersRepository.edit(user);
+            return ResponseEntity.ok("Email verified successfully!");
+        }
+
+        return ResponseEntity.badRequest().body("Error: Couldn't verify email");
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ArticleController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ArticleController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ArticleController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,29 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import mk.ukim.finki.db.distributorapp.model.Article;
+import mk.ukim.finki.db.distributorapp.service.ArticleService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+@Controller
+public class ArticleController {
+    private final ArticleService articleService;
+
+    public ArticleController(ArticleService articleService) {
+        this.articleService = articleService;
+    }
+
+    @GetMapping
+    public String getProductPage(@RequestParam(required = false) String error, Model model){
+        if(error != null && !error.isEmpty()){
+            model.addAttribute("hasError", true);
+            model.addAttribute("error", error);
+        }
+
+        List<Article> articles = this.articleService.findAll();
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ArticleUnitController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ArticleUnitController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ArticleUnitController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class ArticleUnitController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CategoryController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CategoryController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CategoryController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import mk.ukim.finki.db.distributorapp.service.CategoryService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@Controller
+public class CategoryController {
+
+    private final CategoryService categoryService;
+
+    public CategoryController(CategoryService categoryService) {
+        this.categoryService = categoryService;
+    }
+
+    @GetMapping
+    public String getCategoriesPage(Model model){
+        model.addAttribute("bodyContent", "categories");
+        model.addAttribute("categories", categoryService.listCategories());
+        return "master-template";
+    }
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CityController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CityController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/CityController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class CityController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DeliveryController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DeliveryController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DeliveryController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class DeliveryController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DriverController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DriverController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/DriverController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class DriverController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManagerController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManagerController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManagerController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class ManagerController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManufacturerController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManufacturerController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ManufacturerController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class ManufacturerController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/OrdersController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/OrdersController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/OrdersController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class OrdersController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/PriceController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/PriceController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/PriceController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class PriceController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ProFormaController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ProFormaController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/ProFormaController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class ProFormaController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/UsersController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/UsersController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/UsersController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class UsersController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/VehicleController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/VehicleController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/VehicleController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class VehicleController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/controller/WarehouseController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/controller/WarehouseController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/controller/WarehouseController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class WarehouseController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ArticleRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ArticleRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ArticleRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class ArticleRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ArticleUnitRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ArticleUnitRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ArticleUnitRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class ArticleUnitRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CategoryRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CategoryRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CategoryRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class CategoryRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CityRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CityRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CityRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class CityRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CustomerRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CustomerRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/CustomerRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class CustomerRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/DeliveryRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/DeliveryRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/DeliveryRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class DeliveryRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/DriverRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/DriverRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/DriverRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class DriverRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ManagerRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ManagerRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ManagerRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+public class ManagerRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ManufacturerRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ManufacturerRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ManufacturerRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class ManufacturerRESTController {
+}
Index: c/main/java/mk/ukim/finki/db/distributorapp/web/rest/OrderRestController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/OrderRestController.java	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ 	(revision )
@@ -1,47 +1,0 @@
-package mk.ukim.finki.db.distributorapp.web.rest;
-
-import mk.ukim.finki.db.distributorapp.model.Article;
-import mk.ukim.finki.db.distributorapp.model.Order;
-import mk.ukim.finki.db.distributorapp.service.OrderService;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/api/orders")
-public class OrderRestController {
-    private final OrderService orderService;
-
-    public OrderRestController(OrderService orderService) {
-        this.orderService = orderService;
-    }
-
-    @GetMapping
-    public List<Order> findAll(){
-        return this.orderService.findAll();
-    }
-
-    @GetMapping("{id}")
-    public ResponseEntity<Order> findById(@PathVariable Long id){
-        return this.orderService.findById(id)
-                .map(order -> ResponseEntity.ok().body(order))
-                .orElseGet(()->ResponseEntity.notFound().build());
-    }
-
-    @PostMapping("/add")
-    public ResponseEntity<Order> save(@RequestParam Long customerId, @RequestParam List<Article> articles){
-        return this.orderService.save(customerId,articles)
-                .map(order -> ResponseEntity.ok().body(order))
-                .orElseGet(() -> ResponseEntity.badRequest().build());
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity deleteById(@PathVariable Long id){
-        if(this.orderService.exists(id)){
-            this.orderService.deleteById(id);
-            return ResponseEntity.ok().build();
-        }
-        return ResponseEntity.notFound().build();
-    }
-}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/OrdersRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/OrdersRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/OrdersRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class OrdersRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/PriceRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/PriceRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/PriceRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class PriceRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ProFormaRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ProFormaRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/ProFormaRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class ProFormaRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/UsersRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/UsersRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/UsersRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class UsersRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/VehicleRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/VehicleRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/VehicleRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class VehicleRESTController {
+}
Index: src/main/java/mk/ukim/finki/db/distributorapp/web/rest/WarehouseRESTController.java
===================================================================
--- src/main/java/mk/ukim/finki/db/distributorapp/web/rest/WarehouseRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
+++ src/main/java/mk/ukim/finki/db/distributorapp/web/rest/WarehouseRESTController.java	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.web.rest;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class WarehouseRESTController {
+}
Index: src/main/resources/application.properties
===================================================================
--- src/main/resources/application.properties	(revision ca03c7ef8acf744904ada7e3c85880323bc411f5)
+++ src/main/resources/application.properties	(revision d5e4c806a87aaf44b62e8040b7777d772c66cc1d)
@@ -1,1 +1,24 @@
 spring.application.name=DistributorApp
+# PostgreSQL
+spring.datasource.url=jdbc:postgresql://localhost:5432/distributor_app
+spring.datasource.username=postgres
+spring.datasource.password=b17i19
+spring.datasource.hikari.connection-timeout=20000
+spring.datasource.hikari.maximum-pool-size=5
+spring.datasource.driver-class-name=org.postgresql.Driver
+spring.data.jdbc.dialect=postgresql
+spring.jpa.show-sql=true
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.properties.hibernate.format_sql=true
+
+# Email properties / smtp mail properties
+spring.mail.host=smtp.gmail.com
+spring.mail.port=587
+spring.mail.username=borisdzotov@gmail.com
+spring.mail.password=jcxs wsax pynk bzvg
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.starttls.enable=true
+
+# Logging/Debugging:
+logging.level.org.hibernate.SQL=DEBUG
+logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
