Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/article/Article.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/article/Article.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/article/Article.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,53 @@
+package mk.ukim.finki.db.distributorapp.article;
+
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.articleUnit.ArticleUnit;
+import mk.ukim.finki.db.distributorapp.category.Category;
+import mk.ukim.finki.db.distributorapp.manufacturer.Manufacturer;
+import mk.ukim.finki.db.distributorapp.price.Price;
+
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "article")
+public class Article {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "art_id", nullable = false)
+    private Long articleId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "art_name", nullable = false)
+    private String articleName;
+
+    @NotNull
+    @Column(name = "art_weight", nullable = false)
+    private Integer articleWeight;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "art_image", nullable = false)
+    private String artImage;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "ctg_id", nullable = false)
+    private Category category;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "man_id", nullable = false)
+    private Manufacturer manufacturer;
+
+    @OneToMany(mappedBy = "article")
+    private List<Price> prices;
+
+    @OneToMany(mappedBy = "article")
+    private List<ArticleUnit> articleUnits;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,109 @@
+package mk.ukim.finki.db.distributorapp.article;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.article.dto.ArticleDto;
+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;
+
+public interface ArticleRepository extends JpaRepository<Article, Long> {
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select a.art_id as id,
+                           a.art_name as name,
+                           m.man_name as manufacturer,
+                           0 as quantity,
+                           a.man_id as manufacturerId,
+                           p.price as price,
+                           c.ctg_name as category,
+                           a.ctg_id as categoryId,
+                           a.art_weight as weight,
+                           a.art_image as image
+                    from article a
+                    join manufacturer m on a.man_id = m.man_id
+                    join price p on p.art_id = a.art_id
+                    join category c on a.ctg_id = c.ctg_id
+                    """
+    )
+    List<ArticleDto> listAll();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into article(art_name, art_image, art_weight, ctg_id, man_id) " +
+                    "values (?1,?2,?3,?4,?5)"
+    )
+    Integer create(
+            @NonNull @Param("name") String name,
+            @NonNull @Param("image") String image,
+            @NonNull @Param("weight") Integer weight,
+            @NonNull @Param("ctg") Integer ctg_id,
+            @NonNull @Param("man") Long man_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update article " +
+                    "set art_name=?2,art_image=?3,art_weight=?4,ctg_id=?5,man_id=?6 " +
+                    "where art_id=?1"
+    )
+    Integer edit(
+            @NonNull @Param("id") Long id,
+            @NonNull @Param("name") String name,
+            @NonNull @Param("img") String image,
+            @NonNull @Param("weight") Integer weight,
+            @NonNull @Param("ctg") Integer ctg_id,
+            @NonNull @Param("man") Long man_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from article where art_id=?1"
+    )
+    void delete(@Param("id") Long id);
+
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    with stock as (
+                        select a.art_id,
+                               count(au.unit_id) as quantity
+                        from article a
+                        join price p on a.art_id = p.art_id
+                        join unit_price up on p.price_id = up.price_id
+                        join article_unit au on up.unit_id = au.unit_id
+                        group by a.art_id
+                    )
+                    select a.art_id as id,
+                           a.art_name as name,
+                           m.man_name as manufacturer,
+                           st.quantity as quantity,
+                           m.man_id as manufacturerId,
+                           p.price as price,
+                           c.ctg_name as category,
+                           c.ctg_id as categoryId,
+                           a.art_weight as weight,
+                           a.art_image as image
+                    from article a
+                    join stock st on st.art_id=a.art_id
+                    join manufacturer m on a.man_id = m.man_id
+                    join category c on a.ctg_id = c.ctg_id
+                    join price p on a.art_id = p.art_id
+                    join unit_price up on p.price_id = up.price_id
+                    join article_unit au on up.unit_id = au.unit_id
+                    join warehouse w on w.wh_id = au.wh_id
+                    where w.wh_id = ?1
+                    """
+    )
+    List<ArticleDto> findAllByWarehouse(Integer warehouseId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,17 @@
+package mk.ukim.finki.db.distributorapp.article;
+
+import mk.ukim.finki.db.distributorapp.article.dto.ArticleDto;
+
+import java.util.List;
+
+public interface ArticleService {
+    List<ArticleDto> getAllArticles();
+
+    void deleteById(Long id);
+
+    Integer editById(ArticleDto article);
+
+    Integer create(ArticleDto article);
+
+    List<ArticleDto> getAllArticlesByWarehouse(Integer warehouseId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/article/ArticleServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,49 @@
+package mk.ukim.finki.db.distributorapp.article;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.article.dto.ArticleDto;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class ArticleServiceImpl implements ArticleService {
+    private final ArticleRepository articleRepository;
+
+    @Override
+    public List<ArticleDto> getAllArticles() {
+        return this.articleRepository.listAll();
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        this.articleRepository.deleteById(id);
+    }
+
+    @Override
+    public Integer editById(ArticleDto art) {
+        return this.articleRepository.edit(
+                art.getId(),
+                art.getName(),
+                art.getImage(),
+                art.getWeight(),
+                art.getCategoryId(),
+                art.getManufacturerId());
+    }
+
+    @Override
+    public Integer create(ArticleDto art) {
+        return this.articleRepository.create(
+                art.getName(),
+                art.getImage(),
+                art.getWeight(),
+                art.getCategoryId(),
+                art.getManufacturerId());
+    }
+
+    @Override
+    public List<ArticleDto> getAllArticlesByWarehouse(Integer warehouseId) {
+        return this.articleRepository.findAllByWarehouse(warehouseId);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/article/dto/ArticleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/article/dto/ArticleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/article/dto/ArticleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,21 @@
+package mk.ukim.finki.db.distributorapp.article.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@AllArgsConstructor
+public class ArticleDto {
+    private Long id;
+    private String name;
+    private String manufacturer;
+    private Long quantity;
+    private Long manufacturerId;
+    private BigDecimal price;
+    private String category;
+    private Integer categoryId;
+    private Integer weight;
+    private String image;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnit.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnit.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnit.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,68 @@
+package mk.ukim.finki.db.distributorapp.articleUnit;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.article.Article;
+import mk.ukim.finki.db.distributorapp.order.Orders;
+import mk.ukim.finki.db.distributorapp.price.Price;
+import mk.ukim.finki.db.distributorapp.warehouse.Warehouse;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+@Entity
+@Data
+@Table(name = "article_unit")
+public class ArticleUnit {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long unitId;
+
+    @NotNull
+    @Column(name = "unit_expiration_date", nullable = false)
+    private Date unitExpirationDate;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "unit_serial_number", nullable = false)
+    private String unitSerialNumber;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "unit_batch_number", nullable = false)
+    private String unitBatchNumber;
+
+    @NotNull
+    @Column(name = "unit_manufacture_date", nullable = false)
+    private Date unitManufactureDate;
+
+    @NotNull
+    @Column(name = "unit_cost_price", nullable = false)
+    private BigDecimal unitCostPrice;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "art_id", nullable = false)
+    private Article article;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "wh_id", nullable = false)
+    private Warehouse warehouse;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "ord_id")
+    private Orders order;
+
+    @ManyToMany
+    @JoinTable(
+            name = "unit_price",
+            joinColumns = @JoinColumn(name = "unit_id"),
+            inverseJoinColumns = @JoinColumn(name = "price_id")
+    )
+    private Set<Price> prices = new LinkedHashSet<>();
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,117 @@
+package mk.ukim.finki.db.distributorapp.articleUnit;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.articleUnit.dto.ArticleUnitDto;
+import mk.ukim.finki.db.distributorapp.articleUnit.dto.ArticleUnitSimpleDto;
+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.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+public interface ArticleUnitRepository extends JpaRepository<ArticleUnit, Long> {
+    @Query(
+            nativeQuery = true,
+            value = "select * from article_unit"
+    )
+    List<ArticleUnitSimpleDto> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select au.unit_id as id,
+                    au.unit_expiration_date as expiryDate,
+                    au.unit_serial_number as serialNo,
+                    au.unit_batch_number as batchNo,
+                    au.unit_manufacture_date as manufactureDate,
+                    au.unit_cost_price as costPrice,
+                    a.art_id as artId,
+                    a.art_name as artName,
+                    au.wh_id as whId,
+                    r.region_name as whRegion,
+                    c.city_name as whCity,
+                    au.ord_id as ordId,
+                    u.user_email as customerEmail
+                    from article_unit au
+                    join warehouse wh on au.wh_id = wh.wh_id
+                    join city c on wh.city_id = c.city_id
+                    join region r on c.region_id = r.region_id
+                    join unit_price up on au.unit_id = up.unit_id
+                    join price p on up.price_id = p.price_id
+                    join article a on p.art_id = a.art_id
+                    join orders o on au.ord_id = o.ord_id
+                    join customer cust on o.cust_id = cust.user_id
+                    join users u on cust.user_id = u.user_id
+                    """
+    )
+    List<ArticleUnitDto> findAllByWarehouse(@NonNull @Param("wh") Integer wh_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into article_unit(unit_expiration_date, unit_serial_number, unit_batch_number, unit_manufacture_date, unit_cost_price, wh_id, ord_id) " +
+                    "values (?1,?2,?3,?4,?5,?6,?7)"
+    )
+    Integer create(
+            @NonNull @Param("exp_date") Date unit_exp_date,
+            @NonNull @Param("ser_no") String unit_ser_number,
+            @NonNull @Param("batch_no") String unit_batch_number,
+            @NonNull @Param("man_date") Date unit_manufacture_date,
+            @NonNull @Param("cost_price") BigDecimal unit_cost_price,
+            @NonNull @Param("wh") Integer wh_id,
+            @Param("ord") Long ord_id
+    );
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update article_unit " +
+                    "set unit_expiration_date = ?2, unit_serial_number = ?3, unit_batch_number = ?4,unit_manufacture_date = ?5,unit_cost_price = ?6,wh_id = ?7,ord_id = ?8 " +
+                    "where unit_id=?1"
+    )
+    Integer edit(
+            @NonNull @Param("id") Long id,
+            @NonNull @Param("exp_date") Date unit_exp_date,
+            @NonNull @Param("ser_no") String unit_ser_number,
+            @NonNull @Param("batch_no") String unit_batch_number,
+            @NonNull @Param("man_date") Date unit_manufacture_date,
+            @NonNull @Param("cost_price") BigDecimal unit_cost_price,
+            @NonNull @Param("wh") Integer wh_id,
+            @Param("ord") Long ord_id
+    );
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from article_unit where unit_id=?1"
+    )
+    void delete(@NonNull @Param("id") Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select au.unit_id as id,
+                           au.unit_expiration_date as expiryDate,
+                           au.unit_serial_number as serialNo,
+                           au.unit_batch_number as batchNo,
+                           au.unit_manufacture_date as manufactureDate,
+                           au.unit_cost_price as costPrice,
+                           a.art_id as artId,
+                           au.wh_id as whId,
+                           au.ord_id as ordId
+                    from article_unit au
+                    join unit_price up on au.unit_id = up.unit_id
+                    join price p on up.price_id = p.price_id
+                    join article a on p.art_id = a.art_id
+                    where au.wh_id = ?2 and a.art_id = ?1
+                    """
+    )
+    List<ArticleUnitSimpleDto> findAllSimpleByArticleAndWarehouse(Long articleId, Integer warehouseId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,28 @@
+package mk.ukim.finki.db.distributorapp.articleUnit;
+
+import mk.ukim.finki.db.distributorapp.articleUnit.dto.ArticleUnitDto;
+import mk.ukim.finki.db.distributorapp.articleUnit.dto.ArticleUnitSimpleDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderItemDto;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface ArticleUnitService {
+    List<ArticleUnitSimpleDto> getAllArticleUnits();
+
+    Integer create(ArticleUnitDto articleUnitDto);
+
+    Integer edit(ArticleUnitDto articleUnitDto);
+
+    // TODO: Change edit and simpleEdit method
+    @Transactional
+    Integer simpleEdit(ArticleUnitSimpleDto articleUnitSimpleDto);
+
+    void delete(Long id);
+
+    List<ArticleUnitDto> getAllArticleUnitsByWarehouse(Integer warehouseId);
+
+    List<ArticleUnitSimpleDto> findAllSimpleByArticleAndWarehouse(Long articleId, Integer warehouseId);
+
+    List<ArticleUnitSimpleDto> addArticleUnitToOrder(List<OrderItemDto> orderItems, Long id, Integer whId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/ArticleUnitServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,101 @@
+package mk.ukim.finki.db.distributorapp.articleUnit;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.articleUnit.dto.ArticleUnitDto;
+import mk.ukim.finki.db.distributorapp.articleUnit.dto.ArticleUnitSimpleDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderItemDto;
+import mk.ukim.finki.db.distributorapp.unitPrice.UnitPriceRepository;
+import mk.ukim.finki.db.distributorapp.warehouse.WarehouseRepository;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class ArticleUnitServiceImpl implements ArticleUnitService {
+    private final ArticleUnitRepository articleUnitRepository;
+    private final WarehouseRepository warehouseRepository;
+    private final UnitPriceRepository unitPriceRepository;
+
+    @Override
+    public List<ArticleUnitSimpleDto> getAllArticleUnits() {
+        return this.articleUnitRepository.listAll();
+    }
+
+    @Override
+    @Transactional
+    public Integer create(ArticleUnitDto articleUnitDto) {
+        return this.articleUnitRepository.create(
+                articleUnitDto.getExpiryDate(),
+                articleUnitDto.getSerialNo(),
+                articleUnitDto.getBatchNo(),
+                articleUnitDto.getManufactureDate(),
+                articleUnitDto.getCostPrice(),
+                articleUnitDto.getWhId(),
+                articleUnitDto.getOrdId()
+        );
+    }
+
+    @Override
+    @Transactional
+    public Integer edit(ArticleUnitDto articleUnitDto) {
+        return this.articleUnitRepository.edit(
+                articleUnitDto.getId(),
+                articleUnitDto.getExpiryDate(),
+                articleUnitDto.getSerialNo(),
+                articleUnitDto.getBatchNo(),
+                articleUnitDto.getManufactureDate(),
+                articleUnitDto.getCostPrice(),
+                articleUnitDto.getWhId(),
+                articleUnitDto.getOrdId()
+        );
+    }
+
+    @Transactional
+    @Override
+    public Integer simpleEdit(ArticleUnitSimpleDto articleUnitSimpleDto) {
+        return this.articleUnitRepository.edit(
+                articleUnitSimpleDto.getId(),
+                articleUnitSimpleDto.getExpiryDate(),
+                articleUnitSimpleDto.getSerialNo(),
+                articleUnitSimpleDto.getBatchNo(),
+                articleUnitSimpleDto.getManufactureDate(),
+                articleUnitSimpleDto.getCostPrice(),
+                articleUnitSimpleDto.getWhId(),
+                articleUnitSimpleDto.getOrdId()
+        );
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.articleUnitRepository.deleteById(id);
+    }
+
+    @Override
+    public List<ArticleUnitDto> getAllArticleUnitsByWarehouse(Integer warehouseId) {
+        return this.articleUnitRepository.findAllByWarehouse(warehouseId);
+    }
+
+    @Override
+    public List<ArticleUnitSimpleDto> findAllSimpleByArticleAndWarehouse(Long articleId, Integer warehouseId) {
+        return this.articleUnitRepository.findAllSimpleByArticleAndWarehouse(articleId, warehouseId);
+    }
+
+    @Override
+    public List<ArticleUnitSimpleDto> addArticleUnitToOrder(List<OrderItemDto> orderItems, Long id, Integer whId) {
+        List<ArticleUnitSimpleDto> editedUnits = new ArrayList<>();
+        for (OrderItemDto orderItem : orderItems) {
+            Long articleId = orderItem.getArticleId();
+            Integer quantity = orderItem.getQuantity();
+
+            List<ArticleUnitSimpleDto> articleUnitItems = findAllSimpleByArticleAndWarehouse(articleId, whId);
+            for (int j = 0; j < quantity; j++) {
+                articleUnitItems.get(j).setOrdId(id);
+                editedUnits.add(articleUnitItems.get(j));
+            }
+        }
+        return editedUnits;
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/dto/ArticleUnitDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/dto/ArticleUnitDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/dto/ArticleUnitDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,25 @@
+package mk.ukim.finki.db.distributorapp.articleUnit.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+public class ArticleUnitDto {
+    private Long id;
+    private Date expiryDate;
+    private String serialNo;
+    private String batchNo;
+    private Date manufactureDate;
+    private BigDecimal costPrice;
+    private Long artId;
+    private String artName;
+    private Integer whId;
+    private String whRegion;
+    private String whCity;
+    private Long ordId;
+    private String customerEmail;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/dto/ArticleUnitSimpleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/dto/ArticleUnitSimpleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/articleUnit/dto/ArticleUnitSimpleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.articleUnit.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ArticleUnitSimpleDto {
+    Long id;
+    Date expiryDate;
+    String serialNo;
+    String batchNo;
+    Date manufactureDate;
+    BigDecimal costPrice;
+    Long artId;
+    Integer whId;
+    Long ordId;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/category/Category.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/category/Category.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/category/Category.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,29 @@
+package mk.ukim.finki.db.distributorapp.category;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.article.Article;
+
+import java.util.List;
+
+@Entity(name = "Category")
+@Data
+@Table(name = "category")
+public class Category {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "ctg_id")
+    private Integer categoryId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "ctg_name", nullable = false)
+    private String categoryName;
+
+    @OneToMany(mappedBy = "category")
+    private List<Article> articles;
+
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,54 @@
+package mk.ukim.finki.db.distributorapp.category;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.category.dto.CategoryDto;
+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;
+
+public interface CategoryRepository extends JpaRepository<Category, Long> {
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select ctg_id as id,
+                           ctg_name as name
+                    from category
+                    """
+    )
+    List<CategoryDto> listAll();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = """
+                    insert into category(ctg_name)
+                    values (:name)
+                    """
+    )
+    Integer create(@Param("name") @NonNull String name);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update category " +
+                    "set ctg_name=?2 " +
+                    "where ctg_id=?1"
+    )
+    Integer edit(@NonNull Integer id,
+                 @NonNull String name);
+
+    @Modifying
+    @Transactional
+    @Query(
+            value = "delete from category " +
+                    "where ctg_id = ?1",
+            nativeQuery = true)
+    void deleteById(@NonNull Integer id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,16 @@
+package mk.ukim.finki.db.distributorapp.category;
+
+import mk.ukim.finki.db.distributorapp.category.dto.CategoryDto;
+
+import java.util.List;
+
+public interface CategoryService {
+
+    List<CategoryDto> listCategories();
+
+    Integer create(CategoryDto categoryDto);
+
+    Integer edit(CategoryDto categoryDto);
+
+    void deleteById(Integer id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/category/CategoryServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,34 @@
+package mk.ukim.finki.db.distributorapp.category;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.category.dto.CategoryDto;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class CategoryServiceImpl implements CategoryService {
+    private final CategoryRepository categoryRepository;
+
+    @Override
+    public List<CategoryDto> listCategories() {
+        return this.categoryRepository.listAll();
+    }
+
+    @Override
+    public Integer create(CategoryDto categoryDto) {
+        return this.categoryRepository.create(categoryDto.getName());
+    }
+
+    @Override
+    public Integer edit(CategoryDto categoryDto) {
+        return this.categoryRepository.edit(categoryDto.getId(), categoryDto.getName());
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        this.categoryRepository.deleteById(id);
+    }
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/category/dto/CategoryDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/category/dto/CategoryDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/category/dto/CategoryDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.db.distributorapp.category.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class CategoryDto {
+    private Integer id;
+    private String name;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/city/City.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/city/City.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/city/City.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,38 @@
+package mk.ukim.finki.db.distributorapp.city;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.region.Region;
+import mk.ukim.finki.db.distributorapp.users.Users;
+import mk.ukim.finki.db.distributorapp.warehouse.Warehouse;
+
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "city")
+public class City {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "city_id")
+    private Integer cityId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "city_name", nullable = false)
+    private String cityName;
+
+    @OneToMany(mappedBy = "city")
+    private List<Users> users;
+
+    @OneToOne(mappedBy = "city")
+    private Warehouse warehouse;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "region_id", nullable = false)
+    private Region region;
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,55 @@
+package mk.ukim.finki.db.distributorapp.city;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.city.dto.CityDtoRegister;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface CityRepository extends JpaRepository<City, Long> {
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select c.city_id as id, c.city_name as name
+                    from city c
+                    """
+    )
+    List<CityDtoRegister> findAllCityDtos();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into city(city_name, region_id) " +
+                    "values (?1,?2)"
+    )
+    Integer create(
+            @NonNull String name,
+            @NonNull Integer region);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update city " +
+                    "set city_name=?2, region_id=?3 " +
+                    "where city_id=?1"
+    )
+    Integer edit(
+            @NonNull Integer id,
+            @NonNull String name,
+            @NonNull Integer region);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from city c " +
+                    "where c.city_id=?1"
+    )
+    void deleteById(@NonNull Integer id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,17 @@
+package mk.ukim.finki.db.distributorapp.city;
+
+import mk.ukim.finki.db.distributorapp.city.dto.CityDto;
+import mk.ukim.finki.db.distributorapp.city.dto.CityDtoRegister;
+
+import java.util.List;
+
+public interface CityService {
+
+    List<CityDtoRegister> findAllCityDtos();
+
+    Integer create(CityDto cityDto);
+
+    Integer edit(CityDto cityDto);
+
+    void deleteById(Integer id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/city/CityServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,34 @@
+package mk.ukim.finki.db.distributorapp.city;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.city.dto.CityDto;
+import mk.ukim.finki.db.distributorapp.city.dto.CityDtoRegister;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class CityServiceImpl implements CityService {
+    private final CityRepository cityRepository;
+
+    @Override
+    public List<CityDtoRegister> findAllCityDtos() {
+        return this.cityRepository.findAllCityDtos();
+    }
+
+    @Override
+    public Integer create(CityDto dto) {
+        return this.cityRepository.create(dto.getName(), dto.getRegionId());
+    }
+
+    @Override
+    public Integer edit(CityDto dto) {
+        return this.cityRepository.edit(dto.getId(), dto.getName(), dto.getRegionId());
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        this.cityRepository.deleteById(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/city/dto/CityDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/city/dto/CityDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/city/dto/CityDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,15 @@
+package mk.ukim.finki.db.distributorapp.city.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CityDto {
+    private Integer id;
+    private String name;
+    private Integer regionId;
+    private String regionName;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/city/dto/CityDtoRegister.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/city/dto/CityDtoRegister.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/city/dto/CityDtoRegister.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.db.distributorapp.city.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class CityDtoRegister {
+    private Integer id;
+    private String name;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/Customer.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/Customer.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/Customer.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,46 @@
+package mk.ukim.finki.db.distributorapp.customer;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import mk.ukim.finki.db.distributorapp.customerWeekday.CustomerWeekday;
+import mk.ukim.finki.db.distributorapp.order.Orders;
+import mk.ukim.finki.db.distributorapp.users.Users;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Entity
+@Data
+@Table(name = "customer")
+@DiscriminatorValue("CUSTOMER")
+@PrimaryKeyJoinColumn(name = "user_id")
+public class Customer extends Users {
+    @Size(max = 13)
+    @NotNull
+    @Column(name = "cust_EDB", nullable = false, length = 13)
+    private String customerEDB;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "cust_company_name", nullable = false)
+    private String customerCompanyName;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "cust_adr", nullable = false)
+    private String customerAddress;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "cust_representative_img")
+    private String customerRepresentativeImage;
+
+    @OneToMany(mappedBy = "customer", fetch = FetchType.EAGER)
+    private List<Orders> orders;
+
+    @OneToMany(mappedBy = "customer", fetch = FetchType.EAGER)
+    private List<CustomerWeekday> customerWeekdays;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,68 @@
+package mk.ukim.finki.db.distributorapp.customer;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.customer.dto.CustomerDto;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+public interface CustomerRepository extends JpaRepository<Customer, Long> {
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select c.user_id as id,
+                           u.user_name as name,
+                           u.user_email as email,
+                           u.user_mobile as phone,
+                           c.cust_edb as edb,
+                           c.cust_company_name as compName,
+                           c.cust_adr as address,
+                           c.cust_representative_img
+                    from customer c
+                    join users u on c.user_id = u.user_id
+                    """
+    )
+    CustomerDto findCustomerById(@NonNull Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = """
+                    insert into customer(user_id, cust_edb, cust_company_name, cust_adr, cust_representative_img)
+                    values (?1,?2,?3,?4,?5)
+                    """
+    )
+    Integer create(
+            @NonNull Long id,
+            @NonNull String customerEDB,
+            @NonNull String customerName,
+            @NonNull String customerStreet,
+            @NonNull String customerImage);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update customer " +
+                    "set cust_edb=?2,cust_company_name=?3,cust_adr=?4,cust_representative_img=?5 " +
+                    "where user_id=?1"
+    )
+    Integer edit(
+            @NonNull Long id,
+            @NonNull String customerEDB,
+            @NonNull String customerName,
+            @NonNull String customerStreet,
+            @NonNull String customerImage);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from customer " +
+                    "where user_id=?!"
+    )
+    void delete(@NonNull Long id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,14 @@
+package mk.ukim.finki.db.distributorapp.customer;
+
+import mk.ukim.finki.db.distributorapp.customer.dto.CustomerDto;
+
+public interface CustomerService {
+
+    CustomerDto findCustomerById(Long id);
+
+    Integer create(CustomerDto customerDto);
+
+    Integer edit(CustomerDto customerDto);
+
+    void deleteById(Long id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/CustomerServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.customer;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.customer.dto.CustomerDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class CustomerServiceImpl implements CustomerService {
+
+    private final CustomerRepository customerRepository;
+
+    @Override
+    public CustomerDto findCustomerById(Long id) {
+        return this.customerRepository.findCustomerById(id);
+    }
+
+    @Override
+    public Integer create(CustomerDto customerDto) {
+        return this.customerRepository.create(
+                customerDto.getId(),
+                customerDto.getEdb(),
+                customerDto.getCompName(),
+                customerDto.getAddress(),
+                customerDto.getRepImage());
+    }
+
+    @Override
+    public Integer edit(CustomerDto customerDto) {
+        return this.customerRepository.edit(
+                customerDto.getId(),
+                customerDto.getEdb(),
+                customerDto.getCompName(),
+                customerDto.getAddress(),
+                customerDto.getRepImage());
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        this.customerRepository.delete(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/dto/CustomerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/dto/CustomerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customer/dto/CustomerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,17 @@
+package mk.ukim.finki.db.distributorapp.customer.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class CustomerDto {
+    private Long id;
+    private String name;
+    private String email;
+    private String phone;
+    private String edb;
+    private String compName;
+    private String address;
+    private String repImage;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekday.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekday.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekday.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,40 @@
+package mk.ukim.finki.db.distributorapp.customerWeekday;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import mk.ukim.finki.db.distributorapp.customer.Customer;
+import mk.ukim.finki.db.distributorapp.weekday.Weekday;
+
+import java.time.LocalTime;
+
+@Getter
+@Setter
+@Entity
+@Table(name = "customer_weekday")
+public class CustomerWeekday {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "cust_day_id", nullable = false)
+    private Long customerDayId;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "cust_id", nullable = false)
+    private Customer customer;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "day_id", nullable = false)
+    private Weekday day;
+
+    @NotNull
+    @Column(name = "start_time", nullable = false)
+    private LocalTime customerDayStartTime;
+
+    @NotNull
+    @Column(name = "end_time", nullable = false)
+    private LocalTime customerDayEndTime;
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,48 @@
+package mk.ukim.finki.db.distributorapp.customerWeekday;
+
+import lombok.NonNull;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalTime;
+
+public interface CustomerWeekdayRepository extends JpaRepository<CustomerWeekday, Long> {
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into customer_weekday(cust_id, day_id, start_time, end_time) " +
+                    "values (?1,?2,?3,?4)"
+    )
+    Integer create(
+            Long userId,
+            Short weekdayId,
+            LocalTime startTime,
+            LocalTime endTime);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update customer_weekday " +
+                    "set cust_id=?2,day_id=?3,start_time=?4,end_time=?5 " +
+                    "where cust_day_id=?1"
+    )
+    Integer edit(
+            Long custDayId,
+            Long userId,
+            Short weekdayId,
+            LocalTime startTime,
+            LocalTime endTime);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from customer_weekday where cust_day_id=?1"
+    )
+    void deleteById(@NonNull Long id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.customerWeekday;
+
+import mk.ukim.finki.db.distributorapp.customerWeekday.dto.CustomerWeekdayDto;
+
+public interface CustomerWeekdayService {
+
+    Integer create(CustomerWeekdayDto customerWeekdayDto);
+
+    Integer edit(CustomerWeekdayDto customerWeekdayDto);
+
+    void deleteById(Long customerWeekdayId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/CustomerWeekdayServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,37 @@
+package mk.ukim.finki.db.distributorapp.customerWeekday;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.customerWeekday.dto.CustomerWeekdayDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class CustomerWeekdayServiceImpl implements CustomerWeekdayService {
+    private final CustomerWeekdayRepository customerWeekdayRepository;
+
+    @Override
+    public Integer create(CustomerWeekdayDto customerWeekdayDto) {
+        return this.customerWeekdayRepository.create(
+                customerWeekdayDto.getCustomerId(),
+                customerWeekdayDto.getDayId(),
+                customerWeekdayDto.getDayStartTime(),
+                customerWeekdayDto.getDayEndTime()
+        );
+    }
+
+    @Override
+    public Integer edit(CustomerWeekdayDto customerWeekdayDto) {
+        return this.customerWeekdayRepository.edit(
+                customerWeekdayDto.getCustomerId(),
+                customerWeekdayDto.getCustomerId(),
+                customerWeekdayDto.getDayId(),
+                customerWeekdayDto.getDayStartTime(),
+                customerWeekdayDto.getDayEndTime()
+        );
+    }
+
+    @Override
+    public void deleteById(Long customerWeekdayId) {
+        this.customerWeekdayRepository.deleteById(customerWeekdayId);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/dto/CustomerWeekdayDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/dto/CustomerWeekdayDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/customerWeekday/dto/CustomerWeekdayDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,18 @@
+package mk.ukim.finki.db.distributorapp.customerWeekday.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.time.LocalTime;
+
+@Data
+@AllArgsConstructor
+public class CustomerWeekdayDto {
+    private Long id;
+    private Long customerId;
+    private String customerName;
+    private Short dayId;
+    private String dayName;
+    private LocalTime dayStartTime;
+    private LocalTime dayEndTime;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/Delivery.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/Delivery.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/Delivery.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,55 @@
+package mk.ukim.finki.db.distributorapp.delivery;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.deliveryStatus.DeliveryStatus;
+import mk.ukim.finki.db.distributorapp.order.Orders;
+import mk.ukim.finki.db.distributorapp.vehicle.Vehicle;
+
+import java.time.LocalTime;
+import java.util.Date;
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "delivery")
+public class Delivery {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "del_id")
+    private Long deliveryId;
+
+    @NotNull
+    @Column(name = "del_date_created", nullable = false)
+    private Date deliveryDateCreated;
+
+    @NotNull
+    @Column(name = "del_date", nullable = false)
+    private Date deliveryDate;
+
+    @Column(name = "del_start_km")
+    private Integer deliveryStartKm;
+
+    @Column(name = "del_end_km")
+    private Integer deliveryEndKm;
+
+    @Column(name = "del_start_time")
+    private LocalTime deliveryStartTime;
+
+    @Column(name = "del_end_time")
+    private LocalTime deliveryEndTime;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "d_status_id", nullable = false)
+    private DeliveryStatus deliveryStatus;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "veh_id", nullable = false)
+    private Vehicle vehicle;
+
+    @OneToMany(mappedBy = "delivery")
+    private List<Orders> orders;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,160 @@
+package mk.ukim.finki.db.distributorapp.delivery;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryFullDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliverySimpleDto;
+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.time.LocalTime;
+import java.util.Date;
+import java.util.List;
+
+public interface DeliveryRepository extends JpaRepository<Delivery, Long> {
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into delivery(del_date_created, del_date, del_start_km, del_end_km, del_start_time, del_end_time, d_status_id, veh_id) " +
+                    "values (?1,?2,?3,?4,?5,?6,?7,?8)"
+    )
+    Integer create(
+            @NonNull Date del_date_created,
+            @NonNull Date del_date,
+            Integer del_start_km,
+            Integer del_end_km,
+            LocalTime del_start_time,
+            LocalTime del_end_time,
+            @NonNull Short del_status_id,
+            @NonNull Integer veh_id
+    );
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update delivery " +
+                    "set del_date_created = ?2,del_date = ?3,del_start_km = ?4,del_end_km = ?5,del_start_time = ?6,del_end_time = ?7,d_status_id = ?8,veh_id = ?9 " +
+                    "where del_id = ?1"
+    )
+    Integer edit(
+            @NonNull Long id,
+            @NonNull Date del_date_created,
+            @NonNull Date del_date,
+            Integer del_start_km,
+            Integer del_end_km,
+            LocalTime del_start_time,
+            LocalTime del_end_time,
+            @NonNull Short del_status_id,
+            @NonNull Integer veh_id
+    );
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from delivery where del_id = ?1"
+    )
+    void delete(@NonNull Long id);
+
+    //------------------------------------------------------------------------------------------------------------------
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select del.del_id as id,
+                           del.del_date_created as dateCreated,
+                           del.del_date as deliveryDate,
+                           del.del_start_km as delStartKm,
+                           del.del_end_km as delEndKm,
+                           to_char(d.del_start_time, 'HH24:MI:22') as delStartTime,
+                           to_char(d.del_end_time, 'HH24:MI:SS') as delEndTime,
+                           del.d_status_id as dStatusId,
+                           ds.d_status_name as delStatus,
+                           v.veh_id as vehId,
+                           dr.user_id as driverId,
+                           u.user_name as driverName,
+                           u.user_image as driverImage
+                    from delivery del
+                        join orders o on o.del_id=del.del_id
+                        join delivery d on o.del_id = d.del_id
+                        join delivery_status ds on d.d_status_id=ds.d_status_id
+                        join vehicle v on v.veh_id=d.veh_id
+                        join driver dr on dr.veh_id=v.veh_id
+                        join users u on u.user_id=dr.user_id
+                    where o.cust_id=:customer and del.d_status_id <> 4;
+                    """
+    )
+    List<DeliveryDto> getCurrentDeliveriesByCustomer(@NonNull @Param("customer") Long customer_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select d.del_id as id,
+                           d.del_date_created as dateCreated,
+                           d.del_date as deliveryDate,
+                           d.del_start_km as delStartKm,
+                           d.del_end_km as delEndKm,
+                           to_char(d.del_start_time, 'HH24:MI:22') as delStartTime,
+                           to_char(d.del_end_time, 'HH24:MI:SS') as delEndTime,
+                           d.d_status_id as dStatusId,
+                           ds.d_status_name as delStatus,
+                           v.veh_id as vehId,
+                           dr.user_id as driverId,
+                           u.user_name as driverName,
+                           u.user_image as driverImage
+                    from warehouse w
+                        join manager m on w.wh_id = m.wh_id
+                        join article_unit au on w.wh_id = au.wh_id
+                        join orders o on au.ord_id = o.ord_id
+                        join delivery d on o.del_id = d.del_id
+                        join delivery_status ds on d.d_status_id=ds.d_status_id
+                        join vehicle v on v.veh_id=d.veh_id
+                        join driver dr on dr.veh_id=v.veh_id
+                        join users u on u.user_id=dr.user_id
+                    where m.user_id=:manager and d.d_status_id<>4
+                    """
+    )
+    List<DeliveryDto> getCurrentDeliveriesByManager(@NonNull @Param("manager") Long manager_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select del.del_id as deliveryId,
+                           u.user_name as driverName,
+                           del.del_date as deliveryDate,
+                           del.del_date_created as deliveryCreatedDate,
+                           del.d_status_id as deliveryStatus,
+                           ds.d_status_name as deliveryStatusName
+                    from delivery del
+                    join delivery_status ds on ds.d_status_id=del.d_status_id
+                    join vehicle v on del.veh_id = v.veh_id
+                    join driver d on d.veh_id = v.veh_id
+                    join users u on u.user_id=d.user_id
+                    where v.veh_id = ?1
+                    """
+    )
+    List<DeliverySimpleDto> getDeliveriesByVehicle(Integer vehicleId);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select d.del_id as delId,
+                           d.del_date_created as delDateCreated,
+                           d.del_date as delDate,
+                           d.del_start_km as delStartKm,
+                           d.del_end_km as delEndKm,
+                           to_char(d.del_start_time, 'HH24:MI:22') as delStartTime,
+                           to_char(d.del_end_time, 'HH24:MI:SS') as delEndTime,
+                           d.d_status_id as delStatusId,
+                           d.veh_id as veh_id
+                    from delivery d
+                    where d.del_id = ?1
+                    """
+    )
+    DeliveryFullDto findDeliveryDtoById(@Param("id") Long id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,25 @@
+package mk.ukim.finki.db.distributorapp.delivery;
+
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryCreateDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryFullDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliverySimpleDto;
+
+import java.util.List;
+
+public interface DeliveryService {
+
+    DeliveryFullDto findDeliveryById(Long id);
+
+    Integer create(DeliveryCreateDto deliveryDto);
+
+    Integer edit(DeliveryFullDto deliveryDto);
+
+    void deleteById(Long del_id);
+
+    List<DeliveryDto> getCurrentDeliveriesByCustomer(Long customerId);
+
+    List<DeliveryDto> getCurrentDeliveriesByManager(Long managerId);
+
+    List<DeliverySimpleDto> getDeliveriesByVehicle(Integer vehicleId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/DeliveryServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,72 @@
+package mk.ukim.finki.db.distributorapp.delivery;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryCreateDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryFullDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliverySimpleDto;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class DeliveryServiceImpl implements DeliveryService {
+    private final DeliveryRepository deliveryRepository;
+
+    @Override
+    public DeliveryFullDto findDeliveryById(Long id) {
+        return this.deliveryRepository.findDeliveryDtoById(id);
+    }
+
+    @Override
+    public Integer create(DeliveryCreateDto deliveryDto) {
+        Date currentDate = new Date();
+        return this.deliveryRepository.create(
+                currentDate,
+                deliveryDto.getDelDate(),
+                null,
+                null,
+                null,
+                null,
+                (short) 1,
+                deliveryDto.getVehId()
+        );
+    }
+
+    @Override
+    public Integer edit(DeliveryFullDto deliveryDto) {
+        return this.deliveryRepository.edit(
+                deliveryDto.getDelId(),
+                deliveryDto.getDelDateCreated(),
+                deliveryDto.getDelDate(),
+                deliveryDto.getDelStartKm(),
+                deliveryDto.getDelEndKm(),
+                deliveryDto.getParsedDelStartTime(),
+                deliveryDto.getParsedDelEndTime(),
+                deliveryDto.getDelStatusId(),
+                deliveryDto.getVeh_id()
+        );
+    }
+
+    @Override
+    public void deleteById(Long del_id) {
+        this.deliveryRepository.delete(del_id);
+    }
+
+    @Override
+    public List<DeliveryDto> getCurrentDeliveriesByCustomer(Long customerId) {
+        return this.deliveryRepository.getCurrentDeliveriesByCustomer(customerId);
+    }
+
+    @Override
+    public List<DeliveryDto> getCurrentDeliveriesByManager(Long managerId) {
+        return this.deliveryRepository.getCurrentDeliveriesByManager(managerId);
+    }
+
+    @Override
+    public List<DeliverySimpleDto> getDeliveriesByVehicle(Integer vehicleId) {
+        return this.deliveryRepository.getDeliveriesByVehicle(vehicleId);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryCreateDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryCreateDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryCreateDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,19 @@
+package mk.ukim.finki.db.distributorapp.delivery.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeliveryCreateDto {
+    private Integer vehId;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date delDate;
+    private List<Long> orders;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,36 @@
+package mk.ukim.finki.db.distributorapp.delivery.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+public class DeliveryDto {
+    private Long id;
+    private Date dateCreated;
+    private Date delDate;
+    private Integer delStartKm;
+    private Integer delEndKm;
+
+    private String delStartTime;
+    private String delEndTime;
+
+    private Short dStatusId;
+    private String delStatus;
+    private Integer vehId;
+    private Long driverId;
+    private String driverName;
+    private String driverImg;
+
+
+    public LocalTime getParsedDelStartTime() {
+        return delStartTime != null ? LocalTime.parse(delStartTime) : null;
+    }
+
+    public LocalTime getParsedDelEndTime() {
+        return delEndTime != null ? LocalTime.parse(delEndTime) : null;
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryEndDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryEndDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryEndDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.db.distributorapp.delivery.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeliveryEndDto {
+    private Long id;
+    private Integer delEndKm;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryFullDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryFullDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryFullDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,33 @@
+package mk.ukim.finki.db.distributorapp.delivery.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalTime;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeliveryFullDto {
+    private Long delId;
+    private Date delDateCreated;
+    private Date delDate;
+    private Integer delStartKm;
+    private Integer delEndKm;
+
+    private String delStartTime;
+    private String delEndTime;
+
+    private Short delStatusId;
+    private Integer veh_id;
+
+    public LocalTime getParsedDelStartTime() {
+        return delStartTime != null ? LocalTime.parse(delStartTime) : null;
+    }
+
+    public LocalTime getParsedDelEndTime() {
+        return delEndTime != null ? LocalTime.parse(delEndTime) : null;
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliverySimpleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliverySimpleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliverySimpleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,19 @@
+package mk.ukim.finki.db.distributorapp.delivery.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeliverySimpleDto {
+    private Long deliveryId;
+    private String driverName;
+    private Date deliveryDate;
+    private Date deliveryCreatedDate;
+    private Short deliveryStatus;
+    private String deliveryStatusName;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryStartDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryStartDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/delivery/dto/DeliveryStartDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.db.distributorapp.delivery.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeliveryStartDto {
+    private Long id;
+    private Integer delStartKm;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatus.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatus.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,31 @@
+package mk.ukim.finki.db.distributorapp.deliveryStatus;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.delivery.Delivery;
+
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "delivery_status")
+public class DeliveryStatus {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "d_status_id")
+    private Short deliveryStatusId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "d_status_name", nullable = false)
+    private String deliveryStatusName;
+
+    @NotNull
+    @Column(name = "d_status_desc", nullable = false)
+    private String deliveryStatusDescription;
+
+    @OneToMany(mappedBy = "deliveryStatus")
+    private List<Delivery> deliveries;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,37 @@
+package mk.ukim.finki.db.distributorapp.deliveryStatus;
+
+import lombok.NonNull;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+public interface DeliveryStatusRepository extends JpaRepository<DeliveryStatus, Short> {
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into delivery_status(d_status_name, d_status_desc) " +
+                    "values (?1,?2)"
+    )
+    Integer create(@NonNull String name, @NonNull String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update delivery_status " +
+                    "set d_status_name=?2,d_status_desc=?3 " +
+                    "where d_status_id=?1"
+    )
+    Integer edit(@NonNull Short id, @NonNull String name, @NonNull String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from delivery_status where d_status_id=?1"
+    )
+    void delete(@NonNull Short id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.deliveryStatus;
+
+import mk.ukim.finki.db.distributorapp.deliveryStatus.dto.DeliveryStatusDto;
+
+public interface DeliveryStatusService {
+
+    Integer create(DeliveryStatusDto deliveryStatusDto);
+
+    Integer edit(DeliveryStatusDto deliveryStatusDto);
+
+    void deleteById(Short id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/DeliveryStatusServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,31 @@
+package mk.ukim.finki.db.distributorapp.deliveryStatus;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.deliveryStatus.dto.DeliveryStatusDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class DeliveryStatusServiceImpl implements DeliveryStatusService {
+    private final DeliveryStatusRepository deliveryStatusRepository;
+
+    @Override
+    public Integer create(DeliveryStatusDto deliveryStatusDto) {
+        return this.deliveryStatusRepository.create(
+                deliveryStatusDto.getStatusName(),
+                deliveryStatusDto.getStatusDescription());
+    }
+
+    @Override
+    public Integer edit(DeliveryStatusDto deliveryStatusDto) {
+        return this.deliveryStatusRepository.edit(
+                deliveryStatusDto.getId(),
+                deliveryStatusDto.getStatusName(),
+                deliveryStatusDto.getStatusDescription());
+    }
+
+    @Override
+    public void deleteById(Short id) {
+        this.deliveryStatusRepository.delete(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/dto/DeliveryStatusDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/dto/DeliveryStatusDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/deliveryStatus/dto/DeliveryStatusDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.deliveryStatus.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class DeliveryStatusDto {
+    private Short id;
+    private String statusName;
+    private String statusDescription;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/Driver.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/Driver.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/Driver.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,21 @@
+package mk.ukim.finki.db.distributorapp.driver;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import mk.ukim.finki.db.distributorapp.users.Users;
+import mk.ukim.finki.db.distributorapp.vehicle.Vehicle;
+
+@EqualsAndHashCode(callSuper = true)
+@Entity
+@Data
+@Table(name = "driver")
+@DiscriminatorValue("DRIVER")
+@PrimaryKeyJoinColumn(name = "user_id")
+public class Driver extends Users {
+    @NotNull
+    @OneToOne
+    @JoinColumn(name = "veh_id", nullable = false)
+    private Vehicle vehicle;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,119 @@
+package mk.ukim.finki.db.distributorapp.driver;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliverySimpleDto;
+import mk.ukim.finki.db.distributorapp.driver.dto.DriverDto;
+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;
+
+public interface DriverRepository extends JpaRepository<Driver, Long> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into driver(user_id, veh_id) " +
+                    "values (?1,?2)"
+    )
+    Integer create(
+            @NonNull Long usr_id,
+            @NonNull Integer veh_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update driver " +
+                    "set veh_id=?2 " +
+                    "where user_id=?1"
+    )
+    Integer edit(
+            @NonNull Long usr_id,
+            @NonNull Integer veh_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from driver where user_id=?1"
+    )
+    void delete(@NonNull Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select d.user_id as id,
+                           u.user_name as name,
+                           u.user_email as email,
+                           u.user_mobile as phone,
+                           u.user_image as image,
+                           d.veh_id as vehId
+                    from driver d
+                    join users u on d.user_id = u.user_id
+                    where d.user_id = :id
+                    """
+    )
+    DriverDto findDriverById(@NonNull @Param("id") Long id);
+
+    //    ---------------Dashboard queries------------------------------------------
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select del.del_id as deliveryId,
+                           u.user_name as driverName,
+                           del.del_date as deliveryDate,
+                           del.del_date_created as deliveryCreatedDate,
+                           del.d_status_id as deliveryStatus,
+                           ds.d_status_name as deliveryStatusName
+                    from delivery del
+                    join delivery_status ds on del.d_status_id = ds.d_status_id
+                    join vehicle v on del.veh_id = v.veh_id
+                    join driver d on v.veh_id = d.veh_id
+                    join users u on u.user_id = d.user_id
+                    where d.user_id = ?1 and del.d_status_id = 1
+                    """
+    )
+    List<DeliverySimpleDto> activeAssignedDeliveries(@NonNull Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select del.del_id as deliveryId,
+                           u.user_name as driverName,
+                           del.del_date as deliveryDate,
+                           del.del_date_created as deliveryCreatedDate,
+                           del.d_status_id as deliveryStatus,
+                           ds.d_status_name as deliveryStatusName
+                    from delivery del
+                    join delivery_status ds on del.d_status_id = ds.d_status_id
+                    join vehicle v on del.veh_id = v.veh_id
+                    join driver d on v.veh_id = d.veh_id
+                    join users u on u.user_id = d.user_id
+                    where d.user_id = ?1 and del.d_status_id not between 1 and 3
+                    """
+    )
+    List<DeliverySimpleDto> finishedAssignedDeliveries(@NonNull Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select del.del_id as deliveryId,
+                           u.user_name as driverName,
+                           del.del_date as deliveryDate,
+                           del.del_date_created as deliveryCreatedDate,
+                           del.d_status_id as deliveryStatus,
+                           ds.d_status_name as deliveryStatusName
+                    from delivery del
+                    join delivery_status ds on del.d_status_id = ds.d_status_id
+                    join vehicle v on del.veh_id = v.veh_id
+                    join driver d on v.veh_id = d.veh_id
+                    join users u on u.user_id = d.user_id
+                    where d.user_id = ?1 and del.d_status_id = 3
+                    """
+    )
+    List<DeliverySimpleDto> getOngoingDeliveries(@NonNull Long driverId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,29 @@
+package mk.ukim.finki.db.distributorapp.driver;
+
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryEndDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliverySimpleDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryStartDto;
+import mk.ukim.finki.db.distributorapp.driver.dto.DriverDto;
+
+import java.util.List;
+
+public interface DriverService {
+
+    DriverDto findById(Long id);
+
+    Integer create(DriverDto driverDto);
+
+    Integer edit(DriverDto driverDto);
+
+    void deleteById(Long id);
+
+    List<DeliverySimpleDto> getNewAssignedDeliveries(Long driverId);
+
+    List<DeliverySimpleDto> getFinishedAssignedDeliveries(Long driverId);
+
+    void startDelivery(DeliveryStartDto delivery);
+
+    List<DeliverySimpleDto> getOngoingDeliveries(Long driverId);
+
+    void endDelivery(DeliveryEndDto delivery);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/DriverServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,86 @@
+package mk.ukim.finki.db.distributorapp.driver;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryEndDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryFullDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliverySimpleDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryStartDto;
+import mk.ukim.finki.db.distributorapp.driver.dto.DriverDto;
+import mk.ukim.finki.db.distributorapp.delivery.DeliveryService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class DriverServiceImpl implements DriverService {
+    private final DriverRepository driverRepository;
+    private final DeliveryService deliveryService;
+
+    @Override
+    public DriverDto findById(Long id) {
+        return this.driverRepository.findDriverById(id);
+    }
+
+    @Override
+    public Integer create(DriverDto driverDto) {
+        return this.driverRepository.create(
+                driverDto.getId(),
+                driverDto.getVehId());
+    }
+
+    @Override
+    public Integer edit(DriverDto driverDto) {
+        return this.driverRepository.edit(
+                driverDto.getId(),
+                driverDto.getVehId()
+        );
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        this.driverRepository.deleteById(id);
+    }
+
+    @Override
+    public List<DeliverySimpleDto> getNewAssignedDeliveries(Long driverId) {
+        return this.driverRepository.activeAssignedDeliveries(driverId);
+    }
+
+    @Override
+    public List<DeliverySimpleDto> getFinishedAssignedDeliveries(Long driverId) {
+        return this.driverRepository.finishedAssignedDeliveries(driverId);
+    }
+
+    @Override
+    public List<DeliverySimpleDto> getOngoingDeliveries(Long driverId) {
+        return this.driverRepository.getOngoingDeliveries(driverId);
+    }
+
+    @Override
+    @Transactional
+    public void startDelivery(DeliveryStartDto delivery) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
+
+        DeliveryFullDto deliveryDto = this.deliveryService.findDeliveryById(delivery.getId());
+        deliveryDto.setDelStartKm(delivery.getDelStartKm());
+        deliveryDto.setDelStartTime(LocalTime.now().format(formatter));
+        deliveryDto.setDelStatusId((short) 3);
+        this.deliveryService.edit(deliveryDto);
+    }
+
+    @Override
+    @Transactional
+    public void endDelivery(DeliveryEndDto delivery) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
+
+        DeliveryFullDto deliveryDto = this.deliveryService.findDeliveryById(delivery.getId());
+        deliveryDto.setDelEndKm(delivery.getDelEndKm());
+        deliveryDto.setDelEndTime(LocalTime.now().format(formatter));
+        deliveryDto.setDelStatusId((short) 4);
+        this.deliveryService.edit(deliveryDto);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/dto/CreateDriverDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/dto/CreateDriverDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/dto/CreateDriverDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,20 @@
+package mk.ukim.finki.db.distributorapp.driver.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CreateDriverDto {
+    private String name;
+    private String surname;
+    private String password;
+    private String repeatedPassword;
+    private String email;
+    private String mobile;
+    private String profileImage;
+    private Integer city;
+    private Integer vehicle;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/dto/DriverDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/dto/DriverDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/driver/dto/DriverDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,17 @@
+package mk.ukim.finki.db.distributorapp.driver.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DriverDto {
+    private Long id;
+    private String name;
+    private String email;
+    private String phone;
+    private String image;
+    private Integer vehId;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/EmailAlreadyExistsException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/EmailAlreadyExistsException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/EmailAlreadyExistsException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.exceptions;
+
+public class EmailAlreadyExistsException extends RuntimeException {
+    public EmailAlreadyExistsException(String email) {
+        super("User with the email " + email + " already exists.");
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidArgumentsException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidArgumentsException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidArgumentsException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,8 @@
+package mk.ukim.finki.db.distributorapp.exceptions;
+
+public class InvalidArgumentsException extends RuntimeException {
+
+    public InvalidArgumentsException() {
+        super("Invalid argument.");
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidUserCredentialsException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidUserCredentialsException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidUserCredentialsException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,8 @@
+package mk.ukim.finki.db.distributorapp.exceptions;
+
+public class InvalidUserCredentialsException extends RuntimeException {
+
+    public InvalidUserCredentialsException() {
+        super("Invalid user credentials");
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidUsernameOrPasswordException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidUsernameOrPasswordException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/InvalidUsernameOrPasswordException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,4 @@
+package mk.ukim.finki.db.distributorapp.exceptions;
+
+public class InvalidUsernameOrPasswordException extends RuntimeException {
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/PasswordsDoNotMatchException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/PasswordsDoNotMatchException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/PasswordsDoNotMatchException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.exceptions;
+
+public class PasswordsDoNotMatchException extends RuntimeException {
+    public PasswordsDoNotMatchException() {
+        super("The two passwords do not match.");
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/UserNotFoundException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/UserNotFoundException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/UserNotFoundException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.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: backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/UsernameAlreadyExistsException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/UsernameAlreadyExistsException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/exceptions/UsernameAlreadyExistsException.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.db.distributorapp.exceptions;
+
+public class UsernameAlreadyExistsException extends RuntimeException {
+    public UsernameAlreadyExistsException(String username) {
+        super("User with the username " + username + " already exists.");
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/Manager.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/Manager.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/Manager.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,21 @@
+package mk.ukim.finki.db.distributorapp.manager;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import mk.ukim.finki.db.distributorapp.users.Users;
+import mk.ukim.finki.db.distributorapp.warehouse.Warehouse;
+
+@EqualsAndHashCode(callSuper = true)
+@Entity
+@Data
+@Table(name = "manager")
+@DiscriminatorValue("MANAGER")
+@PrimaryKeyJoinColumn(name = "user_id")
+public class Manager extends Users {
+    @NotNull
+    @OneToOne
+    @JoinColumn(name = "wh_id", nullable = false, unique = true)
+    private Warehouse warehouse;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,40 @@
+package mk.ukim.finki.db.distributorapp.manager;
+
+import lombok.NonNull;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+public interface ManagerRepository extends JpaRepository<Manager, Integer> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into manager(user_id, wh_id) " +
+                    "values (?1,?2)"
+    )
+    Integer create(
+            @NonNull Long id,
+            @NonNull Integer whId);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update manager " +
+                    "set wh_id=?2 " +
+                    "where user_id=?1"
+    )
+    Integer edit(
+            @NonNull Long id,
+            @NonNull Integer whId);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from manager where user_id=?1"
+    )
+    void delete(@NonNull Long id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.db.distributorapp.manager;
+
+import mk.ukim.finki.db.distributorapp.manager.dto.ManagerDto;
+
+public interface ManagerService {
+
+    Integer create(ManagerDto managerDto);
+
+    Integer edit(ManagerDto managerDto);
+
+    void deleteById(Long id);
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/ManagerServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,32 @@
+package mk.ukim.finki.db.distributorapp.manager;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.manager.dto.ManagerDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class ManagerServiceImpl implements ManagerService {
+    private final ManagerRepository managerRepository;
+
+    @Override
+    public Integer create(ManagerDto managerDto) {
+        return this.managerRepository.create(
+                managerDto.getId(),
+                managerDto.getWhId()
+        );
+    }
+
+    @Override
+    public Integer edit(ManagerDto managerDto) {
+        return this.managerRepository.edit(
+                managerDto.getId(),
+                managerDto.getWhId()
+        );
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        this.managerRepository.delete(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/dto/CreateManagerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/dto/CreateManagerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/dto/CreateManagerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,20 @@
+package mk.ukim.finki.db.distributorapp.manager.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CreateManagerDto {
+    private String name;
+    private String surname;
+    private String password;
+    private String repeatedPassword;
+    private String email;
+    private String mobile;
+    private String profileImage;
+    private Integer city;
+    private Integer warehouseId;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/dto/ManagerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/dto/ManagerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manager/dto/ManagerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,19 @@
+package mk.ukim.finki.db.distributorapp.manager.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ManagerDto {
+    private Long id;
+    private String name;
+    private String email;
+    private String phone;
+    private String image;
+    private Integer whId;
+    private String whRegion;
+    private String whCity;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/Manufacturer.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/Manufacturer.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/Manufacturer.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.manufacturer;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.article.Article;
+
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "manufacturer")
+public class Manufacturer {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "man_id")
+    private Long manufacturerId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "man_name", nullable = false)
+    private String manufacturerName;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "man_adr", nullable = false)
+    private String manufacturerAddress;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "man_mobile", nullable = false)
+    private String manufacturerMobile;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "man_email", nullable = false)
+    private String manufacturerEmail;
+
+    @OneToMany(mappedBy = "manufacturer")
+    private List<Article> articles;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,65 @@
+package mk.ukim.finki.db.distributorapp.manufacturer;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.manufacturer.dto.ManufacturerDto;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface ManufacturerRepository extends JpaRepository<Manufacturer, Long> {
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select m.man_id as id,
+                           m.man_name as name,
+                           m.man_adr as address,
+                           m.man_mobile as phone,
+                           m.man_email as email
+                    from manufacturer m
+                    """
+    )
+    List<ManufacturerDto> listAll();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = """
+                    insert into manufacturer(man_name, man_adr, man_mobile, man_email)
+                    values (?1,?2,?3,?4)
+                    """
+    )
+    Integer create(
+            @NonNull String name,
+            @NonNull String address,
+            @NonNull String mobile,
+            @NonNull String email);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = """
+                    update manufacturer
+                    set man_name=?2,man_adr=?3,man_mobile=?4,man_email=?5
+                    where man_id=?1
+                    """
+    )
+    Integer edit(
+            @NonNull Long id,
+            @NonNull String name,
+            @NonNull String address,
+            @NonNull String mobile,
+            @NonNull String email);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from manufacturer where man_id=?1"
+    )
+    void delete(@NonNull Long id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,15 @@
+package mk.ukim.finki.db.distributorapp.manufacturer;
+
+import mk.ukim.finki.db.distributorapp.manufacturer.dto.ManufacturerDto;
+
+import java.util.List;
+
+public interface ManufacturerService {
+    List<ManufacturerDto> getAllManufacturers();
+
+    Integer create(ManufacturerDto manufacturerDto);
+
+    Integer edit(ManufacturerDto manufacturerDto);
+
+    void deleteById(Long id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/ManufacturerServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.db.distributorapp.manufacturer;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.manufacturer.dto.ManufacturerDto;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class ManufacturerServiceImpl implements ManufacturerService {
+    private final ManufacturerRepository manufacturerRepository;
+
+    @Override
+    public List<ManufacturerDto> getAllManufacturers() {
+        return this.manufacturerRepository.listAll();
+    }
+
+    @Override
+    public Integer create(ManufacturerDto manufacturerDto) {
+        return this.manufacturerRepository.create(
+                manufacturerDto.getName(),
+                manufacturerDto.getAddress(),
+                manufacturerDto.getPhone(),
+                manufacturerDto.getEmail());
+    }
+
+    @Override
+    public Integer edit(ManufacturerDto manufacturerDto) {
+        return this.manufacturerRepository.edit(
+                manufacturerDto.getId(),
+                manufacturerDto.getName(),
+                manufacturerDto.getAddress(),
+                manufacturerDto.getPhone(),
+                manufacturerDto.getEmail());
+    }
+
+    @Override
+    public void deleteById(Long id) {
+
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/dto/ManufacturerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/dto/ManufacturerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/manufacturer/dto/ManufacturerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,14 @@
+package mk.ukim.finki.db.distributorapp.manufacturer.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class ManufacturerDto {
+    private Long id;
+    private String name;
+    private String address;
+    private String phone;
+    private String email;
+}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,21 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-@Data
-@AllArgsConstructor
-public class ArticleDto {
-    private Long id;
-    private String name;
-    private String manufacturer;
-    private Long quantity;
-    private Long manufacturerId;
-    private BigDecimal price;
-    private String category;
-    private Integer categoryId;
-    private Integer weight;
-    private String image;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleUnitDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleUnitDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,25 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-public class ArticleUnitDto {
-    private Long id;
-    private Date expiryDate;
-    private String serialNo;
-    private String batchNo;
-    private Date manufactureDate;
-    private BigDecimal costPrice;
-    private Long artId;
-    private String artName;
-    private Integer whId;
-    private String whRegion;
-    private String whCity;
-    private Long ordId;
-    private String customerEmail;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleUnitSimpleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleUnitSimpleDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ArticleUnitSimpleDto {
-    Long id;
-    Date expiryDate;
-    String serialNo;
-    String batchNo;
-    Date manufactureDate;
-    BigDecimal costPrice;
-    Long artId;
-    Integer whId;
-    Long ordId;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CategoryDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CategoryDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class CategoryDto {
-    private Integer id;
-    private String name;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ChangePasswordDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ChangePasswordDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,14 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ChangePasswordDto {
-    String email;
-    String oldPassword;
-    String newPassword;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class CityDto {
-    private Integer id;
-    private String name;
-    private Integer regionId;
-    private String regionName;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDtoRegister.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CityDtoRegister.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class CityDtoRegister {
-    private Integer id;
-    private String name;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateDriverDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateDriverDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,20 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class CreateDriverDto {
-    private String name;
-    private String surname;
-    private String password;
-    private String repeatedPassword;
-    private String email;
-    private String mobile;
-    private String profileImage;
-    private Integer city;
-    private Integer vehicle;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateManagerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateManagerDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,20 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class CreateManagerDto {
-    private String name;
-    private String surname;
-    private String password;
-    private String repeatedPassword;
-    private String email;
-    private String mobile;
-    private String profileImage;
-    private Integer city;
-    private Integer warehouseId;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateOrderDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateOrderDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class CreateOrderDto {
-    private List<OrderItemDto> orderItems;
-    boolean proForma;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CustomerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CustomerDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class CustomerDto {
-    private Long id;
-    private String name;
-    private String email;
-    private String phone;
-    private String edb;
-    private String compName;
-    private String address;
-    private String repImage;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CustomerWeekdayDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CustomerWeekdayDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,18 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.time.LocalTime;
-
-@Data
-@AllArgsConstructor
-public class CustomerWeekdayDto {
-    private Long id;
-    private Long customerId;
-    private String customerName;
-    private Short dayId;
-    private String dayName;
-    private LocalTime dayStartTime;
-    private LocalTime dayEndTime;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryCreateDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryCreateDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.util.Date;
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class DeliveryCreateDto {
-    private Integer vehId;
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date delDate;
-    private List<Long> orders;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,36 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.time.LocalTime;
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-public class DeliveryDto {
-    private Long id;
-    private Date dateCreated;
-    private Date delDate;
-    private Integer delStartKm;
-    private Integer delEndKm;
-
-    private String delStartTime;
-    private String delEndTime;
-
-    private Short dStatusId;
-    private String delStatus;
-    private Integer vehId;
-    private Long driverId;
-    private String driverName;
-    private String driverImg;
-
-
-    public LocalTime getParsedDelStartTime() {
-        return delStartTime != null ? LocalTime.parse(delStartTime) : null;
-    }
-
-    public LocalTime getParsedDelEndTime() {
-        return delEndTime != null ? LocalTime.parse(delEndTime) : null;
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryEndDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryEndDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,13 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class DeliveryEndDto {
-    private Long id;
-    private Integer delEndKm;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryFullDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryFullDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalTime;
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class DeliveryFullDto {
-    private Long delId;
-    private Date delDateCreated;
-    private Date delDate;
-    private Integer delStartKm;
-    private Integer delEndKm;
-
-    private String delStartTime;
-    private String delEndTime;
-
-    private Short delStatusId;
-    private Integer veh_id;
-
-    public LocalTime getParsedDelStartTime() {
-        return delStartTime != null ? LocalTime.parse(delStartTime) : null;
-    }
-
-    public LocalTime getParsedDelEndTime() {
-        return delEndTime != null ? LocalTime.parse(delEndTime) : null;
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliverySimpleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliverySimpleDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class DeliverySimpleDto {
-    private Long deliveryId;
-    private String driverName;
-    private Date deliveryDate;
-    private Date deliveryCreatedDate;
-    private Short deliveryStatus;
-    private String deliveryStatusName;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryStartDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryStartDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,13 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class DeliveryStartDto {
-    private Long id;
-    private Integer delStartKm;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryStatusDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DeliveryStatusDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class DeliveryStatusDto {
-    private Short id;
-    private String statusName;
-    private String statusDescription;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DriverDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/DriverDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class DriverDto {
-    private Long id;
-    private String name;
-    private String email;
-    private String phone;
-    private String image;
-    private Integer vehId;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginRequestDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginRequestDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,13 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class LoginRequestDto {
-    private String email;
-    private String password;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginResponseDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/LoginResponseDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class LoginResponseDto {
-    private String token;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ManagerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ManagerDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ManagerDto {
-    private Long id;
-    private String name;
-    private String email;
-    private String phone;
-    private String image;
-    private Integer whId;
-    private String whRegion;
-    private String whCity;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ManufacturerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ManufacturerDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,14 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class ManufacturerDto {
-    private Long id;
-    private String name;
-    private String address;
-    private String phone;
-    private String email;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderItemDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderItemDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,18 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class OrderItemDto {
-    private Long articleId;
-    private String articleName;
-    private String manufacturerName;
-    private BigDecimal unitPrice;
-    private Integer quantity;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderManagerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderManagerDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class OrderManagerDto {
-    private Long id;
-    private java.sql.Date ordDate;
-    private Integer ordSum;
-    private LocalDateTime ordFulfillmentDate;
-    private String customerName;
-    private String ordComment;
-    private Short oStatusId;
-    private Long customerId;
-    private Long deliveryId;
-    private Long pfId;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderSimpleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderSimpleDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class OrderSimpleDto {
-    private Long id;
-    private java.sql.Date ordDate;
-    private Integer ordSum;
-    private LocalDateTime ordFulfillmentDate;
-    private String ordComment;
-    private Short oStatusId;
-    private Long customerId;
-    private Long deliveryId;
-    private Long pfId;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderStatusDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderStatusDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class OrderStatusDto {
-    private Short id;
-    private String statusName;
-    private String statusDescription;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrdersDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrdersDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,32 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class OrdersDto {
-    private Long id;
-    private LocalDate ordDate;
-    private Integer ordSum;
-    private LocalDateTime ordFulfillmentDate;
-    private String ordComment;
-    private Short oStatusId;
-    private String statusName;
-    private Long customerId;
-    private String customerName;
-    private String customerPhone;
-    private String customerEmail;
-    private Long deliveryId;
-    private Long driverId;
-    private String driverName;
-    private String driverPhone;
-    private String driverEmail;
-    private Long pfId;
-    private String pfStatus;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/PriceDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/PriceDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-public class PriceDto {
-    private Integer id;
-    private BigDecimal price;
-    private LocalDateTime dateEffective;
-    private Long artId;
-    private String artName;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ProFormaDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ProFormaDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDate;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ProFormaDto {
-    private Long id;
-    private LocalDate pfDeadline;
-    private LocalDate pfDateCreated;
-    private Short statusId;
-    private String statusName;
-    private Long ordId;
-    private Long customerId;
-    private String customerName;
-    private String customerEmail;
-    private String customerPhone;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ProFormaStatusDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ProFormaStatusDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class ProFormaStatusDto {
-    private Short id;
-    private String statusName;
-    private String statusDescription;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/RegionDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/RegionDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class RegionDto {
-    public Integer id;
-    public String name;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/RegisterRequestDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/RegisterRequestDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class RegisterRequestDto {
-    private String name;
-    private String surname;
-    private String password;
-    private String repeatedPassword;
-    private String email;
-    private String mobile;
-    private String profileImage;
-    private Integer city;
-    private String edb;
-    private String compName;
-    private String address;
-    private String repImage;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/TokenDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/TokenDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,20 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class TokenDto {
-    Long t_id;
-    String t_value;
-    LocalDateTime t_date;
-    String t_type;
-    LocalDateTime t_expiry;
-    LocalDateTime t_validated_at;
-    Long user_id;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UnitPriceDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UnitPriceDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class UnitPriceDto {
-    private Long unitId;
-    private Long priceId;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UserDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UserDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class UserDto {
-    private Long id;
-    private String firstName;
-    private String lastName;
-    private String email;
-    private String phone;
-    private String image;
-    private Integer cityId;
-    private String cityName;
-    private String regionName;
-    private String role;
-    private String clazz_;
-    Boolean userActive;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UsersLoadingDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UsersLoadingDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,20 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class UsersLoadingDto {
-    Long userId;
-    String userName;
-    String userSurname;
-    String userPassword;
-    String userEmail;
-    String userMobile;
-    String userSalt;
-    Boolean userActive;
-    String userImage;
-    String userRole;
-    String clazz_;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/VehicleBasicDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/VehicleBasicDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class VehicleBasicDto {
-    private Integer id;
-    private Integer warehouseId;
-    private String plateNumber;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/VehicleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/VehicleDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,28 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-public class VehicleDto {
-    private Integer id;
-    private Integer carryWeight;
-    private Short serviceInterval;
-    private Integer kilometers;
-    private Date lastServiceDate;
-    private Integer lastServiceKm;
-    private String plate;
-    private String vin;
-    private Date registrationDate;
-    private Integer whId;
-    private String city;
-    private String region;
-    private Long driverId;
-    private String driverName;
-    private String driverEmail;
-    private String driverPhone;
-    private String driverImg;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WarehouseDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WarehouseDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class WarehouseDto {
-    private Integer id;
-    private String address;
-    private Integer cityId;
-    private String cityName;
-    private Integer regionId;
-    private String regionName;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WarehouseInventoryDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WarehouseInventoryDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class WarehouseInventoryDto {
-    String articleName;
-    String manufacturerName;
-    Long totalUnits;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WeekdayDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/WeekdayDto.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class WeekdayDto {
-    private Short id;
-    private String dayName;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Article.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Article.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,49 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "article")
-public class Article {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "art_id", nullable = false)
-    private Long articleId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "art_name", nullable = false)
-    private String articleName;
-
-    @NotNull
-    @Column(name = "art_weight", nullable = false)
-    private Integer articleWeight;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "art_image", nullable = false)
-    private String artImage;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY,optional = false)
-    @JoinColumn(name = "ctg_id", nullable = false)
-    private Category category;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "man_id", nullable = false)
-    private Manufacturer manufacturer;
-
-    @OneToMany(mappedBy = "article")
-    private List<Price> prices;
-
-    @OneToMany(mappedBy = "article")
-    private List<ArticleUnit> articleUnits;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ArticleUnit.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ArticleUnit.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,64 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-@Entity
-@Data
-@Table(name = "article_unit")
-public class ArticleUnit {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long unitId;
-
-    @NotNull
-    @Column(name = "unit_expiration_date", nullable = false)
-    private Date unitExpirationDate;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "unit_serial_number", nullable = false)
-    private String unitSerialNumber;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "unit_batch_number", nullable = false)
-    private String unitBatchNumber;
-
-    @NotNull
-    @Column(name = "unit_manufacture_date", nullable = false)
-    private Date unitManufactureDate;
-
-    @NotNull
-    @Column(name = "unit_cost_price", nullable = false)
-    private BigDecimal unitCostPrice;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "art_id", nullable = false)
-    private Article article;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "wh_id",nullable = false)
-    private Warehouse warehouse;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "ord_id")
-    private Orders order;
-
-    @ManyToMany
-    @JoinTable(
-            name="unit_price",
-            joinColumns = @JoinColumn(name="unit_id"),
-            inverseJoinColumns = @JoinColumn(name="price_id")
-    )
-    private Set<Price> prices = new LinkedHashSet<>();
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Category.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Category.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,28 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity(name = "Category")
-@Data
-@Table(name = "category")
-public class Category {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "ctg_id")
-    private Integer categoryId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "ctg_name", nullable = false)
-    private String categoryName;
-
-    @OneToMany(mappedBy = "category")
-    private List<Article> articles;
-
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/City.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/City.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,35 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "city")
-public class City {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "city_id")
-    private Integer cityId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "city_name", nullable = false)
-    private String cityName;
-
-    @OneToMany(mappedBy = "city")
-    private List<Users> users;
-
-    @OneToOne(mappedBy = "city")
-    private Warehouse warehouse;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "region_id", nullable = false)
-    private Region region;
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Customer.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Customer.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,43 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.List;
-
-@EqualsAndHashCode(callSuper = true)
-@Entity
-@Data
-@Table(name = "customer")
-@DiscriminatorValue("CUSTOMER")
-@PrimaryKeyJoinColumn(name = "user_id")
-public class Customer extends Users {
-    @Size(max = 13)
-    @NotNull
-    @Column(name = "cust_EDB", nullable = false, length = 13)
-    private String customerEDB;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "cust_company_name", nullable = false)
-    private String customerCompanyName;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "cust_adr", nullable = false)
-    private String customerAddress;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "cust_representative_img")
-    private String customerRepresentativeImage;
-
-    @OneToMany(mappedBy = "customer", fetch = FetchType.EAGER)
-    private List<Orders> orders;
-
-    @OneToMany(mappedBy = "customer", fetch = FetchType.EAGER)
-    private List<CustomerWeekday> customerWeekdays;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/CustomerWeekday.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/CustomerWeekday.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,38 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.time.LocalTime;
-
-@Getter
-@Setter
-@Entity
-@Table(name = "customer_weekday")
-public class CustomerWeekday {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "cust_day_id", nullable = false)
-    private Long customerDayId;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "cust_id", nullable = false)
-    private Customer customer;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "day_id", nullable = false)
-    private Weekday day;
-
-    @NotNull
-    @Column(name = "start_time", nullable = false)
-    private LocalTime customerDayStartTime;
-
-    @NotNull
-    @Column(name = "end_time", nullable = false)
-    private LocalTime customerDayEndTime;
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Delivery.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Delivery.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,52 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.time.LocalTime;
-import java.util.Date;
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "delivery")
-public class Delivery {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "del_id")
-    private Long deliveryId;
-
-    @NotNull
-    @Column(name = "del_date_created", nullable = false)
-    private Date deliveryDateCreated;
-
-    @NotNull
-    @Column(name = "del_date", nullable = false)
-    private Date deliveryDate;
-
-    @Column(name = "del_start_km")
-    private Integer deliveryStartKm;
-
-    @Column(name = "del_end_km")
-    private Integer deliveryEndKm;
-
-    @Column(name = "del_start_time")
-    private LocalTime deliveryStartTime;
-
-    @Column(name = "del_end_time")
-    private LocalTime deliveryEndTime;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "d_status_id", nullable = false)
-    private DeliveryStatus deliveryStatus;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "veh_id", nullable = false)
-    private Vehicle vehicle;
-
-    @OneToMany(mappedBy = "delivery")
-    private List<Orders> orders;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/DeliveryStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/DeliveryStatus.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,30 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "delivery_status")
-public class DeliveryStatus {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "d_status_id")
-    private Short deliveryStatusId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "d_status_name", nullable = false)
-    private String deliveryStatusName;
-
-    @NotNull
-    @Column(name = "d_status_desc", nullable = false)
-    private String deliveryStatusDescription;
-
-    @OneToMany(mappedBy = "deliveryStatus")
-    private List<Delivery> deliveries;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Driver.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Driver.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-@EqualsAndHashCode(callSuper = true)
-@Entity
-@Data
-@Table(name = "driver")
-@DiscriminatorValue("DRIVER")
-@PrimaryKeyJoinColumn(name = "user_id")
-public class Driver extends Users {
-    @NotNull
-    @OneToOne
-    @JoinColumn(name = "veh_id", nullable = false)
-    private Vehicle vehicle;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manager.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manager.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-@EqualsAndHashCode(callSuper = true)
-@Entity
-@Data
-@Table(name = "manager")
-@DiscriminatorValue("MANAGER")
-@PrimaryKeyJoinColumn(name = "user_id")
-public class Manager extends Users {
-    @NotNull
-    @OneToOne
-    @JoinColumn(name = "wh_id", nullable = false, unique = true)
-    private Warehouse warehouse;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manufacturer.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Manufacturer.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,41 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "manufacturer")
-public class Manufacturer {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "man_id")
-    private Long manufacturerId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "man_name", nullable = false)
-    private String manufacturerName;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "man_adr", nullable = false)
-    private String manufacturerAddress;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "man_mobile", nullable = false)
-    private String manufacturerMobile;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "man_email", nullable = false)
-    private String manufacturerEmail;
-
-    @OneToMany(mappedBy = "manufacturer")
-    private List<Article> articles;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/OrderStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/OrderStatus.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,30 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-@Table(name="order_status", schema = "IND0_185022")
-public class OrderStatus {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "o_status_id")
-    private Short orderStatusId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "o_status_name", nullable = false)
-    private String orderStatusName;
-
-    @NotNull
-    @Column(name = "o_status_desc", nullable = false)
-    private String orderStatusDescription;
-
-    @OneToMany(mappedBy = "orderStatus")
-    private List<Orders> orders;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Orders.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Orders.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,54 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "orders")
-public class Orders {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "ord_id", nullable = false)
-    private Long orderId;
-
-    @NotNull
-    @Column(name = "ord_date", nullable = false)
-    private LocalDate orderDate;
-
-    @NotNull
-    @Column(name = "ord_sum", nullable = false)
-    private Integer orderSum;
-
-    @Column(name = "ord_fulfillment_date")
-    private LocalDateTime orderFulfillmentDate;
-
-    @Column(name = "ord_comment")
-    private String orderComment;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "o_status_id", nullable = false)
-    private OrderStatus orderStatus;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "cust_id", nullable = false)
-    private Customer customer;
-
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "del_id", nullable = false)
-    private Delivery delivery;
-
-    @OneToOne
-    @JoinColumn(name = "pf_id", nullable = false, unique = true)
-    private ProForma proForma;
-
-    @OneToMany(mappedBy = "order")
-    private List<ArticleUnit> articleUnits;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Price.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Price.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,41 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import org.hibernate.annotations.ColumnDefault;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-@Entity
-@Data
-@Table(name = "price")
-public class Price {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "price_id")
-    private Integer priceId;
-
-    @NotNull
-    @Column(name = "price", nullable = false)
-    private BigDecimal price;
-
-    @NotNull
-    @ColumnDefault("CURRENT_TIMESTAMP")
-    @Column(name = "price_eff_date", nullable = false)
-    private LocalDateTime priceEffectiveDate;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "art_id", nullable = false)
-    private Article article;
-
-    @ManyToMany
-    @JoinTable(name = "unit_price",
-            joinColumns = @JoinColumn(name = "price_id"),
-            inverseJoinColumns = @JoinColumn(name = "unit_id"))
-    private Set<ArticleUnit> articleUnits = new LinkedHashSet<>();
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProForma.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProForma.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.time.LocalDate;
-
-@Entity
-@Data
-@Table(name = "pro_forma")
-public class ProForma {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "pf_id")
-    private Long proFormaId;
-
-    @NotNull
-    @Column(name = "pf_deadline", nullable = false)
-    private LocalDate proFormaDeadline;
-
-    @NotNull
-    @Column(name = "pf_date_created", nullable = false)
-    private LocalDate proFormaDateCreated;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "pf_status_id", nullable = false)
-    private ProFormaStatus proFormaStatus;
-
-    @OneToOne(mappedBy = "proForma")
-    private Orders order;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProFormaStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ProFormaStatus.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,30 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "pro_forma_status", schema = "IND0_185022")
-public class ProFormaStatus {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "pf_status_id")
-    private Short proFormaStatusId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "pf_status_name", nullable = false)
-    private String proFormaStatusName;
-
-    @NotNull
-    @Column(name = "pf_status_desc", nullable = false)
-    private String proFormaStatusDescription;
-
-    @OneToMany(mappedBy = "proFormaStatus")
-    private List<ProForma> pro_formas;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Region.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Region.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,27 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "region")
-public class Region {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "region_id", nullable = false)
-    private Integer regionId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "region_name", nullable = false)
-    private String regionName;
-
-    @OneToMany(mappedBy = "region")
-    private List<City> cities;
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/UnitPrice.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/UnitPrice.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import lombok.Data;
-
-@Data
-@Entity
-@Table(name = "unit_price", schema = "IND0_185022")
-public class UnitPrice {
-    @EmbeddedId
-    private UnitPriceId id;
-
-    @MapsId("unitId")
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "unit_id", nullable = false)
-    private ArticleUnit unit;
-
-    @MapsId("priceId")
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "price_id", nullable = false)
-    private Price price;
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/UnitPriceId.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/UnitPriceId.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Embeddable;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-@Data
-@Embeddable
-@NoArgsConstructor
-@AllArgsConstructor
-@EqualsAndHashCode
-public class UnitPriceId implements Serializable {
-    @Column(name = "unit_id", nullable = false)
-    private Long unitId;
-    @Column(name = "price_id", nullable = false)
-    private Long priceId;
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Users.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Users.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,140 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.UsersLoadingDto;
-import mk.ukim.finki.db.distributorapp.model.enumerations.Role;
-import mk.ukim.finki.db.distributorapp.security.Token;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-@Entity
-@AllArgsConstructor
-@NoArgsConstructor
-@Inheritance(strategy = InheritanceType.JOINED)
-@DiscriminatorColumn(
-        name = "clazz_",
-        discriminatorType = DiscriminatorType.STRING
-)
-@Data
-@Table(name = "users")
-public class Users implements UserDetails{
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "user_id")
-    private Long userId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "user_name", nullable = false)
-    private String userName;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "user_surname", nullable = false)
-    private String userSurname;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "user_pass", nullable = false)
-    private String userPassword;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "user_email", nullable = false)
-    private String userEmail;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "user_mobile", nullable = false)
-    private String userMobile;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "user_salt", nullable = false)
-    private String userSalt;
-
-    @NotNull
-    @Column(name = "user_active", nullable = false)
-    private Boolean userActive;
-
-    @Size(max = 255)
-    @Column(name = "user_image")
-    private String userImage;
-
-    @Enumerated(EnumType.STRING)
-    @Column(name = "user_role")
-    private Role userRole;
-
-    @OneToMany(mappedBy = "user")
-    private List<Token> tokens;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "city_id", nullable = false)
-    private City city;
-
-    @Column(name = "clazz_", insertable = false, updatable = false)
-    private String clazz_;
-
-    public Users(UsersLoadingDto dto) {
-        this.userRole = Role.valueOf(dto.getUserRole());
-        this.userId = dto.getUserId();
-        this.userName = dto.getUserName();
-        this.userSurname = dto.getUserSurname();
-        this.userPassword = dto.getUserPassword();
-        this.userEmail = dto.getUserEmail();
-        this.userMobile = dto.getUserMobile();
-        this.userSalt = dto.getUserSalt();
-        this.userActive = dto.getUserActive();
-        this.userImage = dto.getUserImage();
-        this.tokens=null;
-        this.city=null;
-    }
-
-    @Override
-    public String getUsername() {
-        return userEmail;
-    }
-
-    @Override
-    public String getPassword() {
-        return userPassword;
-    }
-
-    @Override
-    public Collection<? extends GrantedAuthority> getAuthorities() {
-        List<GrantedAuthority> authorities = new ArrayList<>();
-        authorities.add(new SimpleGrantedAuthority(this.getUserRole().name()));
-        return authorities;
-    }
-
-    @Override
-    public boolean isAccountNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isAccountNonLocked() {
-        return true;
-    }
-
-    @Override
-    public boolean isCredentialsNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isEnabled() {
-        return userActive;
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Vehicle.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Vehicle.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,62 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.Date;
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "vehicle")
-public class Vehicle {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "veh_id")
-    private Integer vehicleId;
-
-    @NotNull
-    @Column(name = "veh_carry_weight", nullable = false)
-    private Integer vehicleCarryWeight;
-
-    @NotNull
-    @Column(name = "veh_service_interval", nullable = false)
-    private Short vehicleServiceInterval;
-
-    @NotNull
-    @Column(name = "veh_kilometers", nullable = false)
-    private Integer vehicleKilometers;
-
-    @Column(name = "veh_last_service")
-    private Date vehicleLastService;
-
-    @Column(name = "veh_last_service_km")
-    private Integer vehicleLastServiceKm;
-
-    @Size(max = 8)
-    @NotNull
-    @Column(name = "veh_plate", nullable = false, length = 8)
-    private String vehiclePlate;
-
-    @Size(max = 17)
-    @NotNull
-    @Column(name = "veh_vin", nullable = false, length = 17)
-    private String vehicleVin;
-
-    @NotNull
-    @Column(name = "veh_reg", nullable = false)
-    private Date vehicleRegDate;
-
-    @NotNull
-    @ManyToOne(fetch = FetchType.LAZY, optional = false)
-    @JoinColumn(name = "wh_id", nullable = false)
-    private Warehouse warehouse;
-
-    @OneToOne(mappedBy = "vehicle")
-    private Driver driver;
-
-    @OneToMany(mappedBy = "vehicle")
-    private List<Delivery> deliveries;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Warehouse.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Warehouse.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,36 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-@Table(name = "warehouse")
-public class Warehouse {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "wh_id")
-    private Integer warehouseId;
-
-    @Size(max = 255)
-    @NotNull
-    @Column(name = "wh_adr", nullable = false)
-    private String warehouseAddress;
-
-    @OneToOne
-    @JoinColumn(name = "city_id", unique = true, nullable = false)
-    private City city;
-
-    @OneToOne(mappedBy = "warehouse")
-    private Manager manager;
-
-    @OneToMany(mappedBy = "warehouse")
-    private List<Vehicle> vehicles;
-
-    @OneToMany(mappedBy = "warehouse")
-    private List<ArticleUnit> articleUnits;
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Weekday.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Weekday.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,27 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.entities;
-
-import jakarta.persistence.*;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-@Data
-@Entity
-@Table(name = "weekday")
-public class Weekday {
-    @Id
-    @Column(name = "day_id", nullable = false)
-    private Short id;
-
-    @Size(max = 20)
-    @NotNull
-    @Column(name = "day_name", nullable = false, length = 20)
-    private String dayName;
-
-    @OneToMany(mappedBy = "day")
-    private Set<CustomerWeekday> customerWeekdays = new LinkedHashSet<>();
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/Role.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/Role.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.enumerations;
-
-import org.springframework.security.core.GrantedAuthority;
-
-public enum Role implements GrantedAuthority {
-    ROLE_CUSTOMER, ROLE_MANAGER, ROLE_DRIVER, ROLE_ADMIN;
-
-    @Override
-    public String getAuthority() {
-        return "";
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/TokenType.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/TokenType.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,5 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.enumerations;
-
-public enum TokenType {
-    TOKEN_VERIFICATION, TOKEN_RESET
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/EmailAlreadyExistsException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/EmailAlreadyExistsException.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,7 +1,0 @@
-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: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidArgumentsException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidArgumentsException.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.exceptions;
-
-public class InvalidArgumentsException extends RuntimeException {
-
-    public InvalidArgumentsException() {
-        super("Invalid argument.");
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUserCredentialsException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUserCredentialsException.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.exceptions;
-
-public class InvalidUserCredentialsException extends RuntimeException {
-
-    public InvalidUserCredentialsException() {
-        super("Invalid user credentials");
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUsernameOrPasswordException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/InvalidUsernameOrPasswordException.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,4 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.exceptions;
-
-public class InvalidUsernameOrPasswordException extends RuntimeException {
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/PasswordsDoNotMatchException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/PasswordsDoNotMatchException.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,7 +1,0 @@
-package mk.ukim.finki.db.distributorapp.model.exceptions;
-
-public class PasswordsDoNotMatchException extends RuntimeException {
-    public PasswordsDoNotMatchException() {
-        super("The two passwords do not match.");
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UserNotFoundException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UserNotFoundException.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-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: ckend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UsernameAlreadyExistsException.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/exceptions/UsernameAlreadyExistsException.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,7 +1,0 @@
-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: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/Orders.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/Orders.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/Orders.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,59 @@
+package mk.ukim.finki.db.distributorapp.order;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.articleUnit.ArticleUnit;
+import mk.ukim.finki.db.distributorapp.customer.Customer;
+import mk.ukim.finki.db.distributorapp.delivery.Delivery;
+import mk.ukim.finki.db.distributorapp.orderStatus.OrderStatus;
+import mk.ukim.finki.db.distributorapp.proForma.ProForma;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "orders")
+public class Orders {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "ord_id", nullable = false)
+    private Long orderId;
+
+    @NotNull
+    @Column(name = "ord_date", nullable = false)
+    private LocalDate orderDate;
+
+    @NotNull
+    @Column(name = "ord_sum", nullable = false)
+    private Integer orderSum;
+
+    @Column(name = "ord_fulfillment_date")
+    private LocalDateTime orderFulfillmentDate;
+
+    @Column(name = "ord_comment")
+    private String orderComment;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "o_status_id", nullable = false)
+    private OrderStatus orderStatus;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "cust_id", nullable = false)
+    private Customer customer;
+
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "del_id", nullable = false)
+    private Delivery delivery;
+
+    @OneToOne
+    @JoinColumn(name = "pf_id", nullable = false, unique = true)
+    private ProForma proForma;
+
+    @OneToMany(mappedBy = "order")
+    private List<ArticleUnit> articleUnits;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,237 @@
+package mk.ukim.finki.db.distributorapp.order;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderManagerDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderSimpleDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrdersDto;
+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.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+public interface OrdersRepository extends JpaRepository<Orders, Long> {
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select o.ord_id as id,
+                           o.ord_date as ordDate,
+                           o.ord_sum as ordSum,
+                           o.ord_fulfillment_date as ordFulfillmentDate,
+                           o.ord_comment as ordComment,
+                           o.o_status_id as oStatusId,
+                           os.o_status_name as statusName,
+                           o.cust_id as customerId,
+                           c.cust_company_name as customerName,
+                           u.user_mobile as customerPhone,
+                           u.user_email as customerEmail,
+                           o.del_id as deliveryId,
+                           d.user_id as driverId,
+                           u1.user_name as driverName,
+                           u1.user_mobile as driverPhone,
+                           u1.user_email as driverEmail,
+                           o.pf_id as pfId,
+                           pfs.pf_status_name as pfStatus
+                    from orders o
+                    join order_status os on o.o_status_id = os.o_status_id
+                    join customer c on c.user_id=o.cust_id
+                    join users u on c.user_id=u.user_id
+                    join delivery del on o.del_id = del.del_id
+                    join vehicle v on del.veh_id = v.veh_id
+                    join driver d on d.veh_id=v.veh_id
+                    join users u1 on d.user_id=u1.user_id
+                    join pro_forma pf on o.pf_id = pf.pf_id
+                    join pro_forma_status pfs on pfs.pf_status_id=pf.pf_status_id
+                    """
+    )
+    List<OrdersDto> listAll();
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select o.ord_id as id,
+                           o.ord_date as ordDate,
+                           o.ord_sum as ordSum,
+                           o.ord_fulfillment_date as ordFulfillmentDate,
+                           o.ord_comment as ordComment,
+                           o.o_status_id as oStatusId,
+                           os.o_status_name as statusName,
+                           o.cust_id as customerId,
+                           c.cust_company_name as customerName,
+                           u.user_mobile as customerPhone,
+                           u.user_email as customerEmail,
+                           del.del_id as deliveryId,
+                           d.user_id as driverId,
+                           u1.user_name as driverName,
+                           u1.user_mobile as driverPhone,
+                           u1.user_email as driverEmail,
+                           pf.pf_id as pfId,
+                           pfs.pf_status_name as pfStatus
+                    from orders o
+                    join order_status os on o.o_status_id = os.o_status_id
+                    join customer c on o.cust_id = c.user_id
+                    join users u on c.user_id = u.user_id
+                    join delivery del on o.del_id = del.del_id
+                    join vehicle v on del.veh_id = v.veh_id
+                    join driver d on d.veh_id=v.veh_id
+                    join users u1 on d.user_id=u1.user_id
+                    join pro_forma pf on o.pf_id = pf.pf_id
+                    join pro_forma_status pfs on pfs.pf_status_id=pf.pf_status_id
+                    where o.cust_id = ?1
+                    """
+    )
+    List<OrdersDto> findOrdersByCustomer(@NonNull Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select o.ord_id as id,
+                           o.ord_date as ordDate,
+                           o.ord_sum as ordSum,
+                           o.ord_fulfillment_date as ordFulfillmentDate,
+                           o.ord_comment as ordComment,
+                           o.o_status_id as oStatusId,
+                           o.cust_id as customerId,
+                           o.del_id as deliveryId,
+                           o.pf_id as pfId
+                    from orders o
+                    where o.cust_id = ?1
+                    """
+    )
+    List<OrderSimpleDto> findSimpleOrdersByCustomer(@NonNull Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = "select * from orders where ord_id=?1"
+    )
+    OrdersDto findOrderById(@NonNull Long id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into orders (ord_date, ord_sum, ord_fulfillment_date, ord_comment, o_status_id, cust_id, del_id, pf_id) " +
+                    "values (?1,?2,?3,?4,?5,?6,?7,?8)"
+    )
+    Integer create(
+            @NonNull LocalDate ord_date,
+            @NonNull Integer ord_sum,
+            LocalDateTime ord_fulfillment_date,
+            String ord_comment,
+            @NonNull Short ord_status_id,
+            @NonNull Long cust_id,
+            Long del_id,
+            Long pf_id
+    );
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update orders " +
+                    "set ord_date=?2,ord_sum=?3,ord_fulfillment_date=?4,ord_comment=?5,o_status_id=?6,cust_id=?7,del_id=?8,pf_id=?9 " +
+                    "where ord_id=?1"
+    )
+    Integer edit(
+            @NonNull Long id,
+            @NonNull LocalDate ord_date,
+            @NonNull Integer ord_sum,
+            LocalDateTime ord_fulfillment_date,
+            String ord_comment,
+            @NonNull Short ord_status_id,
+            @NonNull Long cust_id,
+            @NonNull Long del_id,
+            @NonNull Long pf_id
+    );
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from orders where ord_id=?1"
+    )
+    void delete(@NonNull Long id);
+    //----------------------------------------------------------------------------------------------------------------------------------
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select o.ord_id as id,
+                           o.ord_date as ordDate,
+                           o.ord_sum as ordSum,
+                           o.ord_fulfillment_date as ordFulfillmentDate,
+                           o.ord_comment as ordComment,
+                           o.o_status_id as oStatusId,
+                           os.o_status_name as statusName,
+                           o.cust_id as customerId,
+                           c.cust_company_name as customerName,
+                           u.user_mobile as customerPhone,
+                           u.user_email as customerEmail,
+                           o.del_id as deliveryId,
+                           d.user_id as driverId,
+                           u1.user_name as driverName,
+                           u1.user_mobile as driverPhone,
+                           u1.user_email as driverEmail,
+                           o.pf_id as pfId,
+                           pfs.pf_status_name as pfStatus
+                    from orders o
+                    join order_status os on o.o_status_id = os.o_status_id
+                    join customer c on c.user_id=o.cust_id
+                    join users u on c.user_id=u.user_id
+                    join delivery del on o.del_id = del.del_id
+                    join vehicle v on del.veh_id = v.veh_id
+                    join driver d on d.veh_id=v.veh_id
+                    join users u1 on d.user_id=u1.user_id
+                    join pro_forma pf on o.pf_id = pf.pf_id
+                    join pro_forma_status pfs on pfs.pf_status_id=pf.pf_status_id
+                    where o.cust_id=:customer and o.o_status_id between 2 and 6
+                    """
+    )
+    List<OrdersDto> getCurrentOrdersByCustomer(@NonNull @Param("customer") Long customer_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select o.ord_id as id,
+                           o.ord_date as ordDate,
+                           o.ord_sum as ordSum,
+                           o.ord_fulfillment_date as ordFulfillmentDate,
+                           c.cust_company_name as customerName,
+                           o.ord_comment as ordComment,
+                           o.o_status_id as oStatusId,
+                           o.cust_id as customerId,
+                           o.del_id as deliveryId,
+                           o.pf_id as pfId
+                    from warehouse w
+                        join manager m on w.wh_id= m.wh_id
+                        join article_unit au on au.wh_id = w.wh_id
+                        join orders o on au.ord_id = o.ord_id
+                        join customer c on o.cust_id = c.user_id
+                        join order_status os on os.o_status_id = o.o_status_id
+                    where m.user_id = ?1
+                    """
+    )
+    List<OrderManagerDto> getNewOrdersByManager(@NonNull Long manager_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select o.ord_id as id,
+                           o.ord_date as ordDate,
+                           o.ord_sum as ordSum,
+                           o.ord_fulfillment_date as ordFulfillmentDate,
+                           o.ord_comment as ordComment,
+                           o.o_status_id as oStatusId,
+                           o.cust_id as customerId,
+                           o.del_id as deliveryId,
+                           o.pf_id as pfId
+                    from orders o
+                    where o.ord_id = ?1
+                    """
+    )
+    OrderSimpleDto findSimpleOrdersById(Long orderId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,30 @@
+package mk.ukim.finki.db.distributorapp.order;
+
+import mk.ukim.finki.db.distributorapp.order.dto.CreateOrderDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderManagerDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderSimpleDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrdersDto;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.security.Principal;
+import java.util.List;
+
+public interface OrdersService {
+
+    List<OrderSimpleDto> findSimpleOrdersByCustomer(Long customerId);
+
+    OrdersDto findById(Long id);
+
+    @Transactional
+    Integer create(CreateOrderDto createOrderDto, Principal principal);
+
+    Integer edit(OrdersDto ordersDto);
+
+    void deleteById(Long id);
+
+    List<OrdersDto> findCurrentOrdersByCustomer(Long customerId);
+
+    List<OrderManagerDto> getNewOrdersByManager(Long managerId);
+
+    void addOrdersToDelivery(List<Long> orderIds, Long deliveryId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/OrdersServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,135 @@
+package mk.ukim.finki.db.distributorapp.order;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.customer.dto.CustomerDto;
+import mk.ukim.finki.db.distributorapp.order.dto.CreateOrderDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderManagerDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderSimpleDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrdersDto;
+import mk.ukim.finki.db.distributorapp.proForma.dto.ProFormaDto;
+import mk.ukim.finki.db.distributorapp.customer.CustomerService;
+import mk.ukim.finki.db.distributorapp.proForma.ProFormaService;
+import mk.ukim.finki.db.distributorapp.users.UsersService;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.security.Principal;
+import java.time.LocalDate;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class OrdersServiceImpl implements OrdersService {
+    private final OrdersRepository ordersRepository;
+    private final UsersService usersService;
+    private final CustomerService customerService;
+    private final ProFormaService proFormaService;
+
+    @Override
+    public List<OrderSimpleDto> findSimpleOrdersByCustomer(Long customerId) {
+        return this.ordersRepository.findSimpleOrdersByCustomer(customerId);
+    }
+
+    @Override
+    public OrdersDto findById(Long id) {
+        return this.ordersRepository.findOrderById(id);
+    }
+
+    @Override
+    @Transactional
+    public Integer create(CreateOrderDto createOrderDto, Principal principal) {
+        String userEmail = principal.getName();
+        UserDto user = this.usersService.findUserDtoByEmail(userEmail);
+        CustomerDto customer = this.customerService.findCustomerById(user.getId());
+
+        OrdersDto order = new OrdersDto();
+
+        if (createOrderDto.isProForma()) {
+            ProFormaDto pf = new ProFormaDto();
+            pf.setPfDeadline(LocalDate.now().plusWeeks(1));
+            pf.setPfDateCreated(LocalDate.now());
+            pf.setStatusId((short) 1);
+            this.proFormaService.create(pf);
+            List<ProFormaDto> proFormaList = this.proFormaService.getAllProForma();
+            ProFormaDto createdProForma = proFormaList.get(proFormaList.size() - 1);
+            order.setPfId(createdProForma.getId());
+        }
+
+        order.setCustomerId(customer.getId());
+        order.setOrdDate(LocalDate.now());
+        order.setOrdFulfillmentDate(null);
+        order.setOStatusId((short) 1);
+        order.setDeliveryId(null);
+        order.setPfId(null);
+        order.setOrdComment(null);
+
+        Integer sum = createOrderDto.getOrderItems()
+                .stream()
+                .map(i -> i.getUnitPrice().multiply(BigDecimal.valueOf(i.getQuantity())))
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .intValue();
+        order.setOrdSum(sum);
+
+        return this.ordersRepository.create(
+                order.getOrdDate(),
+                order.getOrdSum(),
+                order.getOrdFulfillmentDate(),
+                order.getOrdComment(),
+                order.getOStatusId(),
+                order.getCustomerId(),
+                order.getDeliveryId(),
+                order.getPfId()
+        );
+    }
+
+    @Override
+    public Integer edit(OrdersDto ordersDto) {
+        return this.ordersRepository.edit(
+                ordersDto.getId(),
+                ordersDto.getOrdDate(),
+                ordersDto.getOrdSum(),
+                ordersDto.getOrdFulfillmentDate(),
+                ordersDto.getOrdComment(),
+                ordersDto.getOStatusId(),
+                ordersDto.getCustomerId(),
+                ordersDto.getDeliveryId(),
+                ordersDto.getPfId()
+        );
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        this.ordersRepository.deleteById(id);
+    }
+
+    @Override
+    public List<OrdersDto> findCurrentOrdersByCustomer(Long customerId) {
+        return this.ordersRepository.getCurrentOrdersByCustomer(customerId);
+    }
+
+    @Override
+    public List<OrderManagerDto> getNewOrdersByManager(Long managerId) {
+        return this.ordersRepository.getNewOrdersByManager(managerId);
+    }
+
+    @Override
+    public void addOrdersToDelivery(List<Long> orderIds, Long deliveryId) {
+        for (Long i : orderIds) {
+            OrderSimpleDto order = this.ordersRepository.findSimpleOrdersById(i);
+            order.setDeliveryId(deliveryId);
+            this.ordersRepository.edit(
+                    order.getId(),
+                    order.getOrdDate().toLocalDate(),
+                    order.getOrdSum(),
+                    order.getOrdFulfillmentDate(),
+                    order.getOrdComment(),
+                    order.getOStatusId(),
+                    order.getCustomerId(),
+                    order.getDeliveryId(),
+                    order.getPfId()
+            );
+        }
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/CreateOrderDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/CreateOrderDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/CreateOrderDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,15 @@
+package mk.ukim.finki.db.distributorapp.order.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CreateOrderDto {
+    private List<OrderItemDto> orderItems;
+    boolean proForma;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderItemDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderItemDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderItemDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,18 @@
+package mk.ukim.finki.db.distributorapp.order.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrderItemDto {
+    private Long articleId;
+    private String articleName;
+    private String manufacturerName;
+    private BigDecimal unitPrice;
+    private Integer quantity;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderManagerDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderManagerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderManagerDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.order.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrderManagerDto {
+    private Long id;
+    private java.sql.Date ordDate;
+    private Integer ordSum;
+    private LocalDateTime ordFulfillmentDate;
+    private String customerName;
+    private String ordComment;
+    private Short oStatusId;
+    private Long customerId;
+    private Long deliveryId;
+    private Long pfId;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderSimpleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderSimpleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrderSimpleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,22 @@
+package mk.ukim.finki.db.distributorapp.order.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrderSimpleDto {
+    private Long id;
+    private java.sql.Date ordDate;
+    private Integer ordSum;
+    private LocalDateTime ordFulfillmentDate;
+    private String ordComment;
+    private Short oStatusId;
+    private Long customerId;
+    private Long deliveryId;
+    private Long pfId;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrdersDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrdersDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/order/dto/OrdersDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,32 @@
+package mk.ukim.finki.db.distributorapp.order.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrdersDto {
+    private Long id;
+    private LocalDate ordDate;
+    private Integer ordSum;
+    private LocalDateTime ordFulfillmentDate;
+    private String ordComment;
+    private Short oStatusId;
+    private String statusName;
+    private Long customerId;
+    private String customerName;
+    private String customerPhone;
+    private String customerEmail;
+    private Long deliveryId;
+    private Long driverId;
+    private String driverName;
+    private String driverPhone;
+    private String driverEmail;
+    private Long pfId;
+    private String pfStatus;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatus.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatus.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,31 @@
+package mk.ukim.finki.db.distributorapp.orderStatus;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.order.Orders;
+
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "order_status", schema = "IND0_185022")
+public class OrderStatus {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "o_status_id")
+    private Short orderStatusId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "o_status_name", nullable = false)
+    private String orderStatusName;
+
+    @NotNull
+    @Column(name = "o_status_desc", nullable = false)
+    private String orderStatusDescription;
+
+    @OneToMany(mappedBy = "orderStatus")
+    private List<Orders> orders;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,36 @@
+package mk.ukim.finki.db.distributorapp.orderStatus;
+
+import lombok.NonNull;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+public interface OrderStatusRepository extends JpaRepository<OrderStatus, Short> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into order_status(o_status_name, o_status_desc) " +
+                    "values (?1,?2)"
+    )
+    Integer create(@NonNull String name, @NonNull String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update order_status " +
+                    "set o_status_name=?2,o_status_desc=?3 " +
+                    "where o_status_id=?1"
+    )
+    Integer edit(@NonNull Short id, @NonNull String name, @NonNull String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from order_status where o_status_id=?1"
+    )
+    void delete(@NonNull Short id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.orderStatus;
+
+import mk.ukim.finki.db.distributorapp.orderStatus.dto.OrderStatusDto;
+
+public interface OrderStatusService {
+
+    Integer create(OrderStatusDto orderStatusDto);
+
+    Integer edit(OrderStatusDto orderStatusDto);
+
+    void deleteById(Short id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/OrderStatusServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,33 @@
+package mk.ukim.finki.db.distributorapp.orderStatus;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.orderStatus.dto.OrderStatusDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class OrderStatusServiceImpl implements OrderStatusService {
+    private final OrderStatusRepository orderStatusRepository;
+
+    @Override
+    public Integer create(OrderStatusDto orderStatusDto) {
+        return this.orderStatusRepository.create(
+                orderStatusDto.getStatusName(),
+                orderStatusDto.getStatusDescription()
+        );
+    }
+
+    @Override
+    public Integer edit(OrderStatusDto orderStatusDto) {
+        return this.orderStatusRepository.edit(
+                orderStatusDto.getId(),
+                orderStatusDto.getStatusName(),
+                orderStatusDto.getStatusDescription()
+        );
+    }
+
+    @Override
+    public void deleteById(Short id) {
+        this.orderStatusRepository.deleteById(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/dto/OrderStatusDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/dto/OrderStatusDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/orderStatus/dto/OrderStatusDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.orderStatus.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class OrderStatusDto {
+    private Short id;
+    private String statusName;
+    private String statusDescription;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/price/Price.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/price/Price.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/price/Price.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,43 @@
+package mk.ukim.finki.db.distributorapp.price;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.article.Article;
+import mk.ukim.finki.db.distributorapp.articleUnit.ArticleUnit;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+@Entity
+@Data
+@Table(name = "price")
+public class Price {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "price_id")
+    private Integer priceId;
+
+    @NotNull
+    @Column(name = "price", nullable = false)
+    private BigDecimal price;
+
+    @NotNull
+    @ColumnDefault("CURRENT_TIMESTAMP")
+    @Column(name = "price_eff_date", nullable = false)
+    private LocalDateTime priceEffectiveDate;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "art_id", nullable = false)
+    private Article article;
+
+    @ManyToMany
+    @JoinTable(name = "unit_price",
+            joinColumns = @JoinColumn(name = "price_id"),
+            inverseJoinColumns = @JoinColumn(name = "unit_id"))
+    private Set<ArticleUnit> articleUnits = new LinkedHashSet<>();
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,46 @@
+package mk.ukim.finki.db.distributorapp.price;
+
+import lombok.NonNull;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+public interface PriceRepository extends JpaRepository<Price, Integer> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into price(price, price_eff_date, art_id) " +
+                    "values (?1,?2,?3)"
+    )
+    Integer create(
+            @NonNull BigDecimal price,
+            @NonNull LocalDateTime price_eff_date,
+            @NonNull Long art_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update price " +
+                    "set price=?2,price_eff_date=?3,art_id=?4 " +
+                    "where price_id=?1"
+    )
+    Integer edit(
+            @NonNull Integer id,
+            @NonNull BigDecimal price,
+            @NonNull LocalDateTime price_eff_date,
+            @NonNull Long art_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from price where price_id=?1"
+    )
+    void delete(@NonNull Integer id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.db.distributorapp.price;
+
+import mk.ukim.finki.db.distributorapp.price.dto.PriceDto;
+
+public interface PriceService {
+
+    Integer create(PriceDto priceDto);
+
+    Integer edit(PriceDto priceDto);
+
+    void deleteById(Integer id);
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/price/PriceServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,35 @@
+package mk.ukim.finki.db.distributorapp.price;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.price.dto.PriceDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class PriceServiceImpl implements PriceService {
+    private final PriceRepository priceRepository;
+
+    @Override
+    public Integer create(PriceDto priceDto) {
+        return this.priceRepository.create(
+                priceDto.getPrice(),
+                priceDto.getDateEffective(),
+                priceDto.getArtId()
+        );
+    }
+
+    @Override
+    public Integer edit(PriceDto priceDto) {
+        return this.priceRepository.edit(
+                priceDto.getId(),
+                priceDto.getPrice(),
+                priceDto.getDateEffective(),
+                priceDto.getArtId()
+        );
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        this.priceRepository.delete(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/price/dto/PriceDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/price/dto/PriceDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/price/dto/PriceDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,17 @@
+package mk.ukim.finki.db.distributorapp.price.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+public class PriceDto {
+    private Integer id;
+    private BigDecimal price;
+    private LocalDateTime dateEffective;
+    private Long artId;
+    private String artName;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProForma.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProForma.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProForma.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,35 @@
+package mk.ukim.finki.db.distributorapp.proForma;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.proFormaStatus.ProFormaStatus;
+import mk.ukim.finki.db.distributorapp.order.Orders;
+
+import java.time.LocalDate;
+
+@Entity
+@Data
+@Table(name = "pro_forma")
+public class ProForma {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "pf_id")
+    private Long proFormaId;
+
+    @NotNull
+    @Column(name = "pf_deadline", nullable = false)
+    private LocalDate proFormaDeadline;
+
+    @NotNull
+    @Column(name = "pf_date_created", nullable = false)
+    private LocalDate proFormaDateCreated;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "pf_status_id", nullable = false)
+    private ProFormaStatus proFormaStatus;
+
+    @OneToOne(mappedBy = "proForma")
+    private Orders order;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,69 @@
+package mk.ukim.finki.db.distributorapp.proForma;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.proForma.dto.ProFormaDto;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.util.List;
+
+public interface ProFormaRepository extends JpaRepository<ProForma, Long> {
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select pf.pf_id as id,
+                           pf.pf_deadline as pfDeadline,
+                           pf.pf_date_created as pfDateCreated,
+                           pf.pf_status_id as statusId,
+                           pfs.pf_status_name as statusName,
+                           o.ord_id as ordId,
+                           o.cust_id as customerId,
+                           c.cust_company_name as customerName,
+                           u.user_email as customerEmail,
+                           u.user_mobile as customerPhone
+                    from pro_forma pf
+                    join pro_forma_status pfs on pf.pf_status_id = pfs.pf_status_id
+                    join orders o on pf.pf_id = o.pf_id
+                    join customer c on o.cust_id = c.user_id
+                    join users u on c.user_id = u.user_id
+                    """
+    )
+    List<ProFormaDto> listAll();
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into pro_forma(pf_deadline, pf_date_created, pf_status_id) " +
+                    "values (?1,?2,?3)"
+    )
+    Integer create(
+            @NonNull LocalDate pf_deadline,
+            @NonNull LocalDate pf_create_date,
+            @NonNull Short pf_status_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update pro_forma " +
+                    "set pf_deadline=?2,pf_date_created=?3,pf_status_id=?4 " +
+                    "where pf_id=?1"
+    )
+    Integer edit(
+            @NonNull Long pf_id,
+            @NonNull LocalDate pf_deadline,
+            @NonNull LocalDate pf_create_date,
+            @NonNull Short pf_status_id);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from pro_forma where pf_id=?1"
+    )
+    void delete(@NonNull Long id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,18 @@
+package mk.ukim.finki.db.distributorapp.proForma;
+
+import mk.ukim.finki.db.distributorapp.proForma.dto.ProFormaDto;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface ProFormaService {
+    @Transactional
+    List<ProFormaDto> getAllProForma();
+
+    Integer create(ProFormaDto proFormaDto);
+
+    Integer edit(ProFormaDto proFormaDto);
+
+    void deleteById(Long id);
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/ProFormaServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,44 @@
+package mk.ukim.finki.db.distributorapp.proForma;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.proForma.dto.ProFormaDto;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class ProFormaServiceImpl implements ProFormaService {
+    private final ProFormaRepository proFormaRepository;
+
+    @Override
+    @Transactional
+    public List<ProFormaDto> getAllProForma() {
+        return this.proFormaRepository.listAll();
+    }
+
+    @Override
+    public Integer create(ProFormaDto proFormaDto) {
+        return this.proFormaRepository.create(
+                proFormaDto.getPfDeadline(),
+                proFormaDto.getPfDateCreated(),
+                proFormaDto.getStatusId()
+        );
+    }
+
+    @Override
+    public Integer edit(ProFormaDto proFormaDto) {
+        return this.proFormaRepository.edit(
+                proFormaDto.getId(),
+                proFormaDto.getPfDeadline(),
+                proFormaDto.getPfDateCreated(),
+                proFormaDto.getStatusId()
+        );
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        this.proFormaRepository.deleteById(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/dto/ProFormaDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/dto/ProFormaDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proForma/dto/ProFormaDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.proForma.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProFormaDto {
+    private Long id;
+    private LocalDate pfDeadline;
+    private LocalDate pfDateCreated;
+    private Short statusId;
+    private String statusName;
+    private Long ordId;
+    private Long customerId;
+    private String customerName;
+    private String customerEmail;
+    private String customerPhone;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatus.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatus.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatus.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,31 @@
+package mk.ukim.finki.db.distributorapp.proFormaStatus;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.proForma.ProForma;
+
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "pro_forma_status", schema = "IND0_185022")
+public class ProFormaStatus {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "pf_status_id")
+    private Short proFormaStatusId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "pf_status_name", nullable = false)
+    private String proFormaStatusName;
+
+    @NotNull
+    @Column(name = "pf_status_desc", nullable = false)
+    private String proFormaStatusDescription;
+
+    @OneToMany(mappedBy = "proFormaStatus")
+    private List<ProForma> pro_formas;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,36 @@
+package mk.ukim.finki.db.distributorapp.proFormaStatus;
+
+import lombok.NonNull;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+public interface ProFormaStatusRepository extends JpaRepository<ProFormaStatus, Short> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into pro_forma_status(pf_status_name, pf_status_desc) " +
+                    "values (?1,?2)"
+    )
+    Integer create(@NonNull String name, @NonNull String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update pro_forma_status " +
+                    "set pf_status_name=?2,pf_status_desc=?3 " +
+                    "where pf_status_id=?1"
+    )
+    Integer edit(@NonNull Short id, @NonNull String name, @NonNull String description);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from pro_forma_status where pf_status_id=?1"
+    )
+    void delete(@NonNull Short id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.proFormaStatus;
+
+import mk.ukim.finki.db.distributorapp.proFormaStatus.dto.ProFormaStatusDto;
+
+public interface ProFormaStatusService {
+
+    Integer create(ProFormaStatusDto proFormaStatusDto);
+
+    Integer edit(ProFormaStatusDto proFormaStatusDto);
+
+    void deleteById(Short id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/ProFormaStatusServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,33 @@
+package mk.ukim.finki.db.distributorapp.proFormaStatus;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.proFormaStatus.dto.ProFormaStatusDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class ProFormaStatusServiceImpl implements ProFormaStatusService {
+    private final ProFormaStatusRepository proFormaStatusRepository;
+
+    @Override
+    public Integer create(ProFormaStatusDto proFormaStatusDto) {
+        return this.proFormaStatusRepository.create(
+                proFormaStatusDto.getStatusName(),
+                proFormaStatusDto.getStatusDescription()
+        );
+    }
+
+    @Override
+    public Integer edit(ProFormaStatusDto proFormaStatusDto) {
+        return this.proFormaStatusRepository.edit(
+                proFormaStatusDto.getId(),
+                proFormaStatusDto.getStatusName(),
+                proFormaStatusDto.getStatusDescription()
+        );
+    }
+
+    @Override
+    public void deleteById(Short id) {
+        this.proFormaStatusRepository.deleteById(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/dto/ProFormaStatusDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/dto/ProFormaStatusDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/proFormaStatus/dto/ProFormaStatusDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.proFormaStatus.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class ProFormaStatusDto {
+    private Short id;
+    private String statusName;
+    private String statusDescription;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/region/Region.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/region/Region.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/region/Region.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,28 @@
+package mk.ukim.finki.db.distributorapp.region;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.city.City;
+
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "region")
+public class Region {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "region_id", nullable = false)
+    private Integer regionId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "region_name", nullable = false)
+    private String regionName;
+
+    @OneToMany(mappedBy = "region")
+    private List<City> cities;
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,54 @@
+package mk.ukim.finki.db.distributorapp.region;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.region.dto.RegionDto;
+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;
+
+public interface RegionRepository extends JpaRepository<Region, Integer> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into region(region_name) " +
+                    "values (?1)"
+    )
+    Integer create(
+            @NonNull String name);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update region " +
+                    "set region_name=?2 " +
+                    "where region_id=?1"
+    )
+    Integer edit(
+            @NonNull Integer id,
+            @NonNull String name);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from region " +
+                    "where region_id=?1"
+    )
+    void deleteById(@NonNull Integer id);
+
+//    -------------------------------------------------------------------------
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select r.region_id as id, r.region_name as name
+                    from region r join city c on r.region_id = c.region_id
+                    where c.city_id = :city
+                    """
+    )
+    RegionDto getRegionByCityId(@NonNull @Param("city") Integer cityId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.region;
+
+import mk.ukim.finki.db.distributorapp.region.dto.RegionDto;
+
+public interface RegionService {
+
+    Integer create(RegionDto regionDto);
+
+    Integer edit(RegionDto regionDto);
+
+    void deleteById(Integer id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/region/RegionServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,31 @@
+package mk.ukim.finki.db.distributorapp.region;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.region.dto.RegionDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class RegionServiceImpl implements RegionService {
+    private final RegionRepository regionRepository;
+
+    @Override
+    public Integer create(RegionDto regionDto) {
+        return this.regionRepository.create(
+                regionDto.getName()
+        );
+    }
+
+    @Override
+    public Integer edit(RegionDto regionDto) {
+        return this.regionRepository.edit(
+                regionDto.getId(),
+                regionDto.getName()
+        );
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        this.regionRepository.deleteById(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/region/dto/RegionDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/region/dto/RegionDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/region/dto/RegionDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.db.distributorapp.region.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class RegionDto {
+    public Integer id;
+    public String name;
+}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,110 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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;
-
-public interface ArticleRepository extends JpaRepository<Article, Long> {
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select a.art_id as id,
-                           a.art_name as name,
-                           m.man_name as manufacturer,
-                           0 as quantity,
-                           a.man_id as manufacturerId,
-                           p.price as price,
-                           c.ctg_name as category,
-                           a.ctg_id as categoryId,
-                           a.art_weight as weight,
-                           a.art_image as image
-                    from article a
-                    join manufacturer m on a.man_id = m.man_id
-                    join price p on p.art_id = a.art_id
-                    join category c on a.ctg_id = c.ctg_id
-                    """
-    )
-    List<ArticleDto> listAll();
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into article(art_name, art_image, art_weight, ctg_id, man_id) " +
-                    "values (?1,?2,?3,?4,?5)"
-    )
-    Integer create(
-            @NonNull @Param("name") String name,
-            @NonNull @Param("image") String image,
-            @NonNull @Param("weight") Integer weight,
-            @NonNull @Param("ctg") Integer ctg_id,
-            @NonNull @Param("man") Long man_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update article " +
-                    "set art_name=?2,art_image=?3,art_weight=?4,ctg_id=?5,man_id=?6 " +
-                    "where art_id=?1"
-    )
-    Integer edit(
-            @NonNull @Param("id") Long id,
-            @NonNull @Param("name") String name,
-            @NonNull @Param("img") String image,
-            @NonNull @Param("weight") Integer weight,
-            @NonNull @Param("ctg") Integer ctg_id,
-            @NonNull @Param("man") Long man_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from article where art_id=?1"
-    )
-    void delete(@Param("id") Long id);
-
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    with stock as (
-                        select a.art_id,
-                               count(au.unit_id) as quantity
-                        from article a
-                        join price p on a.art_id = p.art_id
-                        join unit_price up on p.price_id = up.price_id
-                        join article_unit au on up.unit_id = au.unit_id
-                        group by a.art_id
-                    )
-                    select a.art_id as id,
-                           a.art_name as name,
-                           m.man_name as manufacturer,
-                           st.quantity as quantity,
-                           m.man_id as manufacturerId,
-                           p.price as price,
-                           c.ctg_name as category,
-                           c.ctg_id as categoryId,
-                           a.art_weight as weight,
-                           a.art_image as image
-                    from article a
-                    join stock st on st.art_id=a.art_id
-                    join manufacturer m on a.man_id = m.man_id
-                    join category c on a.ctg_id = c.ctg_id
-                    join price p on a.art_id = p.art_id
-                    join unit_price up on p.price_id = up.price_id
-                    join article_unit au on up.unit_id = au.unit_id
-                    join warehouse w on w.wh_id = au.wh_id
-                    where w.wh_id = ?1
-                    """
-    )
-    List<ArticleDto> findAllByWarehouse(Integer warehouseId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleUnitRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleUnitRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,118 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitDto;
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitSimpleDto;
-import mk.ukim.finki.db.distributorapp.model.entities.ArticleUnit;
-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.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-
-public interface ArticleUnitRepository extends JpaRepository<ArticleUnit, Long> {
-    @Query(
-            nativeQuery = true,
-            value = "select * from article_unit"
-    )
-    List<ArticleUnitSimpleDto> listAll();
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select au.unit_id as id,
-                    au.unit_expiration_date as expiryDate,
-                    au.unit_serial_number as serialNo,
-                    au.unit_batch_number as batchNo,
-                    au.unit_manufacture_date as manufactureDate,
-                    au.unit_cost_price as costPrice,
-                    a.art_id as artId,
-                    a.art_name as artName,
-                    au.wh_id as whId,
-                    r.region_name as whRegion,
-                    c.city_name as whCity,
-                    au.ord_id as ordId,
-                    u.user_email as customerEmail
-                    from article_unit au
-                    join warehouse wh on au.wh_id = wh.wh_id
-                    join city c on wh.city_id = c.city_id
-                    join region r on c.region_id = r.region_id
-                    join unit_price up on au.unit_id = up.unit_id
-                    join price p on up.price_id = p.price_id
-                    join article a on p.art_id = a.art_id
-                    join orders o on au.ord_id = o.ord_id
-                    join customer cust on o.cust_id = cust.user_id
-                    join users u on cust.user_id = u.user_id
-                    """
-    )
-    List<ArticleUnitDto> findAllByWarehouse(@NonNull @Param("wh") Integer wh_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into article_unit(unit_expiration_date, unit_serial_number, unit_batch_number, unit_manufacture_date, unit_cost_price, wh_id, ord_id) " +
-                    "values (?1,?2,?3,?4,?5,?6,?7)"
-    )
-    Integer create(
-            @NonNull @Param("exp_date") Date unit_exp_date,
-            @NonNull @Param("ser_no") String unit_ser_number,
-            @NonNull @Param("batch_no") String unit_batch_number,
-            @NonNull @Param("man_date") Date unit_manufacture_date,
-            @NonNull @Param("cost_price") BigDecimal unit_cost_price,
-            @NonNull @Param("wh") Integer wh_id,
-            @Param("ord") Long ord_id
-    );
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update article_unit " +
-                    "set unit_expiration_date = ?2, unit_serial_number = ?3, unit_batch_number = ?4,unit_manufacture_date = ?5,unit_cost_price = ?6,wh_id = ?7,ord_id = ?8 " +
-                    "where unit_id=?1"
-    )
-    Integer edit(
-            @NonNull @Param("id") Long id,
-            @NonNull @Param("exp_date") Date unit_exp_date,
-            @NonNull @Param("ser_no") String unit_ser_number,
-            @NonNull @Param("batch_no") String unit_batch_number,
-            @NonNull @Param("man_date") Date unit_manufacture_date,
-            @NonNull @Param("cost_price") BigDecimal unit_cost_price,
-            @NonNull @Param("wh") Integer wh_id,
-            @Param("ord") Long ord_id
-    );
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from article_unit where unit_id=?1"
-    )
-    void delete(@NonNull @Param("id") Long id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select au.unit_id as id,
-                           au.unit_expiration_date as expiryDate,
-                           au.unit_serial_number as serialNo,
-                           au.unit_batch_number as batchNo,
-                           au.unit_manufacture_date as manufactureDate,
-                           au.unit_cost_price as costPrice,
-                           a.art_id as artId,
-                           au.wh_id as whId,
-                           au.ord_id as ordId
-                    from article_unit au
-                    join unit_price up on au.unit_id = up.unit_id
-                    join price p on up.price_id = p.price_id
-                    join article a on p.art_id = a.art_id
-                    where au.wh_id = ?2 and a.art_id = ?1
-                    """
-    )
-    List<ArticleUnitSimpleDto> findAllSimpleByArticleAndWarehouse(Long articleId, Integer warehouseId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CategoryRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CategoryRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,55 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.CategoryDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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;
-
-public interface CategoryRepository extends JpaRepository<Category, Long> {
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select ctg_id as id,
-                           ctg_name as name
-                    from category
-                    """
-    )
-    List<CategoryDto> listAll();
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = """
-                    insert into category(ctg_name)
-                    values (:name)
-                    """
-    )
-    Integer create(@Param("name") @NonNull String name);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update category " +
-                    "set ctg_name=?2 " +
-                    "where ctg_id=?1"
-    )
-    Integer edit(@NonNull Integer id,
-                 @NonNull String name);
-
-    @Modifying
-    @Transactional
-    @Query(
-            value = "delete from category " +
-                    "where ctg_id = ?1",
-            nativeQuery = true)
-    void deleteById(@NonNull Integer id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CityRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CityRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,56 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.CityDtoRegister;
-import mk.ukim.finki.db.distributorapp.model.entities.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.transaction.annotation.Transactional;
-
-import java.util.List;
-
-public interface CityRepository extends JpaRepository<City, Long> {
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select c.city_id as id, c.city_name as name
-                    from city c
-                    """
-    )
-    List<CityDtoRegister> findAllCityDtos();
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into city(city_name, region_id) " +
-                    "values (?1,?2)"
-    )
-    Integer create(
-            @NonNull String name,
-            @NonNull Integer region);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update city " +
-                    "set city_name=?2, region_id=?3 " +
-                    "where city_id=?1"
-    )
-    Integer edit(
-            @NonNull Integer id,
-            @NonNull String name,
-            @NonNull Integer region);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from city c " +
-                    "where c.city_id=?1"
-    )
-    void deleteById(@NonNull Integer id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,69 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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.transaction.annotation.Transactional;
-
-public interface CustomerRepository extends JpaRepository<Customer, Long> {
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select c.user_id as id,
-                           u.user_name as name,
-                           u.user_email as email,
-                           u.user_mobile as phone,
-                           c.cust_edb as edb,
-                           c.cust_company_name as compName,
-                           c.cust_adr as address,
-                           c.cust_representative_img
-                    from customer c
-                    join users u on c.user_id = u.user_id
-                    """
-    )
-    CustomerDto findCustomerById(@NonNull Long id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = """
-                    insert into customer(user_id, cust_edb, cust_company_name, cust_adr, cust_representative_img)
-                    values (?1,?2,?3,?4,?5)
-                    """
-    )
-    Integer create(
-            @NonNull Long id,
-            @NonNull String customerEDB,
-            @NonNull String customerName,
-            @NonNull String customerStreet,
-            @NonNull String customerImage);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update customer " +
-                    "set cust_edb=?2,cust_company_name=?3,cust_adr=?4,cust_representative_img=?5 " +
-                    "where user_id=?1"
-    )
-    Integer edit(
-            @NonNull Long id,
-            @NonNull String customerEDB,
-            @NonNull String customerName,
-            @NonNull String customerStreet,
-            @NonNull String customerImage);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from customer " +
-                    "where user_id=?!"
-    )
-    void delete(@NonNull Long id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerWeekdayRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerWeekdayRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,49 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.entities.CustomerWeekday;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalTime;
-
-public interface CustomerWeekdayRepository extends JpaRepository<CustomerWeekday, Long> {
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into customer_weekday(cust_id, day_id, start_time, end_time) " +
-                    "values (?1,?2,?3,?4)"
-    )
-    Integer create(
-            Long userId,
-            Short weekdayId,
-            LocalTime startTime,
-            LocalTime endTime);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update customer_weekday " +
-                    "set cust_id=?2,day_id=?3,start_time=?4,end_time=?5 " +
-                    "where cust_day_id=?1"
-    )
-    Integer edit(
-            Long custDayId,
-            Long userId,
-            Short weekdayId,
-            LocalTime startTime,
-            LocalTime endTime);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from customer_weekday where cust_day_id=?1"
-    )
-    void deleteById(@NonNull Long id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,161 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryFullDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliverySimpleDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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.time.LocalTime;
-import java.util.Date;
-import java.util.List;
-
-public interface DeliveryRepository extends JpaRepository<Delivery, Long> {
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into delivery(del_date_created, del_date, del_start_km, del_end_km, del_start_time, del_end_time, d_status_id, veh_id) " +
-                    "values (?1,?2,?3,?4,?5,?6,?7,?8)"
-    )
-    Integer create(
-            @NonNull Date del_date_created,
-            @NonNull Date del_date,
-            Integer del_start_km,
-            Integer del_end_km,
-            LocalTime del_start_time,
-            LocalTime del_end_time,
-            @NonNull Short del_status_id,
-            @NonNull Integer veh_id
-    );
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update delivery " +
-                    "set del_date_created = ?2,del_date = ?3,del_start_km = ?4,del_end_km = ?5,del_start_time = ?6,del_end_time = ?7,d_status_id = ?8,veh_id = ?9 " +
-                    "where del_id = ?1"
-    )
-    Integer edit(
-            @NonNull Long id,
-            @NonNull Date del_date_created,
-            @NonNull Date del_date,
-            Integer del_start_km,
-            Integer del_end_km,
-            LocalTime del_start_time,
-            LocalTime del_end_time,
-            @NonNull Short del_status_id,
-            @NonNull Integer veh_id
-    );
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from delivery where del_id = ?1"
-    )
-    void delete(@NonNull Long id);
-
-    //------------------------------------------------------------------------------------------------------------------
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select del.del_id as id,
-                           del.del_date_created as dateCreated,
-                           del.del_date as deliveryDate,
-                           del.del_start_km as delStartKm,
-                           del.del_end_km as delEndKm,
-                           to_char(d.del_start_time, 'HH24:MI:22') as delStartTime,
-                           to_char(d.del_end_time, 'HH24:MI:SS') as delEndTime,
-                           del.d_status_id as dStatusId,
-                           ds.d_status_name as delStatus,
-                           v.veh_id as vehId,
-                           dr.user_id as driverId,
-                           u.user_name as driverName,
-                           u.user_image as driverImage
-                    from delivery del
-                        join orders o on o.del_id=del.del_id
-                        join delivery d on o.del_id = d.del_id
-                        join delivery_status ds on d.d_status_id=ds.d_status_id
-                        join vehicle v on v.veh_id=d.veh_id
-                        join driver dr on dr.veh_id=v.veh_id
-                        join users u on u.user_id=dr.user_id
-                    where o.cust_id=:customer and del.d_status_id <> 4;
-                    """
-    )
-    List<DeliveryDto> getCurrentDeliveriesByCustomer(@NonNull @Param("customer") Long customer_id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select d.del_id as id,
-                           d.del_date_created as dateCreated,
-                           d.del_date as deliveryDate,
-                           d.del_start_km as delStartKm,
-                           d.del_end_km as delEndKm,
-                           to_char(d.del_start_time, 'HH24:MI:22') as delStartTime,
-                           to_char(d.del_end_time, 'HH24:MI:SS') as delEndTime,
-                           d.d_status_id as dStatusId,
-                           ds.d_status_name as delStatus,
-                           v.veh_id as vehId,
-                           dr.user_id as driverId,
-                           u.user_name as driverName,
-                           u.user_image as driverImage
-                    from warehouse w
-                        join manager m on w.wh_id = m.wh_id
-                        join article_unit au on w.wh_id = au.wh_id
-                        join orders o on au.ord_id = o.ord_id
-                        join delivery d on o.del_id = d.del_id
-                        join delivery_status ds on d.d_status_id=ds.d_status_id
-                        join vehicle v on v.veh_id=d.veh_id
-                        join driver dr on dr.veh_id=v.veh_id
-                        join users u on u.user_id=dr.user_id
-                    where m.user_id=:manager and d.d_status_id<>4
-                    """
-    )
-    List<DeliveryDto> getCurrentDeliveriesByManager(@NonNull @Param("manager") Long manager_id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select del.del_id as deliveryId,
-                           u.user_name as driverName,
-                           del.del_date as deliveryDate,
-                           del.del_date_created as deliveryCreatedDate,
-                           del.d_status_id as deliveryStatus,
-                           ds.d_status_name as deliveryStatusName
-                    from delivery del
-                    join delivery_status ds on ds.d_status_id=del.d_status_id
-                    join vehicle v on del.veh_id = v.veh_id
-                    join driver d on d.veh_id = v.veh_id
-                    join users u on u.user_id=d.user_id
-                    where v.veh_id = ?1
-                    """
-    )
-    List<DeliverySimpleDto> getDeliveriesByVehicle(Integer vehicleId);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select d.del_id as delId,
-                           d.del_date_created as delDateCreated,
-                           d.del_date as delDate,
-                           d.del_start_km as delStartKm,
-                           d.del_end_km as delEndKm,
-                           to_char(d.del_start_time, 'HH24:MI:22') as delStartTime,
-                           to_char(d.del_end_time, 'HH24:MI:SS') as delEndTime,
-                           d.d_status_id as delStatusId,
-                           d.veh_id as veh_id
-                    from delivery d
-                    where d.del_id = ?1
-                    """
-    )
-    DeliveryFullDto findDeliveryDtoById(@Param("id") Long id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryStatusRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DeliveryStatusRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,38 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.entities.DeliveryStatus;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.transaction.annotation.Transactional;
-
-public interface DeliveryStatusRepository extends JpaRepository<DeliveryStatus, Short> {
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into delivery_status(d_status_name, d_status_desc) " +
-                    "values (?1,?2)"
-    )
-    Integer create(@NonNull String name, @NonNull String description);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update delivery_status " +
-                    "set d_status_name=?2,d_status_desc=?3 " +
-                    "where d_status_id=?1"
-    )
-    Integer edit(@NonNull Short id, @NonNull String name, @NonNull String description);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from delivery_status where d_status_id=?1"
-    )
-    void delete(@NonNull Short id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DriverRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/DriverRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,120 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliverySimpleDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DriverDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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;
-
-public interface DriverRepository extends JpaRepository<Driver, Long> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into driver(user_id, veh_id) " +
-                    "values (?1,?2)"
-    )
-    Integer create(
-            @NonNull Long usr_id,
-            @NonNull Integer veh_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update driver " +
-                    "set veh_id=?2 " +
-                    "where user_id=?1"
-    )
-    Integer edit(
-            @NonNull Long usr_id,
-            @NonNull Integer veh_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from driver where user_id=?1"
-    )
-    void delete(@NonNull Long id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select d.user_id as id,
-                           u.user_name as name,
-                           u.user_email as email,
-                           u.user_mobile as phone,
-                           u.user_image as image,
-                           d.veh_id as vehId
-                    from driver d
-                    join users u on d.user_id = u.user_id
-                    where d.user_id = :id
-                    """
-    )
-    DriverDto findDriverById(@NonNull @Param("id") Long id);
-
-    //    ---------------Dashboard queries------------------------------------------
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select del.del_id as deliveryId,
-                           u.user_name as driverName,
-                           del.del_date as deliveryDate,
-                           del.del_date_created as deliveryCreatedDate,
-                           del.d_status_id as deliveryStatus,
-                           ds.d_status_name as deliveryStatusName
-                    from delivery del
-                    join delivery_status ds on del.d_status_id = ds.d_status_id
-                    join vehicle v on del.veh_id = v.veh_id
-                    join driver d on v.veh_id = d.veh_id
-                    join users u on u.user_id = d.user_id
-                    where d.user_id = ?1 and del.d_status_id = 1
-                    """
-    )
-    List<DeliverySimpleDto> activeAssignedDeliveries(@NonNull Long id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select del.del_id as deliveryId,
-                           u.user_name as driverName,
-                           del.del_date as deliveryDate,
-                           del.del_date_created as deliveryCreatedDate,
-                           del.d_status_id as deliveryStatus,
-                           ds.d_status_name as deliveryStatusName
-                    from delivery del
-                    join delivery_status ds on del.d_status_id = ds.d_status_id
-                    join vehicle v on del.veh_id = v.veh_id
-                    join driver d on v.veh_id = d.veh_id
-                    join users u on u.user_id = d.user_id
-                    where d.user_id = ?1 and del.d_status_id not between 1 and 3
-                    """
-    )
-    List<DeliverySimpleDto> finishedAssignedDeliveries(@NonNull Long id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select del.del_id as deliveryId,
-                           u.user_name as driverName,
-                           del.del_date as deliveryDate,
-                           del.del_date_created as deliveryCreatedDate,
-                           del.d_status_id as deliveryStatus,
-                           ds.d_status_name as deliveryStatusName
-                    from delivery del
-                    join delivery_status ds on del.d_status_id = ds.d_status_id
-                    join vehicle v on del.veh_id = v.veh_id
-                    join driver d on v.veh_id = d.veh_id
-                    join users u on u.user_id = d.user_id
-                    where d.user_id = ?1 and del.d_status_id = 3
-                    """
-    )
-    List<DeliverySimpleDto> getOngoingDeliveries(@NonNull Long driverId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManagerRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,44 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.entities.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.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface ManagerRepository extends JpaRepository<Manager, Integer> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into manager(user_id, wh_id) " +
-                    "values (?1,?2)"
-    )
-    Integer create(
-            @NonNull Long id,
-            @NonNull Integer whId);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update manager " +
-                    "set wh_id=?2 " +
-                    "where user_id=?1"
-    )
-    Integer edit(
-            @NonNull Long id,
-            @NonNull Integer whId);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from manager where user_id=?1"
-    )
-    void delete(@NonNull Long id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManufacturerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManufacturerRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,66 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.ManufacturerDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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.transaction.annotation.Transactional;
-
-import java.util.List;
-
-public interface ManufacturerRepository extends JpaRepository<Manufacturer, Long> {
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select m.man_id as id,
-                           m.man_name as name,
-                           m.man_adr as address,
-                           m.man_mobile as phone,
-                           m.man_email as email
-                    from manufacturer m
-                    """
-    )
-    List<ManufacturerDto> listAll();
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = """
-                    insert into manufacturer(man_name, man_adr, man_mobile, man_email)
-                    values (?1,?2,?3,?4)
-                    """
-    )
-    Integer create(
-            @NonNull String name,
-            @NonNull String address,
-            @NonNull String mobile,
-            @NonNull String email);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = """
-                    update manufacturer
-                    set man_name=?2,man_adr=?3,man_mobile=?4,man_email=?5
-                    where man_id=?1
-                    """
-    )
-    Integer edit(
-            @NonNull Long id,
-            @NonNull String name,
-            @NonNull String address,
-            @NonNull String mobile,
-            @NonNull String email);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from manufacturer where man_id=?1"
-    )
-    void delete(@NonNull Long id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrderStatusRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrderStatusRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,37 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.entities.OrderStatus;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.transaction.annotation.Transactional;
-
-public interface OrderStatusRepository extends JpaRepository<OrderStatus, Short> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into order_status(o_status_name, o_status_desc) " +
-                    "values (?1,?2)"
-    )
-    Integer create(@NonNull String name, @NonNull String description);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update order_status " +
-                    "set o_status_name=?2,o_status_desc=?3 " +
-                    "where o_status_id=?1"
-    )
-    Integer edit(@NonNull Short id, @NonNull String name, @NonNull String description);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from order_status where o_status_id=?1"
-    )
-    void delete(@NonNull Short id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,238 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.OrderManagerDto;
-import mk.ukim.finki.db.distributorapp.model.dto.OrderSimpleDto;
-import mk.ukim.finki.db.distributorapp.model.dto.OrdersDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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.data.repository.query.Param;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.List;
-
-public interface OrdersRepository extends JpaRepository<Orders, Long> {
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select o.ord_id as id,
-                           o.ord_date as ordDate,
-                           o.ord_sum as ordSum,
-                           o.ord_fulfillment_date as ordFulfillmentDate,
-                           o.ord_comment as ordComment,
-                           o.o_status_id as oStatusId,
-                           os.o_status_name as statusName,
-                           o.cust_id as customerId,
-                           c.cust_company_name as customerName,
-                           u.user_mobile as customerPhone,
-                           u.user_email as customerEmail,
-                           o.del_id as deliveryId,
-                           d.user_id as driverId,
-                           u1.user_name as driverName,
-                           u1.user_mobile as driverPhone,
-                           u1.user_email as driverEmail,
-                           o.pf_id as pfId,
-                           pfs.pf_status_name as pfStatus
-                    from orders o
-                    join order_status os on o.o_status_id = os.o_status_id
-                    join customer c on c.user_id=o.cust_id
-                    join users u on c.user_id=u.user_id
-                    join delivery del on o.del_id = del.del_id
-                    join vehicle v on del.veh_id = v.veh_id
-                    join driver d on d.veh_id=v.veh_id
-                    join users u1 on d.user_id=u1.user_id
-                    join pro_forma pf on o.pf_id = pf.pf_id
-                    join pro_forma_status pfs on pfs.pf_status_id=pf.pf_status_id
-                    """
-    )
-    List<OrdersDto> listAll();
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select o.ord_id as id,
-                           o.ord_date as ordDate,
-                           o.ord_sum as ordSum,
-                           o.ord_fulfillment_date as ordFulfillmentDate,
-                           o.ord_comment as ordComment,
-                           o.o_status_id as oStatusId,
-                           os.o_status_name as statusName,
-                           o.cust_id as customerId,
-                           c.cust_company_name as customerName,
-                           u.user_mobile as customerPhone,
-                           u.user_email as customerEmail,
-                           del.del_id as deliveryId,
-                           d.user_id as driverId,
-                           u1.user_name as driverName,
-                           u1.user_mobile as driverPhone,
-                           u1.user_email as driverEmail,
-                           pf.pf_id as pfId,
-                           pfs.pf_status_name as pfStatus
-                    from orders o
-                    join order_status os on o.o_status_id = os.o_status_id
-                    join customer c on o.cust_id = c.user_id
-                    join users u on c.user_id = u.user_id
-                    join delivery del on o.del_id = del.del_id
-                    join vehicle v on del.veh_id = v.veh_id
-                    join driver d on d.veh_id=v.veh_id
-                    join users u1 on d.user_id=u1.user_id
-                    join pro_forma pf on o.pf_id = pf.pf_id
-                    join pro_forma_status pfs on pfs.pf_status_id=pf.pf_status_id
-                    where o.cust_id = ?1
-                    """
-    )
-    List<OrdersDto> findOrdersByCustomer(@NonNull Long id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select o.ord_id as id,
-                           o.ord_date as ordDate,
-                           o.ord_sum as ordSum,
-                           o.ord_fulfillment_date as ordFulfillmentDate,
-                           o.ord_comment as ordComment,
-                           o.o_status_id as oStatusId,
-                           o.cust_id as customerId,
-                           o.del_id as deliveryId,
-                           o.pf_id as pfId
-                    from orders o
-                    where o.cust_id = ?1
-                    """
-    )
-    List<OrderSimpleDto> findSimpleOrdersByCustomer(@NonNull Long id);
-
-    @Query(
-            nativeQuery = true,
-            value = "select * from orders where ord_id=?1"
-    )
-    OrdersDto findOrderById(@NonNull Long id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into orders (ord_date, ord_sum, ord_fulfillment_date, ord_comment, o_status_id, cust_id, del_id, pf_id) " +
-                    "values (?1,?2,?3,?4,?5,?6,?7,?8)"
-    )
-    Integer create(
-            @NonNull LocalDate ord_date,
-            @NonNull Integer ord_sum,
-            LocalDateTime ord_fulfillment_date,
-            String ord_comment,
-            @NonNull Short ord_status_id,
-            @NonNull Long cust_id,
-            Long del_id,
-            Long pf_id
-    );
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update orders " +
-                    "set ord_date=?2,ord_sum=?3,ord_fulfillment_date=?4,ord_comment=?5,o_status_id=?6,cust_id=?7,del_id=?8,pf_id=?9 " +
-                    "where ord_id=?1"
-    )
-    Integer edit(
-            @NonNull Long id,
-            @NonNull LocalDate ord_date,
-            @NonNull Integer ord_sum,
-            LocalDateTime ord_fulfillment_date,
-            String ord_comment,
-            @NonNull Short ord_status_id,
-            @NonNull Long cust_id,
-            @NonNull Long del_id,
-            @NonNull Long pf_id
-    );
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from orders where ord_id=?1"
-    )
-    void delete(@NonNull Long id);
-    //----------------------------------------------------------------------------------------------------------------------------------
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select o.ord_id as id,
-                           o.ord_date as ordDate,
-                           o.ord_sum as ordSum,
-                           o.ord_fulfillment_date as ordFulfillmentDate,
-                           o.ord_comment as ordComment,
-                           o.o_status_id as oStatusId,
-                           os.o_status_name as statusName,
-                           o.cust_id as customerId,
-                           c.cust_company_name as customerName,
-                           u.user_mobile as customerPhone,
-                           u.user_email as customerEmail,
-                           o.del_id as deliveryId,
-                           d.user_id as driverId,
-                           u1.user_name as driverName,
-                           u1.user_mobile as driverPhone,
-                           u1.user_email as driverEmail,
-                           o.pf_id as pfId,
-                           pfs.pf_status_name as pfStatus
-                    from orders o
-                    join order_status os on o.o_status_id = os.o_status_id
-                    join customer c on c.user_id=o.cust_id
-                    join users u on c.user_id=u.user_id
-                    join delivery del on o.del_id = del.del_id
-                    join vehicle v on del.veh_id = v.veh_id
-                    join driver d on d.veh_id=v.veh_id
-                    join users u1 on d.user_id=u1.user_id
-                    join pro_forma pf on o.pf_id = pf.pf_id
-                    join pro_forma_status pfs on pfs.pf_status_id=pf.pf_status_id
-                    where o.cust_id=:customer and o.o_status_id between 2 and 6
-                    """
-    )
-    List<OrdersDto> getCurrentOrdersByCustomer(@NonNull @Param("customer") Long customer_id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select o.ord_id as id,
-                           o.ord_date as ordDate,
-                           o.ord_sum as ordSum,
-                           o.ord_fulfillment_date as ordFulfillmentDate,
-                           c.cust_company_name as customerName,
-                           o.ord_comment as ordComment,
-                           o.o_status_id as oStatusId,
-                           o.cust_id as customerId,
-                           o.del_id as deliveryId,
-                           o.pf_id as pfId
-                    from warehouse w
-                        join manager m on w.wh_id= m.wh_id
-                        join article_unit au on au.wh_id = w.wh_id
-                        join orders o on au.ord_id = o.ord_id
-                        join customer c on o.cust_id = c.user_id
-                        join order_status os on os.o_status_id = o.o_status_id
-                    where m.user_id = ?1
-                    """
-    )
-    List<OrderManagerDto> getNewOrdersByManager(@NonNull Long manager_id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select o.ord_id as id,
-                           o.ord_date as ordDate,
-                           o.ord_sum as ordSum,
-                           o.ord_fulfillment_date as ordFulfillmentDate,
-                           o.ord_comment as ordComment,
-                           o.o_status_id as oStatusId,
-                           o.cust_id as customerId,
-                           o.del_id as deliveryId,
-                           o.pf_id as pfId
-                    from orders o
-                    where o.ord_id = ?1
-                    """
-    )
-    OrderSimpleDto findSimpleOrdersById(Long orderId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/PriceRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/PriceRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,47 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.entities.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.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-public interface PriceRepository extends JpaRepository<Price, Integer> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into price(price, price_eff_date, art_id) " +
-                    "values (?1,?2,?3)"
-    )
-    Integer create(
-            @NonNull BigDecimal price,
-            @NonNull LocalDateTime price_eff_date,
-            @NonNull Long art_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update price " +
-                    "set price=?2,price_eff_date=?3,art_id=?4 " +
-                    "where price_id=?1"
-    )
-    Integer edit(
-            @NonNull Integer id,
-            @NonNull BigDecimal price,
-            @NonNull LocalDateTime price_eff_date,
-            @NonNull Long art_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from price where price_id=?1"
-    )
-    void delete(@NonNull Integer id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,71 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.ProFormaDto;
-import mk.ukim.finki.db.distributorapp.model.entities.ProForma;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalDate;
-import java.util.List;
-import java.util.Optional;
-
-public interface ProFormaRepository extends JpaRepository<ProForma, Long> {
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select pf.pf_id as id,
-                           pf.pf_deadline as pfDeadline,
-                           pf.pf_date_created as pfDateCreated,
-                           pf.pf_status_id as statusId,
-                           pfs.pf_status_name as statusName,
-                           o.ord_id as ordId,
-                           o.cust_id as customerId,
-                           c.cust_company_name as customerName,
-                           u.user_email as customerEmail,
-                           u.user_mobile as customerPhone
-                    from pro_forma pf
-                    join pro_forma_status pfs on pf.pf_status_id = pfs.pf_status_id
-                    join orders o on pf.pf_id = o.pf_id
-                    join customer c on o.cust_id = c.user_id
-                    join users u on c.user_id = u.user_id
-                    """
-    )
-    List<ProFormaDto> listAll();
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into pro_forma(pf_deadline, pf_date_created, pf_status_id) " +
-                    "values (?1,?2,?3)"
-    )
-    Integer create(
-            @NonNull LocalDate pf_deadline,
-            @NonNull LocalDate pf_create_date,
-            @NonNull Short pf_status_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update pro_forma " +
-                    "set pf_deadline=?2,pf_date_created=?3,pf_status_id=?4 " +
-                    "where pf_id=?1"
-    )
-    Integer edit(
-            @NonNull Long pf_id,
-            @NonNull LocalDate pf_deadline,
-            @NonNull LocalDate pf_create_date,
-            @NonNull Short pf_status_id);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from pro_forma where pf_id=?1"
-    )
-    void delete(@NonNull Long id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatusRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaStatusRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,40 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.entities.ProFormaStatus;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface ProFormaStatusRepository extends JpaRepository<ProFormaStatus, Short> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into pro_forma_status(pf_status_name, pf_status_desc) " +
-                    "values (?1,?2)"
-    )
-    Integer create(@NonNull String name, @NonNull String description);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update pro_forma_status " +
-                    "set pf_status_name=?2,pf_status_desc=?3 " +
-                    "where pf_status_id=?1"
-    )
-    Integer edit(@NonNull Short id, @NonNull String name, @NonNull String description);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from pro_forma_status where pf_status_id=?1"
-    )
-    void delete(@NonNull Short id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/RegionRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/RegionRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,55 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.RegionDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Region;
-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;
-
-public interface RegionRepository extends JpaRepository<Region, Integer> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into region(region_name) " +
-                    "values (?1)"
-    )
-    Integer create(
-            @NonNull String name);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update region " +
-                    "set region_name=?2 " +
-                    "where region_id=?1"
-    )
-    Integer edit(
-            @NonNull Integer id,
-            @NonNull String name);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from region " +
-                    "where region_id=?1"
-    )
-    void deleteById(@NonNull Integer id);
-
-//    -------------------------------------------------------------------------
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select r.region_id as id, r.region_name as name
-                    from region r join city c on r.region_id = c.region_id
-                    where c.city_id = :city
-                    """
-    )
-    RegionDto getRegionByCityId(@NonNull @Param("city") Integer cityId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/TokenRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/TokenRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,59 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.TokenDto;
-import mk.ukim.finki.db.distributorapp.security.Token;
-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.time.LocalDateTime;
-
-public interface TokenRepository extends JpaRepository<Token, Long> {
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select
-                    from token
-                    where t_value = ?1
-                    """
-    )
-    TokenDto findTokenByValue(@NonNull String token);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = """
-                    insert into token(t_value, t_type, t_expiry, t_user)
-                    values (:value, :type, :expiry, :user)
-                    """
-    )
-    Integer create(
-            @NonNull @Param("value") String t_value,
-            @NonNull @Param("expiry") LocalDateTime t_expiry,
-            @NonNull @Param("user") Long user_id,
-            @NonNull @Param("type") String t_type
-    );
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = """
-                    update token
-                    set t_expiry = :expiry, t_user = :user, t_value = :value, t_type = :type, t_validated_at = :validated_at
-                    where t_id = :id
-                    """
-    )
-    Integer edit(
-            @NonNull @Param("id") Long t_id,
-            @NonNull @Param("value") String t_value,
-            @NonNull @Param("expiry") LocalDateTime t_expiry,
-            @NonNull @Param("user") Long user_id,
-            @NonNull @Param("validated_at") LocalDateTime validated_at,
-            @NonNull @Param("type") String t_type
-    );
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UnitPriceRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UnitPriceRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,28 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.entities.UnitPrice;
-import mk.ukim.finki.db.distributorapp.model.entities.UnitPriceId;
-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;
-
-public interface UnitPriceRepository extends JpaRepository<UnitPrice, UnitPriceId> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = """
-                    insert into unit_price(unit_id, price_id)
-                    values (:unitId, :priceId)
-                    """
-    )
-    Integer create(
-            @Param("unitId") @NonNull Long unitId,
-            @Param("priceId") @NonNull Long priceId
-    );
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,127 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.model.dto.UsersLoadingDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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;
-
-public interface UsersRepository extends JpaRepository<Users, Long> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into users(user_name,user_surname,user_pass,user_salt,user_email,user_mobile,user_active,user_image,city_id,user_role,clazz_) " +
-                    "values (:name,:sur,:pass,:salt,:email,:mob,:active,:img,:cty,:role,:clazz_)"
-    )
-    Integer create(
-            @NonNull @Param("name") String name,
-            @NonNull @Param("sur") String surname,
-            @NonNull @Param("pass") String password,
-            @NonNull @Param("email") String email,
-            @NonNull @Param("mob") String mobile,
-            @NonNull @Param("salt") String salt,
-            @NonNull @Param("active") Boolean active,
-            @Param("img") String image,
-            @NonNull @Param("cty") Integer city_id,
-            @NonNull @Param("role") String role,
-            @NonNull @Param("clazz_") String clazz_);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update users " +
-                    "set user_name=:name,user_surname=:sur,user_pass=:pass,user_email=:email,user_mobile=:mob,user_salt=:salt,user_active=:active,user_image=:img,city_id=:cty,user_role=:role,clazz_=:clazz_ " +
-                    "where user_id=:id"
-    )
-    Integer edit(
-            @NonNull @Param("id") Long id,
-            @NonNull @Param("name") String name,
-            @NonNull @Param("sur") String surname,
-            @NonNull @Param("pass") String password,
-            @NonNull @Param("email") String email,
-            @NonNull @Param("mob") String mobile,
-            @NonNull @Param("salt") String salt,
-            @NonNull @Param("active") Boolean active,
-            @NonNull @Param("img") String image,
-            @NonNull @Param("cty") Integer city_id,
-            @NonNull @Param("role") String role,
-            @NonNull @Param("clazz_") String clazz_);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from users where user_id=:id"
-    )
-    void delete(@NonNull @Param("id") Long id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select user_id as userId,
-                           user_name as userName,
-                           user_surname as userSurname,
-                           user_pass as userPassword,
-                           user_email as userEmail,
-                           user_mobile as userMobile,
-                           user_salt as userSalt,
-                           user_active as userActive,
-                           user_image as userImage,
-                           user_role as userRole,
-                           clazz_
-                    from users
-                    where user_email = ?1
-                    """
-    )
-    UsersLoadingDto findUsersByUserEmailIgnoreCaseDto(String email);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select u.user_id as id,
-                           u.user_name as firstName,
-                           u.user_surname as lastName,
-                           u.user_email as email,
-                           u.user_mobile as phone,
-                           u.user_image as image,
-                           u.city_id as cityId,
-                           c.city_name as cityName,
-                           r.region_name as regionName,
-                           u.user_role as role,
-                           clazz_ as clazz_,
-                           u.user_active as userActive
-                    from users u
-                    join city c on u.city_id = c.city_id
-                    join region r on c.region_id = r.region_id
-                    where user_email = ?1
-                    """
-    )
-    UserDto findUserDtoByEmail(String userEmail);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select u.user_id as userId,
-                           u.user_name as userName,
-                           u.user_surname as userSurname,
-                           u.user_pass as userPassword,
-                           u.user_email as userEmail,
-                           u.user_mobile as userMobile,
-                           u.user_salt as userSalt,
-                           u.user_active as userActive,
-                           u.user_image as userImage,
-                           u.user_role as userRole,
-                           u.clazz_ as clazz_
-                    from users u
-                    join token t on u.user_id=t.t_user
-                    where t.t_value = :token
-                    """
-    )
-    UsersLoadingDto findUserByResetToken(@NonNull @Param("token") String token);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/VehicleRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,111 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.VehicleBasicDto;
-import mk.ukim.finki.db.distributorapp.model.dto.VehicleDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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.Date;
-import java.util.List;
-
-public interface VehicleRepository extends JpaRepository<Vehicle, Integer> {
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select veh_id as id,
-                           wh_id as warehouseId,
-                           veh_plate as plateNumber
-                    from vehicle
-                    where wh_id = ?1
-                    """
-    )
-    List<VehicleBasicDto> findAllByWarehouseDto(@NonNull Integer warehouseId);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into vehicle(veh_carry_weight, veh_service_interval, veh_kilometers, veh_last_service, veh_last_service_km, veh_plate, veh_vin, veh_reg, wh_id) " +
-                    "values (?1,?2,?3,?4,?5,?6,?7,?8,?9)"
-    )
-    Integer create(
-            @NonNull Integer vehicleCarryWeight,
-            @NonNull Short vehicleServiceInterval,
-            @NonNull Integer vehicleKilometers,
-            @NonNull Date vehicleLastService,
-            @NonNull Integer vehicleLastServiceKm,
-            @NonNull String vehiclePlate,
-            @NonNull String vehicleVIN,
-            @NonNull Date vehicleRegDate,
-            @NonNull Integer whId);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update vehicle " +
-                    "set veh_carry_weight=?2,veh_service_interval=?3,veh_kilometers=?4," +
-                    "veh_last_service=?5,veh_last_service_km=?6,veh_plate=?7,veh_vin=?8,veh_reg=?9,wh_id=?10 " +
-                    "where veh_id=?1"
-    )
-    Integer edit(
-            @NonNull Integer id,
-            @NonNull Integer vehicleCarryWeight,
-            @NonNull Short vehicleServiceInterval,
-            @NonNull Integer vehicleKilometers,
-            @NonNull Date vehicleLastService,
-            @NonNull Integer vehicleLastServiceKm,
-            @NonNull String vehiclePlate,
-            @NonNull String vehicleVIN,
-            @NonNull Date vehicleRegDate,
-            @NonNull Integer whId);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from vehicle where veh_id=?1"
-    )
-    void delete(@NonNull Integer id);
-
-    //----------------------------------------------------------------------------------------------------------------------
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select v.veh_id as id,
-                           v.veh_carry_weight as carryWeight,
-                           v.veh_service_interval as serviceInterval,
-                           v.veh_kilometers as kilometers,
-                           v.veh_last_service as lastServiceDate,
-                           v.veh_last_service_km as lastServiceKm,
-                           v.veh_plate as plate,
-                           v.veh_vin as vin,
-                           v.veh_reg as registrationDate,
-                           w.wh_id as whId,
-                           c.city_name as city,
-                           r.region_name as region,
-                           d.user_id as driverId,
-                           u1.user_name as driverName,
-                           u1.user_email as driverEmail,
-                           u1.user_mobile as driverPhone,
-                           u1.user_image as driverImg
-                    from warehouse w
-                    join city c on w.city_id = c.city_id
-                    join region r on c.region_id = r.region_id
-                    join manager m on w.wh_id = m.wh_id
-                    join users u on m.user_id = u.user_id
-                    join vehicle v on w.wh_id=v.wh_id
-                    join driver d on d.veh_id=v.veh_id
-                    join users u1 on d.user_id=u1.user_id
-                    where m.user_id = :manager
-                    group by v.veh_id, v.veh_carry_weight, v.veh_service_interval, v.veh_kilometers, v.veh_last_service, v.veh_last_service_km, v.veh_plate, v.veh_vin, v.veh_reg, w.wh_id, c.city_name, r.region_name, d.user_id, u1.user_name, u1.user_email, u1.user_mobile, u1.user_image
-                    order by v.veh_reg
-                   """
-    )
-    List<VehicleDto> getVehiclesByManager(@NonNull @Param("manager") Long managerId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/WarehouseRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,90 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.dto.WarehouseDto;
-import mk.ukim.finki.db.distributorapp.model.dto.WarehouseInventoryDto;
-import mk.ukim.finki.db.distributorapp.model.entities.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;
-
-public interface WarehouseRepository extends JpaRepository<Warehouse, Integer> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into warehouse(wh_adr, city_id) " +
-                    "values (?1,?2)"
-    )
-    Integer create(
-            @NonNull String whAddress,
-            @NonNull Integer city);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update warehouse " +
-                    "set wh_adr = ?2,city_id = ?3 " +
-                    "where wh_id = ?1"
-    )
-    Integer edit(
-            @NonNull Integer id,
-            @NonNull String whAddress,
-            @NonNull Integer city);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from warehouse where wh_id = ?1"
-    )
-    void delete(@NonNull Integer id);
-    //-------------------------------------------------------------------------------------------------------------------
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    select a.art_name as articleName,
-                           man.man_name as manufacturerName,
-                           count(au.unit_id) as totalUnits
-                    from warehouse w
-                        join manager m on m.wh_id = w.wh_id
-                        join article_unit au on au.wh_id = w.wh_id
-                        join unit_price up on au.unit_id = up.unit_id
-                        join price p on p.price_id=up.price_id
-                        join article a on p.art_id=a.art_id
-                        join manufacturer man on a.man_id = man.man_id
-                    where m.user_id = :manager
-                    group by a.art_name, man.man_name
-                    order by totalUnits
-                    """
-    )
-    List<WarehouseInventoryDto> getInventoryByManager(@NonNull @Param("manager") Long manager_id);
-
-    @Query(
-            nativeQuery = true,
-            value = """
-                    with reg as (
-                        select r.*
-                        from city c1 join region r on c1.region_id = r.region_id
-                        where c1.city_id = :city
-                    )
-                    select w.wh_id as id,
-                           w.wh_adr as address,
-                           c.city_id as cityId,
-                           c.city_name as cityName,
-                           r1.region_id as regionId,
-                           r1.region_name as regionName
-                    from warehouse w
-                    join city c on c.city_id = w.city_id
-                    join reg r1 on r1.region_id = c.region_id
-                    where c.region_id = r1.region_id
-                   """
-    )
-    WarehouseDto findWarehouseDtoByCityId(@NonNull @Param("city") Integer cityId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/WeekdayRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/WeekdayRepository.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,41 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.model.entities.Weekday;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface WeekdayRepository extends JpaRepository<Weekday, Short> {
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "insert into weekday(day_id,day_name) " +
-                    "values (?1,?2)"
-    )
-    Integer create(@NonNull String dayName);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "update weekday " +
-                    "set day_name=?2 " +
-                    "where day_id=?1"
-    )
-    Integer edit(@NonNull Short id, @NonNull String dayName);
-
-    @Modifying
-    @Transactional
-    @Query(
-            nativeQuery = true,
-            value = "delete from weekday " +
-                    "where day_id=?1"
-    )
-    void deleteById(@NonNull Short id);
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUserDetailsService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUserDetailsService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUserDetailsService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,6 +2,6 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.entities.Users;
-import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
+import mk.ukim.finki.db.distributorapp.users.Users;
+import mk.ukim.finki.db.distributorapp.users.UsersRepository;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUsernamePasswordAuthenticationProvider.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUsernamePasswordAuthenticationProvider.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUsernamePasswordAuthenticationProvider.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,5 +2,5 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.service.UsersService;
+import mk.ukim.finki.db.distributorapp.users.UsersService;
 import org.springframework.security.authentication.AuthenticationProvider;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -22,5 +22,5 @@
         String password = authentication.getCredentials().toString();
 
-        if("".equals(email)||"".equals(password)){
+        if ("".equals(email) || "".equals(password)) {
             throw new BadCredentialsException("Invalid email or password");
         }
@@ -28,7 +28,7 @@
         UserDetails userDetails = this.customUserDetailsService.loadUserByUsername(email);
         String salt = this.usersService.findFullUserDtoByEmail(email).getUserSalt();
-        if(!PassEncryption.verifyUserPassword(password, userDetails.getPassword(), salt))
+        if (!PassEncryption.verifyUserPassword(password, userDetails.getPassword(), salt))
             throw new BadCredentialsException("Invalid password");
-        return new UsernamePasswordAuthenticationToken(userDetails,userDetails.getPassword(), userDetails.getAuthorities());
+        return new UsernamePasswordAuthenticationToken(userDetails, userDetails.getPassword(), userDetails.getAuthorities());
     }
 
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SecurityConfig.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SecurityConfig.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/SecurityConfig.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -32,7 +32,7 @@
                         .requestMatchers("/customer/**").hasAnyRole("CUSTOMER", "ADMIN")
                         .requestMatchers("/manager/**").hasAnyRole("MANAGER", "ADMIN")
-                        .requestMatchers("/driver/**").hasAnyRole("DRIVER","ADMIN")
-                            .anyRequest()
-                                    .authenticated()
+                        .requestMatchers("/driver/**").hasAnyRole("DRIVER", "ADMIN")
+                        .anyRequest()
+                        .authenticated()
                 )
                 .formLogin(login -> login
@@ -74,6 +74,5 @@
     public AuthenticationManager authenticationManager(
             HttpSecurity http
-    ) throws Exception
-    {
+    ) throws Exception {
         AuthenticationManagerBuilder authenticationManagerBuilder =
                 http.getSharedObject(AuthenticationManagerBuilder.class);
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/security/Token.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/Token.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,51 +1,0 @@
-package mk.ukim.finki.db.distributorapp.security;
-
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.entities.Users;
-import mk.ukim.finki.db.distributorapp.model.enumerations.TokenType;
-
-import java.time.LocalDateTime;
-import java.util.UUID;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Entity
-@Table(name = "token")
-public class Token {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "t_id")
-    private Long tokenId;
-
-    @Column(name = "t_value", unique = true, nullable = false)
-    private String tokenValue;
-
-    @Column(name = "t_date")
-    private LocalDateTime createdDate;
-
-    @Enumerated(EnumType.STRING)
-    @Column(name = "t_type")
-    private TokenType tokenType;
-
-    @Column(name = "t_expiry")
-    private LocalDateTime tokenExpiryDate;
-
-    @Column(name = "t_validated_at")
-    private LocalDateTime tokenValidatedAt;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "t_user", referencedColumnName = "user_id", nullable = false, unique = true)
-    private Users user;
-
-    public Token(Users user, TokenType tokenType) {
-        this.user = user;
-        this.tokenType = tokenType;
-        this.createdDate = LocalDateTime.now();
-        this.tokenValue = UUID.randomUUID().toString();
-    }
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthController.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthController.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,7 +2,10 @@
 
 import jakarta.servlet.http.HttpServletRequest;
-import mk.ukim.finki.db.distributorapp.model.dto.*;
-import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidUserCredentialsException;
-import mk.ukim.finki.db.distributorapp.service.CityService;
+import mk.ukim.finki.db.distributorapp.city.dto.CityDtoRegister;
+import mk.ukim.finki.db.distributorapp.security.dto.LoginRequestDto;
+import mk.ukim.finki.db.distributorapp.security.dto.RegisterRequestDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UsersLoadingDto;
+import mk.ukim.finki.db.distributorapp.exceptions.InvalidUserCredentialsException;
+import mk.ukim.finki.db.distributorapp.city.CityService;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -35,8 +38,8 @@
     @PostMapping("/login")
     public String login(@ModelAttribute LoginRequestDto loginRequest, RedirectAttributes redirectAttributes) {
-        try{
+        try {
             UsersLoadingDto user = authService.login(loginRequest);
 
-            switch (user.getUserRole()){
+            switch (user.getUserRole()) {
                 case "ROLE_CUSTOMER" -> {
                     return "redirect:/home/customer";
@@ -55,5 +58,5 @@
                 }
             }
-        }catch (InvalidUserCredentialsException e) {
+        } catch (InvalidUserCredentialsException e) {
             redirectAttributes.addFlashAttribute("error", "Invalid credentials.");
             return "redirect:/auth/login";
@@ -86,5 +89,5 @@
 
     @PostMapping("/logout")
-    public String logout(Model model){
+    public String logout(Model model) {
         return "redirect:/auth/login";
     }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -1,5 +1,9 @@
 package mk.ukim.finki.db.distributorapp.security.auth;
 
-import mk.ukim.finki.db.distributorapp.model.dto.*;
+import mk.ukim.finki.db.distributorapp.driver.dto.CreateDriverDto;
+import mk.ukim.finki.db.distributorapp.manager.dto.CreateManagerDto;
+import mk.ukim.finki.db.distributorapp.security.dto.LoginRequestDto;
+import mk.ukim.finki.db.distributorapp.security.dto.RegisterRequestDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UsersLoadingDto;
 
 public interface AuthService {
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,13 +2,23 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.*;
-import mk.ukim.finki.db.distributorapp.model.enumerations.Role;
-import mk.ukim.finki.db.distributorapp.model.enumerations.TokenType;
-import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidArgumentsException;
-import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidUserCredentialsException;
-import mk.ukim.finki.db.distributorapp.repository.*;
+import mk.ukim.finki.db.distributorapp.customer.CustomerRepository;
+import mk.ukim.finki.db.distributorapp.driver.DriverRepository;
+import mk.ukim.finki.db.distributorapp.driver.dto.CreateDriverDto;
+import mk.ukim.finki.db.distributorapp.manager.ManagerRepository;
+import mk.ukim.finki.db.distributorapp.manager.dto.CreateManagerDto;
+import mk.ukim.finki.db.distributorapp.token.TokenRepository;
+import mk.ukim.finki.db.distributorapp.users.Role;
+import mk.ukim.finki.db.distributorapp.token.TokenType;
+import mk.ukim.finki.db.distributorapp.exceptions.InvalidArgumentsException;
+import mk.ukim.finki.db.distributorapp.exceptions.InvalidUserCredentialsException;
 import mk.ukim.finki.db.distributorapp.security.EmailService;
 import mk.ukim.finki.db.distributorapp.security.PassEncryption;
 import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
+import mk.ukim.finki.db.distributorapp.security.dto.LoginRequestDto;
+import mk.ukim.finki.db.distributorapp.security.dto.RegisterRequestDto;
+import mk.ukim.finki.db.distributorapp.token.dto.TokenDto;
+import mk.ukim.finki.db.distributorapp.users.UsersRepository;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UsersLoadingDto;
 import org.springframework.mail.SimpleMailMessage;
 import org.springframework.stereotype.Service;
@@ -61,5 +71,5 @@
         );
 
-        TokenDto createdToken = this .tokenRepository.findTokenByValue(t_value);
+        TokenDto createdToken = this.tokenRepository.findTokenByValue(t_value);
 
         SimpleMailMessage mailMessage = new SimpleMailMessage();
@@ -111,5 +121,5 @@
     @Override
     @Transactional
-    public void createDriver(CreateDriverDto createDriverDto) throws Exception{
+    public void createDriver(CreateDriverDto createDriverDto) throws Exception {
         String saltValue = PassEncryption.genSaltValue(30);
         String safePass = passwordEncoder.encodeWithSalt(createDriverDto.getPassword(), saltValue);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,12 +2,12 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.TokenDto;
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.model.dto.UsersLoadingDto;
-import mk.ukim.finki.db.distributorapp.model.enumerations.TokenType;
-import mk.ukim.finki.db.distributorapp.repository.TokenRepository;
+import mk.ukim.finki.db.distributorapp.token.dto.TokenDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UsersLoadingDto;
+import mk.ukim.finki.db.distributorapp.token.TokenType;
+import mk.ukim.finki.db.distributorapp.token.TokenRepository;
 import mk.ukim.finki.db.distributorapp.security.EmailService;
 import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
-import mk.ukim.finki.db.distributorapp.service.UsersService;
+import mk.ukim.finki.db.distributorapp.users.UsersService;
 import org.springframework.mail.SimpleMailMessage;
 import org.springframework.stereotype.Controller;
@@ -40,5 +40,5 @@
 
         UsersLoadingDto user = this.usersService.findFullUserDtoByEmail(email);
-        if(user==null){
+        if (user == null) {
             model.addAttribute("error", "No user found with this email.");
             return "authentication/reset-password-request";
@@ -71,9 +71,9 @@
 
     @GetMapping("/reset-password")
-    public String showResetPasswordForm(@RequestParam("token") String tokenValue, Model model){
+    public String showResetPasswordForm(@RequestParam("token") String tokenValue, Model model) {
 
         UsersLoadingDto user = usersService.findUserByResetToken(tokenValue);
         TokenDto token = tokenRepository.findTokenByValue(tokenValue);
-        if(user==null || token.getT_expiry().isBefore(LocalDateTime.now())){
+        if (user == null || token.getT_expiry().isBefore(LocalDateTime.now())) {
             model.addAttribute("error", "Invalid or expired token.");
             return "authentication/reset-password";
@@ -88,5 +88,5 @@
             @RequestParam("newPassword") String newPassword,
             @RequestParam("confirmPassword") String confirmPassword,
-            Model model){
+            Model model) {
 
         UsersLoadingDto user = usersService.findUserByResetToken(tokenValue);
@@ -97,10 +97,10 @@
         }
 
-        if(!newPassword.equals(confirmPassword)){
+        if (!newPassword.equals(confirmPassword)) {
             model.addAttribute("error", "Passwords do not match.");
             return "authentication/reset-password";
         }
 
-        user.setUserPassword(passwordEncoder.encodeWithSalt(newPassword,user.getUserSalt()));
+        user.setUserPassword(passwordEncoder.encodeWithSalt(newPassword, user.getUserSalt()));
         token.setT_validated_at(LocalDateTime.now());
         tokenRepository.edit(
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/ChangePasswordDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/ChangePasswordDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/ChangePasswordDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,14 @@
+package mk.ukim.finki.db.distributorapp.security.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ChangePasswordDto {
+    String email;
+    String oldPassword;
+    String newPassword;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/LoginRequestDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/LoginRequestDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/LoginRequestDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.db.distributorapp.security.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class LoginRequestDto {
+    private String email;
+    private String password;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/LoginResponseDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/LoginResponseDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/LoginResponseDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.security.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class LoginResponseDto {
+    private String token;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/RegisterRequestDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/RegisterRequestDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/dto/RegisterRequestDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.security.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RegisterRequestDto {
+    private String name;
+    private String surname;
+    private String password;
+    private String repeatedPassword;
+    private String email;
+    private String mobile;
+    private String profileImage;
+    private Integer city;
+    private String edb;
+    private String compName;
+    private String address;
+    private String repImage;
+}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleDto;
-
-import java.util.List;
-
-public interface ArticleService {
-    List<ArticleDto> getAllArticles();
-
-    void deleteById(Long id);
-
-    Integer editById(ArticleDto article);
-
-    Integer create(ArticleDto article);
-
-    List<ArticleDto> getAllArticlesByWarehouse(Integer warehouseId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleUnitService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleUnitService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,27 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitDto;
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitSimpleDto;
-import mk.ukim.finki.db.distributorapp.model.dto.OrderItemDto;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-public interface ArticleUnitService {
-    List<ArticleUnitSimpleDto> getAllArticleUnits();
-
-    Integer create(ArticleUnitDto articleUnitDto);
-
-    Integer edit(ArticleUnitDto articleUnitDto);
-    // TODO: Change edit and simpleEdit method
-    @Transactional
-    Integer simpleEdit(ArticleUnitSimpleDto articleUnitSimpleDto);
-
-    void delete(Long id);
-
-    List<ArticleUnitDto> getAllArticleUnitsByWarehouse(Integer warehouseId);
-
-    List<ArticleUnitSimpleDto> findAllSimpleByArticleAndWarehouse(Long articleId, Integer warehouseId);
-
-    List<ArticleUnitSimpleDto> addArticleUnitToOrder(List<OrderItemDto> orderItems, Long id, Integer whId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/CategoryService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CategoryService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,16 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.CategoryDto;
-
-import java.util.List;
-
-public interface CategoryService {
-
-    List<CategoryDto> listCategories();
-
-    Integer create(CategoryDto categoryDto);
-
-    Integer edit(CategoryDto categoryDto);
-
-    void deleteById(Integer id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/CityService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CityService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.CityDto;
-import mk.ukim.finki.db.distributorapp.model.dto.CityDtoRegister;
-
-import java.util.List;
-
-public interface CityService {
-
-    List<CityDtoRegister> findAllCityDtos();
-
-    Integer create(CityDto cityDto);
-
-    Integer edit(CityDto cityDto);
-
-    void deleteById(Integer id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,14 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
-
-public interface CustomerService {
-
-    CustomerDto findCustomerById(Long id);
-
-    Integer create(CustomerDto customerDto);
-
-    Integer edit(CustomerDto customerDto);
-
-    void deleteById(Long id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerWeekdayService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerWeekdayService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,14 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.CustomerWeekdayDto;
-
-import java.util.List;
-
-public interface CustomerWeekdayService {
-
-    Integer create(CustomerWeekdayDto customerWeekdayDto);
-
-    Integer edit(CustomerWeekdayDto customerWeekdayDto);
-
-    void deleteById(Long customerWeekdayId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,25 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryCreateDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryFullDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliverySimpleDto;
-
-import java.util.List;
-
-public interface DeliveryService {
-
-    DeliveryFullDto findDeliveryById(Long id);
-
-    Integer create(DeliveryCreateDto deliveryDto);
-
-    Integer edit(DeliveryFullDto deliveryDto);
-
-    void deleteById(Long del_id);
-
-    List<DeliveryDto> getCurrentDeliveriesByCustomer (Long customerId);
-
-    List<DeliveryDto> getCurrentDeliveriesByManager (Long managerId);
-
-    List<DeliverySimpleDto> getDeliveriesByVehicle (Integer vehicleId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryStatusService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DeliveryStatusService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryStatusDto;
-
-public interface DeliveryStatusService {
-
-    Integer create(DeliveryStatusDto deliveryStatusDto);
-
-    Integer edit(DeliveryStatusDto deliveryStatusDto);
-
-    void deleteById(Short id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/DriverService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/DriverService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,29 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryEndDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliverySimpleDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryStartDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DriverDto;
-
-import java.util.List;
-
-public interface DriverService {
-
-    DriverDto findById(Long id);
-
-    Integer create(DriverDto driverDto);
-
-    Integer edit(DriverDto driverDto);
-
-    void deleteById(Long id);
-
-    List<DeliverySimpleDto> getNewAssignedDeliveries(Long driverId);
-
-    List<DeliverySimpleDto> getFinishedAssignedDeliveries(Long driverId);
-
-    void startDelivery(DeliveryStartDto delivery);
-
-    List<DeliverySimpleDto> getOngoingDeliveries(Long driverId);
-
-    void endDelivery(DeliveryEndDto delivery);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ManagerService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,13 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ManagerDto;
-
-public interface ManagerService {
-
-    Integer create(ManagerDto managerDto);
-
-    Integer edit(ManagerDto managerDto);
-
-    void deleteById(Long id);
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/ManufacturerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ManufacturerService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ManufacturerDto;
-
-import java.util.List;
-
-public interface ManufacturerService {
-    List<ManufacturerDto> getAllManufacturers();
-
-    Integer create(ManufacturerDto manufacturerDto);
-
-    Integer edit(ManufacturerDto manufacturerDto);
-
-    void deleteById(Long id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrderStatusService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrderStatusService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.OrderStatusDto;
-
-public interface OrderStatusService {
-
-    Integer create(OrderStatusDto orderStatusDto);
-
-    Integer edit(OrderStatusDto orderStatusDto);
-
-    void deleteById(Short id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,30 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.CreateOrderDto;
-import mk.ukim.finki.db.distributorapp.model.dto.OrderManagerDto;
-import mk.ukim.finki.db.distributorapp.model.dto.OrderSimpleDto;
-import mk.ukim.finki.db.distributorapp.model.dto.OrdersDto;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.security.Principal;
-import java.util.List;
-
-public interface OrdersService {
-
-    List<OrderSimpleDto> findSimpleOrdersByCustomer(Long customerId);
-
-    OrdersDto findById(Long id);
-
-    @Transactional
-    Integer create(CreateOrderDto createOrderDto, Principal principal);
-
-    Integer edit(OrdersDto ordersDto);
-
-    void deleteById(Long id);
-
-    List<OrdersDto> findCurrentOrdersByCustomer(Long customerId);
-
-    List<OrderManagerDto> getNewOrdersByManager(Long managerId);
-
-    void addOrdersToDelivery(List<Long> orderIds, Long deliveryId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/PriceService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/PriceService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,16 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.PriceDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Article;
-
-import java.util.List;
-
-public interface PriceService {
-
-    Integer create(PriceDto priceDto);
-
-    Integer edit(PriceDto priceDto);
-
-    void deleteById(Integer id);
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,18 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ProFormaDto;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-public interface ProFormaService {
-    @Transactional
-    List<ProFormaDto> getAllProForma();
-
-    Integer create(ProFormaDto proFormaDto);
-
-    Integer edit(ProFormaDto proFormaDto);
-
-    void deleteById(Long id);
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaStatusService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaStatusService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.ProFormaStatusDto;
-
-public interface ProFormaStatusService {
-
-    Integer create(ProFormaStatusDto proFormaStatusDto);
-
-    Integer edit (ProFormaStatusDto proFormaStatusDto );
-
-    void deleteById(Short id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/RegionService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/RegionService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.RegionDto;
-
-public interface RegionService {
-
-    Integer create(RegionDto regionDto );
-
-    Integer edit(RegionDto regionDto);
-
-    void deleteById(Integer id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/UsersService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/UsersService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.model.dto.UsersLoadingDto;
-
-public interface UsersService {
-    Integer edit(UserDto userDto);
-    void deleteUserById(Long id);
-    UsersLoadingDto findUserByResetToken(String token);
-    UserDto findUserDtoByEmail(String userEmail);
-    UsersLoadingDto findFullUserDtoByEmail(String userEmail);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/VehicleService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.VehicleBasicDto;
-import mk.ukim.finki.db.distributorapp.model.dto.VehicleDto;
-
-import java.util.List;
-
-public interface VehicleService {
-
-    List<VehicleBasicDto> getVehiclesByWarehouse(Integer warehouseId);
-
-    Integer create(VehicleDto vehicleDto);
-
-    Integer edit(VehicleDto vehicleDto);
-
-    void deleteById(Integer id);
-
-    List<VehicleDto> getVehiclesByManager(Long managerId);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/WarehouseService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,24 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.WarehouseDto;
-import mk.ukim.finki.db.distributorapp.model.dto.WarehouseInventoryDto;
-import mk.ukim.finki.db.distributorapp.model.entities.City;
-
-import java.util.List;
-
-public interface WarehouseService {
-
-    WarehouseDto findById(Integer id);
-
-    WarehouseDto findByCityId(Integer id);
-
-    Integer create(WarehouseDto warehouseDto);
-
-    Integer edit(WarehouseDto warehouseDto);
-
-    void deleteById(Integer id);
-
-    List<WarehouseInventoryDto> getInventoryByManager(Long managerId);
-
-    
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/WeekdayService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/WeekdayService.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,14 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service;
-
-import mk.ukim.finki.db.distributorapp.model.dto.WeekdayDto;
-
-import java.util.List;
-
-public interface WeekdayService {
-
-    Integer create(WeekdayDto weekdayDto);
-
-    Integer edit(WeekdayDto weekdayDto);
-
-    void deleteById(Short id);
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,51 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleDto;
-import mk.ukim.finki.db.distributorapp.repository.ArticleRepository;
-import mk.ukim.finki.db.distributorapp.service.ArticleService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class ArticleServiceImpl implements ArticleService {
-    private final ArticleRepository articleRepository;
-
-    @Override
-    public List<ArticleDto> getAllArticles() {
-        return this.articleRepository.listAll();
-    }
-
-    @Override
-    public void deleteById(Long id) {
-        this.articleRepository.deleteById(id);
-    }
-
-    @Override
-    public Integer editById(ArticleDto art) {
-        return this.articleRepository.edit(
-                art.getId(),
-                art.getName(),
-                art.getImage(),
-                art.getWeight(),
-                art.getCategoryId(),
-                art.getManufacturerId());
-    }
-
-    @Override
-    public Integer create(ArticleDto art) {
-        return this.articleRepository.create(
-                art.getName(),
-                art.getImage(),
-                art.getWeight(),
-                art.getCategoryId(),
-                art.getManufacturerId());
-    }
-
-    @Override
-    public List<ArticleDto> getAllArticlesByWarehouse(Integer warehouseId) {
-        return this.articleRepository.findAllByWarehouse(warehouseId);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleUnitServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleUnitServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,103 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitDto;
-import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitSimpleDto;
-import mk.ukim.finki.db.distributorapp.model.dto.OrderItemDto;
-import mk.ukim.finki.db.distributorapp.repository.ArticleUnitRepository;
-import mk.ukim.finki.db.distributorapp.repository.UnitPriceRepository;
-import mk.ukim.finki.db.distributorapp.repository.WarehouseRepository;
-import mk.ukim.finki.db.distributorapp.service.ArticleUnitService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class ArticleUnitServiceImpl implements ArticleUnitService {
-    private final ArticleUnitRepository articleUnitRepository;
-    private final WarehouseRepository warehouseRepository;
-    private final UnitPriceRepository unitPriceRepository;
-
-    @Override
-    public List<ArticleUnitSimpleDto> getAllArticleUnits() {
-        return this.articleUnitRepository.listAll();
-    }
-
-    @Override
-    @Transactional
-    public Integer create(ArticleUnitDto articleUnitDto) {
-        return this.articleUnitRepository.create(
-                articleUnitDto.getExpiryDate(),
-                articleUnitDto.getSerialNo(),
-                articleUnitDto.getBatchNo(),
-                articleUnitDto.getManufactureDate(),
-                articleUnitDto.getCostPrice(),
-                articleUnitDto.getWhId(),
-                articleUnitDto.getOrdId()
-        );
-    }
-
-    @Override
-    @Transactional
-    public Integer edit(ArticleUnitDto articleUnitDto) {
-        return this.articleUnitRepository.edit(
-                articleUnitDto.getId(),
-                articleUnitDto.getExpiryDate(),
-                articleUnitDto.getSerialNo(),
-                articleUnitDto.getBatchNo(),
-                articleUnitDto.getManufactureDate(),
-                articleUnitDto.getCostPrice(),
-                articleUnitDto.getWhId(),
-                articleUnitDto.getOrdId()
-        );
-    }
-
-    @Transactional
-    @Override
-    public Integer simpleEdit(ArticleUnitSimpleDto articleUnitSimpleDto){
-        return this.articleUnitRepository.edit(
-                articleUnitSimpleDto.getId(),
-                articleUnitSimpleDto.getExpiryDate(),
-                articleUnitSimpleDto.getSerialNo(),
-                articleUnitSimpleDto.getBatchNo(),
-                articleUnitSimpleDto.getManufactureDate(),
-                articleUnitSimpleDto.getCostPrice(),
-                articleUnitSimpleDto.getWhId(),
-                articleUnitSimpleDto.getOrdId()
-        );
-    }
-
-    @Override
-    public void delete(Long id) {
-        this.articleUnitRepository.deleteById(id);
-    }
-
-    @Override
-    public List<ArticleUnitDto> getAllArticleUnitsByWarehouse(Integer warehouseId) {
-        return this.articleUnitRepository.findAllByWarehouse(warehouseId);
-    }
-
-    @Override
-    public List<ArticleUnitSimpleDto> findAllSimpleByArticleAndWarehouse(Long articleId, Integer warehouseId){
-        return this.articleUnitRepository.findAllSimpleByArticleAndWarehouse(articleId,warehouseId);
-    }
-
-    @Override
-    public List<ArticleUnitSimpleDto> addArticleUnitToOrder(List<OrderItemDto> orderItems, Long id, Integer whId) {
-        List<ArticleUnitSimpleDto> editedUnits = new ArrayList<>();
-        for (OrderItemDto orderItem : orderItems) {
-            Long articleId = orderItem.getArticleId();
-            Integer quantity = orderItem.getQuantity();
-
-            List<ArticleUnitSimpleDto> articleUnitItems = findAllSimpleByArticleAndWarehouse(articleId, whId);
-            for (int j = 0; j < quantity; j++) {
-                articleUnitItems.get(j).setOrdId(id);
-                editedUnits.add(articleUnitItems.get(j));
-            }
-        }
-        return editedUnits;
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,36 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.CategoryDto;
-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;
-
-@Service
-@RequiredArgsConstructor
-public class CategoryServiceImpl implements CategoryService {
-    private final CategoryRepository categoryRepository;
-
-    @Override
-    public List<CategoryDto> listCategories() {
-        return this.categoryRepository.listAll();
-    }
-
-    @Override
-    public Integer create(CategoryDto categoryDto) {
-        return this.categoryRepository.create(categoryDto.getName());
-    }
-
-    @Override
-    public Integer edit(CategoryDto categoryDto) {
-        return this.categoryRepository.edit(categoryDto.getId(), categoryDto.getName());
-    }
-
-    @Override
-    public void deleteById(Integer id) {
-        this.categoryRepository.deleteById(id);
-    }
-
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CityServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CityServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,36 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.CityDto;
-import mk.ukim.finki.db.distributorapp.model.dto.CityDtoRegister;
-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;
-
-@Service
-@RequiredArgsConstructor
-public class CityServiceImpl implements CityService {
-    private final CityRepository cityRepository;
-
-    @Override
-    public List<CityDtoRegister> findAllCityDtos() {
-        return this.cityRepository.findAllCityDtos();
-    }
-
-    @Override
-    public Integer create(CityDto dto) {
-        return this.cityRepository.create(dto.getName(), dto.getRegionId());
-    }
-
-    @Override
-    public Integer edit(CityDto dto) {
-        return this.cityRepository.edit(dto.getId(), dto.getName(), dto.getRegionId());
-    }
-
-    @Override
-    public void deleteById(Integer id) {
-        this.cityRepository.deleteById(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,44 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
-import mk.ukim.finki.db.distributorapp.repository.CustomerRepository;
-import mk.ukim.finki.db.distributorapp.service.CustomerService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class CustomerServiceImpl implements CustomerService {
-
-    private final CustomerRepository customerRepository;
-
-    @Override
-    public CustomerDto findCustomerById(Long id) {
-        return this.customerRepository.findCustomerById(id);
-    }
-
-    @Override
-    public Integer create(CustomerDto customerDto) {
-        return this.customerRepository.create(
-                customerDto.getId(),
-                customerDto.getEdb(),
-                customerDto.getCompName(),
-                customerDto.getAddress(),
-                customerDto.getRepImage());
-    }
-
-    @Override
-    public Integer edit(CustomerDto customerDto) {
-        return this.customerRepository.edit(
-                customerDto.getId(),
-                customerDto.getEdb(),
-                customerDto.getCompName(),
-                customerDto.getAddress(),
-                customerDto.getRepImage());
-    }
-
-    @Override
-    public void deleteById(Long id) {
-        this.customerRepository.delete(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerWeekdayServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerWeekdayServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,43 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.CustomerWeekdayDto;
-import mk.ukim.finki.db.distributorapp.model.entities.CustomerWeekday;
-import mk.ukim.finki.db.distributorapp.repository.CustomerWeekdayRepository;
-import mk.ukim.finki.db.distributorapp.service.CustomerWeekdayService;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class CustomerWeekdayServiceImpl implements CustomerWeekdayService {
-    private final CustomerWeekdayRepository customerWeekdayRepository;
-
-    @Override
-    public Integer create(CustomerWeekdayDto customerWeekdayDto) {
-        return this.customerWeekdayRepository.create(
-                customerWeekdayDto.getCustomerId(),
-                customerWeekdayDto.getDayId(),
-                customerWeekdayDto.getDayStartTime(),
-                customerWeekdayDto.getDayEndTime()
-        );
-    }
-
-    @Override
-    public Integer edit(CustomerWeekdayDto customerWeekdayDto) {
-        return this.customerWeekdayRepository.edit(
-                customerWeekdayDto.getCustomerId(),
-                customerWeekdayDto.getCustomerId(),
-                customerWeekdayDto.getDayId(),
-                customerWeekdayDto.getDayStartTime(),
-                customerWeekdayDto.getDayEndTime()
-        );
-    }
-
-    @Override
-    public void deleteById(Long customerWeekdayId) {
-        this.customerWeekdayRepository.deleteById(customerWeekdayId);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,74 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryCreateDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryFullDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliverySimpleDto;
-import mk.ukim.finki.db.distributorapp.repository.DeliveryRepository;
-import mk.ukim.finki.db.distributorapp.service.DeliveryService;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class DeliveryServiceImpl implements DeliveryService {
-    private final DeliveryRepository deliveryRepository;
-
-    @Override
-    public DeliveryFullDto findDeliveryById(Long id) {
-        return this.deliveryRepository.findDeliveryDtoById(id);
-    }
-
-    @Override
-    public Integer create(DeliveryCreateDto deliveryDto) {
-        Date currentDate = new Date();
-        return this.deliveryRepository.create(
-                currentDate,
-                deliveryDto.getDelDate(),
-                null,
-                null,
-                null,
-                null,
-                (short) 1,
-                deliveryDto.getVehId()
-        );
-    }
-
-    @Override
-    public Integer edit(DeliveryFullDto deliveryDto) {
-        return this.deliveryRepository.edit(
-                deliveryDto.getDelId(),
-                deliveryDto.getDelDateCreated(),
-                deliveryDto.getDelDate(),
-                deliveryDto.getDelStartKm(),
-                deliveryDto.getDelEndKm(),
-                deliveryDto.getParsedDelStartTime(),
-                deliveryDto.getParsedDelEndTime(),
-                deliveryDto.getDelStatusId(),
-                deliveryDto.getVeh_id()
-        );
-    }
-
-    @Override
-    public void deleteById(Long del_id) {
-        this.deliveryRepository.delete(del_id);
-    }
-
-    @Override
-    public List<DeliveryDto> getCurrentDeliveriesByCustomer(Long customerId) {
-        return this.deliveryRepository.getCurrentDeliveriesByCustomer(customerId);
-    }
-
-    @Override
-    public List<DeliveryDto> getCurrentDeliveriesByManager(Long managerId) {
-        return this.deliveryRepository.getCurrentDeliveriesByManager(managerId);
-    }
-
-    @Override
-    public List<DeliverySimpleDto> getDeliveriesByVehicle(Integer vehicleId) {
-        return this.deliveryRepository.getDeliveriesByVehicle(vehicleId);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DeliveryStatusServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryStatusDto;
-import mk.ukim.finki.db.distributorapp.repository.DeliveryStatusRepository;
-import mk.ukim.finki.db.distributorapp.service.DeliveryStatusService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class DeliveryStatusServiceImpl implements DeliveryStatusService {
-    private final DeliveryStatusRepository deliveryStatusRepository;
-
-    @Override
-    public Integer create(DeliveryStatusDto deliveryStatusDto) {
-        return this.deliveryStatusRepository.create(
-                deliveryStatusDto.getStatusName(),
-                deliveryStatusDto.getStatusDescription());
-    }
-
-    @Override
-    public Integer edit(DeliveryStatusDto deliveryStatusDto) {
-        return this.deliveryStatusRepository.edit(
-                deliveryStatusDto.getId(),
-                deliveryStatusDto.getStatusName(),
-                deliveryStatusDto.getStatusDescription());
-    }
-
-    @Override
-    public void deleteById(Short id) {
-        this.deliveryStatusRepository.delete(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DriverServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/DriverServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,84 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.*;
-import mk.ukim.finki.db.distributorapp.repository.DriverRepository;
-import mk.ukim.finki.db.distributorapp.service.DeliveryService;
-import mk.ukim.finki.db.distributorapp.service.DriverService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class DriverServiceImpl implements DriverService {
-    private final DriverRepository driverRepository;
-    private final DeliveryService deliveryService;
-
-    @Override
-    public DriverDto findById(Long id) {
-        return this.driverRepository.findDriverById(id);
-    }
-
-    @Override
-    public Integer create(DriverDto driverDto) {
-        return this.driverRepository.create(
-                driverDto.getId(),
-                driverDto.getVehId());
-    }
-
-    @Override
-    public Integer edit(DriverDto driverDto) {
-        return this.driverRepository.edit(
-                driverDto.getId(),
-                driverDto.getVehId()
-        );
-    }
-
-    @Override
-    public void deleteById(Long id) {
-        this.driverRepository.deleteById(id);
-    }
-
-    @Override
-    public List<DeliverySimpleDto> getNewAssignedDeliveries(Long driverId) {
-        return this.driverRepository.activeAssignedDeliveries(driverId);
-    }
-
-    @Override
-    public List<DeliverySimpleDto> getFinishedAssignedDeliveries(Long driverId) {
-        return this.driverRepository.finishedAssignedDeliveries(driverId);
-    }
-
-    @Override
-    public List<DeliverySimpleDto> getOngoingDeliveries(Long driverId) {
-        return this.driverRepository.getOngoingDeliveries(driverId);
-    }
-
-    @Override
-    @Transactional
-    public void startDelivery(DeliveryStartDto delivery) {
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
-
-        DeliveryFullDto deliveryDto = this.deliveryService.findDeliveryById(delivery.getId());
-        deliveryDto.setDelStartKm(delivery.getDelStartKm());
-        deliveryDto.setDelStartTime(LocalTime.now().format(formatter));
-        deliveryDto.setDelStatusId((short)3);
-        this.deliveryService.edit(deliveryDto);
-    }
-
-    @Override
-    @Transactional
-    public void endDelivery(DeliveryEndDto delivery) {
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
-
-        DeliveryFullDto deliveryDto = this.deliveryService.findDeliveryById(delivery.getId());
-        deliveryDto.setDelEndKm(delivery.getDelEndKm());
-        deliveryDto.setDelEndTime(LocalTime.now().format(formatter));
-        deliveryDto.setDelStatusId((short)4);
-        this.deliveryService.edit(deliveryDto);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManagerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManagerServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,34 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.ManagerDto;
-import mk.ukim.finki.db.distributorapp.repository.ManagerRepository;
-import mk.ukim.finki.db.distributorapp.service.ManagerService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class ManagerServiceImpl implements ManagerService {
-    private final ManagerRepository managerRepository;
-
-    @Override
-    public Integer create(ManagerDto managerDto) {
-        return this.managerRepository.create(
-                managerDto.getId(),
-                managerDto.getWhId()
-        );
-    }
-
-    @Override
-    public Integer edit(ManagerDto managerDto) {
-        return this.managerRepository.edit(
-                managerDto.getId(),
-                managerDto.getWhId()
-        );
-    }
-
-    @Override
-    public void deleteById(Long id) {
-        this.managerRepository.delete(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManufacturerServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManufacturerServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,44 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.ManufacturerDto;
-import mk.ukim.finki.db.distributorapp.repository.ManufacturerRepository;
-import mk.ukim.finki.db.distributorapp.service.ManufacturerService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class ManufacturerServiceImpl implements ManufacturerService {
-    private final ManufacturerRepository manufacturerRepository;
-
-    @Override
-    public List<ManufacturerDto> getAllManufacturers() {
-        return this.manufacturerRepository.listAll();
-    }
-
-    @Override
-    public Integer create(ManufacturerDto manufacturerDto) {
-        return this.manufacturerRepository.create(
-                manufacturerDto.getName(),
-                manufacturerDto.getAddress(),
-                manufacturerDto.getPhone(),
-                manufacturerDto.getEmail());
-    }
-
-    @Override
-    public Integer edit(ManufacturerDto manufacturerDto) {
-        return this.manufacturerRepository.edit(
-                manufacturerDto.getId(),
-                manufacturerDto.getName(),
-                manufacturerDto.getAddress(),
-                manufacturerDto.getPhone(),
-                manufacturerDto.getEmail());
-    }
-
-    @Override
-    public void deleteById(Long id) {
-
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrderStatusServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,35 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.OrderStatusDto;
-import mk.ukim.finki.db.distributorapp.repository.OrderStatusRepository;
-import mk.ukim.finki.db.distributorapp.service.OrderStatusService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class OrderStatusServiceImpl implements OrderStatusService {
-    private final OrderStatusRepository orderStatusRepository;
-
-    @Override
-    public Integer create(OrderStatusDto orderStatusDto) {
-        return this.orderStatusRepository.create(
-                orderStatusDto.getStatusName(),
-                orderStatusDto.getStatusDescription()
-        );
-    }
-
-    @Override
-    public Integer edit(OrderStatusDto orderStatusDto) {
-        return this.orderStatusRepository.edit(
-                orderStatusDto.getId(),
-                orderStatusDto.getStatusName(),
-                orderStatusDto.getStatusDescription()
-        );
-    }
-
-    @Override
-    public void deleteById(Short id) {
-        this.orderStatusRepository.deleteById(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrdersServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrdersServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,128 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.*;
-import mk.ukim.finki.db.distributorapp.repository.OrdersRepository;
-import mk.ukim.finki.db.distributorapp.service.*;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.security.Principal;
-import java.time.LocalDate;
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class OrdersServiceImpl implements OrdersService {
-    private final OrdersRepository ordersRepository;
-    private final UsersService usersService;
-    private final CustomerService customerService;
-    private final ProFormaService proFormaService;
-
-    @Override
-    public List<OrderSimpleDto> findSimpleOrdersByCustomer(Long customerId){
-        return this.ordersRepository.findSimpleOrdersByCustomer(customerId);
-    }
-
-    @Override
-    public OrdersDto findById(Long id) {
-        return  this.ordersRepository.findOrderById(id);
-    }
-
-    @Override
-    @Transactional
-    public Integer create(CreateOrderDto createOrderDto, Principal principal) {
-        String userEmail = principal.getName();
-        UserDto user = this.usersService.findUserDtoByEmail(userEmail);
-        CustomerDto customer = this.customerService.findCustomerById(user.getId());
-
-        OrdersDto order = new OrdersDto();
-
-        if(createOrderDto.isProForma()){
-            ProFormaDto pf = new ProFormaDto();
-            pf.setPfDeadline(LocalDate.now().plusWeeks(1));
-            pf.setPfDateCreated(LocalDate.now());
-            pf.setStatusId((short)1);
-            this.proFormaService.create(pf);
-            List<ProFormaDto> proFormaList = this.proFormaService.getAllProForma();
-            ProFormaDto createdProForma = proFormaList.get(proFormaList.size()-1);
-            order.setPfId(createdProForma.getId());
-        }
-
-        order.setCustomerId(customer.getId());
-        order.setOrdDate(LocalDate.now());
-        order.setOrdFulfillmentDate(null);
-        order.setOStatusId((short) 1);
-        order.setDeliveryId(null);
-        order.setPfId(null);
-        order.setOrdComment(null);
-
-        Integer sum = createOrderDto.getOrderItems()
-                .stream()
-                .map(i->i.getUnitPrice().multiply(BigDecimal.valueOf(i.getQuantity())))
-                .reduce(BigDecimal.ZERO,BigDecimal::add)
-                .intValue();
-        order.setOrdSum(sum);
-
-        return this.ordersRepository.create(
-                order.getOrdDate(),
-                order.getOrdSum(),
-                order.getOrdFulfillmentDate(),
-                order.getOrdComment(),
-                order.getOStatusId(),
-                order.getCustomerId(),
-                order.getDeliveryId(),
-                order.getPfId()
-        );
-    }
-
-    @Override
-    public Integer edit(OrdersDto ordersDto) {
-        return this.ordersRepository.edit(
-                ordersDto.getId(),
-                ordersDto.getOrdDate(),
-                ordersDto.getOrdSum(),
-                ordersDto.getOrdFulfillmentDate(),
-                ordersDto.getOrdComment(),
-                ordersDto.getOStatusId(),
-                ordersDto.getCustomerId(),
-                ordersDto.getDeliveryId(),
-                ordersDto.getPfId()
-        );
-    }
-
-    @Override
-    public void deleteById(Long id) {
-        this.ordersRepository.deleteById(id);
-    }
-
-    @Override
-    public List<OrdersDto> findCurrentOrdersByCustomer(Long customerId) {
-        return this.ordersRepository.getCurrentOrdersByCustomer(customerId);
-    }
-
-    @Override
-    public List<OrderManagerDto> getNewOrdersByManager(Long managerId) {
-         return this.ordersRepository.getNewOrdersByManager(managerId);
-    }
-
-    @Override
-    public void addOrdersToDelivery(List<Long> orderIds, Long deliveryId) {
-        for(Long i : orderIds){
-            OrderSimpleDto order = this.ordersRepository.findSimpleOrdersById(i);
-            order.setDeliveryId(deliveryId);
-            this.ordersRepository.edit(
-                    order.getId(),
-                    order.getOrdDate().toLocalDate(),
-                    order.getOrdSum(),
-                    order.getOrdFulfillmentDate(),
-                    order.getOrdComment(),
-                    order.getOStatusId(),
-                    order.getCustomerId(),
-                    order.getDeliveryId(),
-                    order.getPfId()
-            );
-        }
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/PriceServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/PriceServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,37 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.PriceDto;
-import mk.ukim.finki.db.distributorapp.repository.PriceRepository;
-import mk.ukim.finki.db.distributorapp.service.PriceService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class PriceServiceImpl implements PriceService {
-    private final PriceRepository priceRepository;
-
-    @Override
-    public Integer create(PriceDto priceDto) {
-        return this.priceRepository.create(
-                priceDto.getPrice(),
-                priceDto.getDateEffective(),
-                priceDto.getArtId()
-        );
-    }
-
-    @Override
-    public Integer edit(PriceDto priceDto) {
-        return this.priceRepository.edit(
-                priceDto.getId(),
-                priceDto.getPrice(),
-                priceDto.getDateEffective(),
-                priceDto.getArtId()
-        );
-    }
-
-    @Override
-    public void deleteById(Integer id) {
-        this.priceRepository.delete(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,46 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.ProFormaDto;
-import mk.ukim.finki.db.distributorapp.repository.ProFormaRepository;
-import mk.ukim.finki.db.distributorapp.service.ProFormaService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class ProFormaServiceImpl implements ProFormaService {
-    private final ProFormaRepository proFormaRepository;
-
-    @Override
-    @Transactional
-    public List<ProFormaDto> getAllProForma() {
-        return this.proFormaRepository.listAll();
-    }
-
-    @Override
-    public Integer create(ProFormaDto proFormaDto) {
-        return this.proFormaRepository.create(
-                proFormaDto.getPfDeadline(),
-                proFormaDto.getPfDateCreated(),
-                proFormaDto.getStatusId()
-        );
-    }
-
-    @Override
-    public Integer edit(ProFormaDto proFormaDto) {
-        return this.proFormaRepository.edit(
-                proFormaDto.getId(),
-                proFormaDto.getPfDeadline(),
-                proFormaDto.getPfDateCreated(),
-                proFormaDto.getStatusId()
-        );
-    }
-
-    @Override
-    public void deleteById(Long id) {
-        this.proFormaRepository.deleteById(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaStatusServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaStatusServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,35 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.ProFormaStatusDto;
-import mk.ukim.finki.db.distributorapp.repository.ProFormaStatusRepository;
-import mk.ukim.finki.db.distributorapp.service.ProFormaStatusService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class ProFormaStatusServiceImpl implements ProFormaStatusService {
-    private final ProFormaStatusRepository proFormaStatusRepository;
-
-    @Override
-    public Integer create(ProFormaStatusDto proFormaStatusDto ) {
-        return this.proFormaStatusRepository.create(
-                proFormaStatusDto.getStatusName(),
-                proFormaStatusDto.getStatusDescription()
-        );
-    }
-
-    @Override
-    public Integer edit(ProFormaStatusDto proFormaStatusDto ) {
-        return this.proFormaStatusRepository.edit(
-                proFormaStatusDto.getId(),
-                proFormaStatusDto.getStatusName(),
-                proFormaStatusDto.getStatusDescription()
-        );
-    }
-
-    @Override
-    public void deleteById(Short id) {
-        this.proFormaStatusRepository.deleteById(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/RegionServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/RegionServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.RegionDto;
-import mk.ukim.finki.db.distributorapp.repository.RegionRepository;
-import mk.ukim.finki.db.distributorapp.service.RegionService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class RegionServiceImpl implements RegionService {
-    private final RegionRepository regionRepository;
-
-    @Override
-    public Integer create(RegionDto regionDto) {
-        return this.regionRepository.create(
-                regionDto.getName()
-        );
-    }
-
-    @Override
-    public Integer edit(RegionDto regionDto) {
-        return this.regionRepository.edit(
-                regionDto.getId(),
-                regionDto.getName()
-        );
-    }
-
-    @Override
-    public void deleteById(Integer id) {
-        this.regionRepository.deleteById(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,54 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.model.dto.UsersLoadingDto;
-import mk.ukim.finki.db.distributorapp.repository.UsersRepository;
-import mk.ukim.finki.db.distributorapp.service.UsersService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class UsersServiceImpl implements UsersService {
-
-    private final UsersRepository usersRepository;
-
-    @Override
-    public Integer edit(UserDto userDto) {
-        UsersLoadingDto user = this.usersRepository.findUsersByUserEmailIgnoreCaseDto(userDto.getEmail());
-        return this.usersRepository.edit(
-                userDto.getId(),
-                userDto.getFirstName(),
-                userDto.getLastName(),
-                user.getUserPassword(),
-                userDto.getEmail(),
-                userDto.getPhone(),
-                user.getUserSalt(),
-                userDto.getUserActive(),
-                userDto.getImage(),
-                userDto.getCityId(),
-                userDto.getRole(),
-                userDto.getClazz_()
-        );
-    }
-
-    @Override
-    public UsersLoadingDto findUserByResetToken(String token) {
-        return this.usersRepository.findUserByResetToken(token);
-    }
-
-    @Override
-    public UserDto findUserDtoByEmail(String userEmail) {
-        return this.usersRepository.findUserDtoByEmail(userEmail);
-    }
-
-    @Override
-    public UsersLoadingDto findFullUserDtoByEmail(String userEmail) {
-        return this.usersRepository.findUsersByUserEmailIgnoreCaseDto(userEmail);
-    }
-
-    @Override
-    public void deleteUserById(Long id) {
-        this.usersRepository.delete(id);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/VehicleServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/VehicleServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,64 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.VehicleBasicDto;
-import mk.ukim.finki.db.distributorapp.model.dto.VehicleDto;
-import mk.ukim.finki.db.distributorapp.repository.VehicleRepository;
-import mk.ukim.finki.db.distributorapp.service.VehicleService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class VehicleServiceImpl implements VehicleService {
-
-    private final VehicleRepository vehicleRepository;
-
-    @Override
-    public List<VehicleBasicDto> getVehiclesByWarehouse(Integer warehouseId) {
-        return this.vehicleRepository.findAllByWarehouseDto(warehouseId);
-    }
-
-    @Override
-    public Integer create(VehicleDto vehicleDto) {
-        return this.vehicleRepository.create(
-                vehicleDto.getCarryWeight(),
-                vehicleDto.getServiceInterval(),
-                vehicleDto.getKilometers(),
-                vehicleDto.getLastServiceDate(),
-                vehicleDto.getLastServiceKm(),
-                vehicleDto.getPlate(),
-                vehicleDto.getVin(),
-                vehicleDto.getRegistrationDate(),
-                vehicleDto.getWhId());
-    }
-
-    @Override
-    public Integer edit(VehicleDto vehicleDto) {
-
-        return this.vehicleRepository.edit(
-                vehicleDto.getId(),
-                vehicleDto.getCarryWeight(),
-                vehicleDto.getServiceInterval(),
-                vehicleDto.getKilometers(),
-                vehicleDto.getLastServiceDate(),
-                vehicleDto.getLastServiceKm(),
-                vehicleDto.getPlate(),
-                vehicleDto.getVin(),
-                vehicleDto.getRegistrationDate(),
-                vehicleDto.getWhId()
-        );
-    }
-
-    @Override
-    public void deleteById(Integer id) {
-        this.vehicleRepository.delete(id);
-    }
-    //------------------------------------------------------------------------------------------------------------------
-
-    @Override
-    public List<VehicleDto> getVehiclesByManager(Long managerId) {
-        return this.vehicleRepository.getVehiclesByManager(managerId);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WarehouseServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WarehouseServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,62 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.WarehouseDto;
-import mk.ukim.finki.db.distributorapp.model.dto.WarehouseInventoryDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Warehouse;
-import mk.ukim.finki.db.distributorapp.repository.WarehouseRepository;
-import mk.ukim.finki.db.distributorapp.service.WarehouseService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class WarehouseServiceImpl implements WarehouseService {
-    private final WarehouseRepository warehouseRepository;
-
-    @Override
-    public WarehouseDto findById(Integer id) {
-        Warehouse wh = this.warehouseRepository.findById(id).get();
-        return new WarehouseDto(
-                wh.getWarehouseId(),
-                wh.getWarehouseAddress(),
-                wh.getCity().getCityId(),
-                wh.getCity().getCityName(),
-                wh.getCity().getRegion().getRegionId(),
-                wh.getCity().getRegion().getRegionName()
-        );
-    }
-
-    @Override
-    public WarehouseDto findByCityId(Integer id) {
-        return this.warehouseRepository.findWarehouseDtoByCityId(id);
-    }
-
-    @Override
-    public Integer create(WarehouseDto warehouseDto) {
-        return this.warehouseRepository.create(
-                warehouseDto.getAddress(),
-                warehouseDto.getCityId()
-        );
-    }
-
-    @Override
-    public Integer edit(WarehouseDto warehouseDto) {
-        return this.warehouseRepository.edit(
-                warehouseDto.getId(),
-                warehouseDto.getAddress(),
-                warehouseDto.getCityId()
-        );
-    }
-
-    @Override
-    public void deleteById(Integer id) {
-        this.warehouseRepository.findById(id);
-    }
-
-    @Override
-    public List<WarehouseInventoryDto> getInventoryByManager(Long managerId) {
-        return this.warehouseRepository.getInventoryByManager(managerId);
-    }
-}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WeekdayServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/WeekdayServiceImpl.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.db.distributorapp.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.WeekdayDto;
-import mk.ukim.finki.db.distributorapp.repository.WeekdayRepository;
-import mk.ukim.finki.db.distributorapp.service.WeekdayService;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class WeekdayServiceImpl implements WeekdayService {
-    private final WeekdayRepository weekdayRepository;
-
-    @Override
-    public Integer create(WeekdayDto weekdayDto) {
-        return this.weekdayRepository.create(
-                weekdayDto.getDayName()
-        );
-    }
-
-    @Override
-    public Integer edit(WeekdayDto weekdayDto) {
-        return this.weekdayRepository.edit(
-                weekdayDto.getId(),
-                weekdayDto.getDayName()
-        );
-    }
-
-    @Override
-    public void deleteById(Short id) {
-        this.weekdayRepository.deleteById(id);
-    }
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/token/Token.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/token/Token.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/token/Token.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,50 @@
+package mk.ukim.finki.db.distributorapp.token;
+
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.db.distributorapp.users.Users;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "token")
+public class Token {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "t_id")
+    private Long tokenId;
+
+    @Column(name = "t_value", unique = true, nullable = false)
+    private String tokenValue;
+
+    @Column(name = "t_date")
+    private LocalDateTime createdDate;
+
+    @Enumerated(EnumType.STRING)
+    @Column(name = "t_type")
+    private TokenType tokenType;
+
+    @Column(name = "t_expiry")
+    private LocalDateTime tokenExpiryDate;
+
+    @Column(name = "t_validated_at")
+    private LocalDateTime tokenValidatedAt;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "t_user", referencedColumnName = "user_id", nullable = false, unique = true)
+    private Users user;
+
+    public Token(Users user, TokenType tokenType) {
+        this.user = user;
+        this.tokenType = tokenType;
+        this.createdDate = LocalDateTime.now();
+        this.tokenValue = UUID.randomUUID().toString();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/token/TokenRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/token/TokenRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/token/TokenRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,58 @@
+package mk.ukim.finki.db.distributorapp.token;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.token.dto.TokenDto;
+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.time.LocalDateTime;
+
+public interface TokenRepository extends JpaRepository<Token, Long> {
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select
+                    from token
+                    where t_value = ?1
+                    """
+    )
+    TokenDto findTokenByValue(@NonNull String token);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = """
+                    insert into token(t_value, t_type, t_expiry, t_user)
+                    values (:value, :type, :expiry, :user)
+                    """
+    )
+    Integer create(
+            @NonNull @Param("value") String t_value,
+            @NonNull @Param("expiry") LocalDateTime t_expiry,
+            @NonNull @Param("user") Long user_id,
+            @NonNull @Param("type") String t_type
+    );
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = """
+                    update token
+                    set t_expiry = :expiry, t_user = :user, t_value = :value, t_type = :type, t_validated_at = :validated_at
+                    where t_id = :id
+                    """
+    )
+    Integer edit(
+            @NonNull @Param("id") Long t_id,
+            @NonNull @Param("value") String t_value,
+            @NonNull @Param("expiry") LocalDateTime t_expiry,
+            @NonNull @Param("user") Long user_id,
+            @NonNull @Param("validated_at") LocalDateTime validated_at,
+            @NonNull @Param("type") String t_type
+    );
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/token/TokenType.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/token/TokenType.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/token/TokenType.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,5 @@
+package mk.ukim.finki.db.distributorapp.token;
+
+public enum TokenType {
+    TOKEN_VERIFICATION, TOKEN_RESET
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/token/dto/TokenDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/token/dto/TokenDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/token/dto/TokenDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,20 @@
+package mk.ukim.finki.db.distributorapp.token.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TokenDto {
+    Long t_id;
+    String t_value;
+    LocalDateTime t_date;
+    String t_type;
+    LocalDateTime t_expiry;
+    LocalDateTime t_validated_at;
+    Long user_id;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPrice.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPrice.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPrice.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,25 @@
+package mk.ukim.finki.db.distributorapp.unitPrice;
+
+import jakarta.persistence.*;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.articleUnit.ArticleUnit;
+import mk.ukim.finki.db.distributorapp.price.Price;
+
+@Data
+@Entity
+@Table(name = "unit_price", schema = "IND0_185022")
+public class UnitPrice {
+    @EmbeddedId
+    private UnitPriceId id;
+
+    @MapsId("unitId")
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "unit_id", nullable = false)
+    private ArticleUnit unit;
+
+    @MapsId("priceId")
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "price_id", nullable = false)
+    private Price price;
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPriceId.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPriceId.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPriceId.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.unitPrice;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@Embeddable
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode
+public class UnitPriceId implements Serializable {
+    @Column(name = "unit_id", nullable = false)
+    private Long unitId;
+    @Column(name = "price_id", nullable = false)
+    private Long priceId;
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPriceRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPriceRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/UnitPriceRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,24 @@
+package mk.ukim.finki.db.distributorapp.unitPrice;
+
+import lombok.NonNull;
+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;
+
+public interface UnitPriceRepository extends JpaRepository<UnitPrice, UnitPriceId> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = """
+                    insert into unit_price(unit_id, price_id)
+                    values (:unitId, :priceId)
+                    """
+    )
+    Integer create(
+            @Param("unitId") @NonNull Long unitId,
+            @Param("priceId") @NonNull Long priceId
+    );
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/dto/UnitPriceDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/dto/UnitPriceDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/unitPrice/dto/UnitPriceDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.db.distributorapp.unitPrice.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class UnitPriceDto {
+    private Long unitId;
+    private Long priceId;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/users/Role.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/users/Role.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/users/Role.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.users;
+
+import org.springframework.security.core.GrantedAuthority;
+
+public enum Role implements GrantedAuthority {
+    ROLE_CUSTOMER, ROLE_MANAGER, ROLE_DRIVER, ROLE_ADMIN;
+
+    @Override
+    public String getAuthority() {
+        return "";
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/users/Users.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/users/Users.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/users/Users.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,140 @@
+package mk.ukim.finki.db.distributorapp.users;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.db.distributorapp.city.City;
+import mk.ukim.finki.db.distributorapp.users.dto.UsersLoadingDto;
+import mk.ukim.finki.db.distributorapp.token.Token;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+@Inheritance(strategy = InheritanceType.JOINED)
+@DiscriminatorColumn(
+        name = "clazz_",
+        discriminatorType = DiscriminatorType.STRING
+)
+@Data
+@Table(name = "users")
+public class Users implements UserDetails {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "user_id")
+    private Long userId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "user_name", nullable = false)
+    private String userName;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "user_surname", nullable = false)
+    private String userSurname;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "user_pass", nullable = false)
+    private String userPassword;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "user_email", nullable = false)
+    private String userEmail;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "user_mobile", nullable = false)
+    private String userMobile;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "user_salt", nullable = false)
+    private String userSalt;
+
+    @NotNull
+    @Column(name = "user_active", nullable = false)
+    private Boolean userActive;
+
+    @Size(max = 255)
+    @Column(name = "user_image")
+    private String userImage;
+
+    @Enumerated(EnumType.STRING)
+    @Column(name = "user_role")
+    private Role userRole;
+
+    @OneToMany(mappedBy = "user")
+    private List<Token> tokens;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "city_id", nullable = false)
+    private City city;
+
+    @Column(name = "clazz_", insertable = false, updatable = false)
+    private String clazz_;
+
+    public Users(UsersLoadingDto dto) {
+        this.userRole = Role.valueOf(dto.getUserRole());
+        this.userId = dto.getUserId();
+        this.userName = dto.getUserName();
+        this.userSurname = dto.getUserSurname();
+        this.userPassword = dto.getUserPassword();
+        this.userEmail = dto.getUserEmail();
+        this.userMobile = dto.getUserMobile();
+        this.userSalt = dto.getUserSalt();
+        this.userActive = dto.getUserActive();
+        this.userImage = dto.getUserImage();
+        this.tokens = null;
+        this.city = null;
+    }
+
+    @Override
+    public String getUsername() {
+        return userEmail;
+    }
+
+    @Override
+    public String getPassword() {
+        return userPassword;
+    }
+
+    @Override
+    public Collection<? extends GrantedAuthority> getAuthorities() {
+        List<GrantedAuthority> authorities = new ArrayList<>();
+        authorities.add(new SimpleGrantedAuthority(this.getUserRole().name()));
+        return authorities;
+    }
+
+    @Override
+    public boolean isAccountNonExpired() {
+        return true;
+    }
+
+    @Override
+    public boolean isAccountNonLocked() {
+        return true;
+    }
+
+    @Override
+    public boolean isCredentialsNonExpired() {
+        return true;
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return userActive;
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,126 @@
+package mk.ukim.finki.db.distributorapp.users;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UsersLoadingDto;
+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;
+
+public interface UsersRepository extends JpaRepository<Users, Long> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into users(user_name,user_surname,user_pass,user_salt,user_email,user_mobile,user_active,user_image,city_id,user_role,clazz_) " +
+                    "values (:name,:sur,:pass,:salt,:email,:mob,:active,:img,:cty,:role,:clazz_)"
+    )
+    Integer create(
+            @NonNull @Param("name") String name,
+            @NonNull @Param("sur") String surname,
+            @NonNull @Param("pass") String password,
+            @NonNull @Param("email") String email,
+            @NonNull @Param("mob") String mobile,
+            @NonNull @Param("salt") String salt,
+            @NonNull @Param("active") Boolean active,
+            @Param("img") String image,
+            @NonNull @Param("cty") Integer city_id,
+            @NonNull @Param("role") String role,
+            @NonNull @Param("clazz_") String clazz_);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update users " +
+                    "set user_name=:name,user_surname=:sur,user_pass=:pass,user_email=:email,user_mobile=:mob,user_salt=:salt,user_active=:active,user_image=:img,city_id=:cty,user_role=:role,clazz_=:clazz_ " +
+                    "where user_id=:id"
+    )
+    Integer edit(
+            @NonNull @Param("id") Long id,
+            @NonNull @Param("name") String name,
+            @NonNull @Param("sur") String surname,
+            @NonNull @Param("pass") String password,
+            @NonNull @Param("email") String email,
+            @NonNull @Param("mob") String mobile,
+            @NonNull @Param("salt") String salt,
+            @NonNull @Param("active") Boolean active,
+            @NonNull @Param("img") String image,
+            @NonNull @Param("cty") Integer city_id,
+            @NonNull @Param("role") String role,
+            @NonNull @Param("clazz_") String clazz_);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from users where user_id=:id"
+    )
+    void delete(@NonNull @Param("id") Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select user_id as userId,
+                           user_name as userName,
+                           user_surname as userSurname,
+                           user_pass as userPassword,
+                           user_email as userEmail,
+                           user_mobile as userMobile,
+                           user_salt as userSalt,
+                           user_active as userActive,
+                           user_image as userImage,
+                           user_role as userRole,
+                           clazz_
+                    from users
+                    where user_email = ?1
+                    """
+    )
+    UsersLoadingDto findUsersByUserEmailIgnoreCaseDto(String email);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select u.user_id as id,
+                           u.user_name as firstName,
+                           u.user_surname as lastName,
+                           u.user_email as email,
+                           u.user_mobile as phone,
+                           u.user_image as image,
+                           u.city_id as cityId,
+                           c.city_name as cityName,
+                           r.region_name as regionName,
+                           u.user_role as role,
+                           clazz_ as clazz_,
+                           u.user_active as userActive
+                    from users u
+                    join city c on u.city_id = c.city_id
+                    join region r on c.region_id = r.region_id
+                    where user_email = ?1
+                    """
+    )
+    UserDto findUserDtoByEmail(String userEmail);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select u.user_id as userId,
+                           u.user_name as userName,
+                           u.user_surname as userSurname,
+                           u.user_pass as userPassword,
+                           u.user_email as userEmail,
+                           u.user_mobile as userMobile,
+                           u.user_salt as userSalt,
+                           u.user_active as userActive,
+                           u.user_image as userImage,
+                           u.user_role as userRole,
+                           u.clazz_ as clazz_
+                    from users u
+                    join token t on u.user_id=t.t_user
+                    where t.t_value = :token
+                    """
+    )
+    UsersLoadingDto findUserByResetToken(@NonNull @Param("token") String token);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,16 @@
+package mk.ukim.finki.db.distributorapp.users;
+
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UsersLoadingDto;
+
+public interface UsersService {
+    Integer edit(UserDto userDto);
+
+    void deleteUserById(Long id);
+
+    UsersLoadingDto findUserByResetToken(String token);
+
+    UserDto findUserDtoByEmail(String userEmail);
+
+    UsersLoadingDto findFullUserDtoByEmail(String userEmail);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/users/UsersServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,52 @@
+package mk.ukim.finki.db.distributorapp.users;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UsersLoadingDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class UsersServiceImpl implements UsersService {
+
+    private final UsersRepository usersRepository;
+
+    @Override
+    public Integer edit(UserDto userDto) {
+        UsersLoadingDto user = this.usersRepository.findUsersByUserEmailIgnoreCaseDto(userDto.getEmail());
+        return this.usersRepository.edit(
+                userDto.getId(),
+                userDto.getFirstName(),
+                userDto.getLastName(),
+                user.getUserPassword(),
+                userDto.getEmail(),
+                userDto.getPhone(),
+                user.getUserSalt(),
+                userDto.getUserActive(),
+                userDto.getImage(),
+                userDto.getCityId(),
+                userDto.getRole(),
+                userDto.getClazz_()
+        );
+    }
+
+    @Override
+    public UsersLoadingDto findUserByResetToken(String token) {
+        return this.usersRepository.findUserByResetToken(token);
+    }
+
+    @Override
+    public UserDto findUserDtoByEmail(String userEmail) {
+        return this.usersRepository.findUserDtoByEmail(userEmail);
+    }
+
+    @Override
+    public UsersLoadingDto findFullUserDtoByEmail(String userEmail) {
+        return this.usersRepository.findUsersByUserEmailIgnoreCaseDto(userEmail);
+    }
+
+    @Override
+    public void deleteUserById(Long id) {
+        this.usersRepository.delete(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/users/dto/UserDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/users/dto/UserDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/users/dto/UserDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.users.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserDto {
+    private Long id;
+    private String firstName;
+    private String lastName;
+    private String email;
+    private String phone;
+    private String image;
+    private Integer cityId;
+    private String cityName;
+    private String regionName;
+    private String role;
+    private String clazz_;
+    Boolean userActive;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/users/dto/UsersLoadingDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/users/dto/UsersLoadingDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/users/dto/UsersLoadingDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,20 @@
+package mk.ukim.finki.db.distributorapp.users.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class UsersLoadingDto {
+    Long userId;
+    String userName;
+    String userSurname;
+    String userPassword;
+    String userEmail;
+    String userMobile;
+    String userSalt;
+    Boolean userActive;
+    String userImage;
+    String userRole;
+    String clazz_;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/Vehicle.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/Vehicle.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/Vehicle.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,65 @@
+package mk.ukim.finki.db.distributorapp.vehicle;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.delivery.Delivery;
+import mk.ukim.finki.db.distributorapp.driver.Driver;
+import mk.ukim.finki.db.distributorapp.warehouse.Warehouse;
+
+import java.util.Date;
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "vehicle")
+public class Vehicle {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "veh_id")
+    private Integer vehicleId;
+
+    @NotNull
+    @Column(name = "veh_carry_weight", nullable = false)
+    private Integer vehicleCarryWeight;
+
+    @NotNull
+    @Column(name = "veh_service_interval", nullable = false)
+    private Short vehicleServiceInterval;
+
+    @NotNull
+    @Column(name = "veh_kilometers", nullable = false)
+    private Integer vehicleKilometers;
+
+    @Column(name = "veh_last_service")
+    private Date vehicleLastService;
+
+    @Column(name = "veh_last_service_km")
+    private Integer vehicleLastServiceKm;
+
+    @Size(max = 8)
+    @NotNull
+    @Column(name = "veh_plate", nullable = false, length = 8)
+    private String vehiclePlate;
+
+    @Size(max = 17)
+    @NotNull
+    @Column(name = "veh_vin", nullable = false, length = 17)
+    private String vehicleVin;
+
+    @NotNull
+    @Column(name = "veh_reg", nullable = false)
+    private Date vehicleRegDate;
+
+    @NotNull
+    @ManyToOne(fetch = FetchType.LAZY, optional = false)
+    @JoinColumn(name = "wh_id", nullable = false)
+    private Warehouse warehouse;
+
+    @OneToOne(mappedBy = "vehicle")
+    private Driver driver;
+
+    @OneToMany(mappedBy = "vehicle")
+    private List<Delivery> deliveries;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,110 @@
+package mk.ukim.finki.db.distributorapp.vehicle;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleBasicDto;
+import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleDto;
+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.Date;
+import java.util.List;
+
+public interface VehicleRepository extends JpaRepository<Vehicle, Integer> {
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select veh_id as id,
+                           wh_id as warehouseId,
+                           veh_plate as plateNumber
+                    from vehicle
+                    where wh_id = ?1
+                    """
+    )
+    List<VehicleBasicDto> findAllByWarehouseDto(@NonNull Integer warehouseId);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into vehicle(veh_carry_weight, veh_service_interval, veh_kilometers, veh_last_service, veh_last_service_km, veh_plate, veh_vin, veh_reg, wh_id) " +
+                    "values (?1,?2,?3,?4,?5,?6,?7,?8,?9)"
+    )
+    Integer create(
+            @NonNull Integer vehicleCarryWeight,
+            @NonNull Short vehicleServiceInterval,
+            @NonNull Integer vehicleKilometers,
+            @NonNull Date vehicleLastService,
+            @NonNull Integer vehicleLastServiceKm,
+            @NonNull String vehiclePlate,
+            @NonNull String vehicleVIN,
+            @NonNull Date vehicleRegDate,
+            @NonNull Integer whId);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update vehicle " +
+                    "set veh_carry_weight=?2,veh_service_interval=?3,veh_kilometers=?4," +
+                    "veh_last_service=?5,veh_last_service_km=?6,veh_plate=?7,veh_vin=?8,veh_reg=?9,wh_id=?10 " +
+                    "where veh_id=?1"
+    )
+    Integer edit(
+            @NonNull Integer id,
+            @NonNull Integer vehicleCarryWeight,
+            @NonNull Short vehicleServiceInterval,
+            @NonNull Integer vehicleKilometers,
+            @NonNull Date vehicleLastService,
+            @NonNull Integer vehicleLastServiceKm,
+            @NonNull String vehiclePlate,
+            @NonNull String vehicleVIN,
+            @NonNull Date vehicleRegDate,
+            @NonNull Integer whId);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from vehicle where veh_id=?1"
+    )
+    void delete(@NonNull Integer id);
+
+    //----------------------------------------------------------------------------------------------------------------------
+    @Query(
+            nativeQuery = true,
+            value = """
+                     select v.veh_id as id,
+                            v.veh_carry_weight as carryWeight,
+                            v.veh_service_interval as serviceInterval,
+                            v.veh_kilometers as kilometers,
+                            v.veh_last_service as lastServiceDate,
+                            v.veh_last_service_km as lastServiceKm,
+                            v.veh_plate as plate,
+                            v.veh_vin as vin,
+                            v.veh_reg as registrationDate,
+                            w.wh_id as whId,
+                            c.city_name as city,
+                            r.region_name as region,
+                            d.user_id as driverId,
+                            u1.user_name as driverName,
+                            u1.user_email as driverEmail,
+                            u1.user_mobile as driverPhone,
+                            u1.user_image as driverImg
+                     from warehouse w
+                     join city c on w.city_id = c.city_id
+                     join region r on c.region_id = r.region_id
+                     join manager m on w.wh_id = m.wh_id
+                     join users u on m.user_id = u.user_id
+                     join vehicle v on w.wh_id=v.wh_id
+                     join driver d on d.veh_id=v.veh_id
+                     join users u1 on d.user_id=u1.user_id
+                     where m.user_id = :manager
+                     group by v.veh_id, v.veh_carry_weight, v.veh_service_interval, v.veh_kilometers, v.veh_last_service, v.veh_last_service_km, v.veh_plate, v.veh_vin, v.veh_reg, w.wh_id, c.city_name, r.region_name, d.user_id, u1.user_name, u1.user_email, u1.user_mobile, u1.user_image
+                     order by v.veh_reg
+                    """
+    )
+    List<VehicleDto> getVehiclesByManager(@NonNull @Param("manager") Long managerId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,19 @@
+package mk.ukim.finki.db.distributorapp.vehicle;
+
+import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleBasicDto;
+import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleDto;
+
+import java.util.List;
+
+public interface VehicleService {
+
+    List<VehicleBasicDto> getVehiclesByWarehouse(Integer warehouseId);
+
+    Integer create(VehicleDto vehicleDto);
+
+    Integer edit(VehicleDto vehicleDto);
+
+    void deleteById(Integer id);
+
+    List<VehicleDto> getVehiclesByManager(Long managerId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/VehicleServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,62 @@
+package mk.ukim.finki.db.distributorapp.vehicle;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleBasicDto;
+import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleDto;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class VehicleServiceImpl implements VehicleService {
+
+    private final VehicleRepository vehicleRepository;
+
+    @Override
+    public List<VehicleBasicDto> getVehiclesByWarehouse(Integer warehouseId) {
+        return this.vehicleRepository.findAllByWarehouseDto(warehouseId);
+    }
+
+    @Override
+    public Integer create(VehicleDto vehicleDto) {
+        return this.vehicleRepository.create(
+                vehicleDto.getCarryWeight(),
+                vehicleDto.getServiceInterval(),
+                vehicleDto.getKilometers(),
+                vehicleDto.getLastServiceDate(),
+                vehicleDto.getLastServiceKm(),
+                vehicleDto.getPlate(),
+                vehicleDto.getVin(),
+                vehicleDto.getRegistrationDate(),
+                vehicleDto.getWhId());
+    }
+
+    @Override
+    public Integer edit(VehicleDto vehicleDto) {
+
+        return this.vehicleRepository.edit(
+                vehicleDto.getId(),
+                vehicleDto.getCarryWeight(),
+                vehicleDto.getServiceInterval(),
+                vehicleDto.getKilometers(),
+                vehicleDto.getLastServiceDate(),
+                vehicleDto.getLastServiceKm(),
+                vehicleDto.getPlate(),
+                vehicleDto.getVin(),
+                vehicleDto.getRegistrationDate(),
+                vehicleDto.getWhId()
+        );
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        this.vehicleRepository.delete(id);
+    }
+    //------------------------------------------------------------------------------------------------------------------
+
+    @Override
+    public List<VehicleDto> getVehiclesByManager(Long managerId) {
+        return this.vehicleRepository.getVehiclesByManager(managerId);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/dto/VehicleBasicDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/dto/VehicleBasicDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/dto/VehicleBasicDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.vehicle.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class VehicleBasicDto {
+    private Integer id;
+    private Integer warehouseId;
+    private String plateNumber;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/dto/VehicleDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/dto/VehicleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/vehicle/dto/VehicleDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,28 @@
+package mk.ukim.finki.db.distributorapp.vehicle.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+public class VehicleDto {
+    private Integer id;
+    private Integer carryWeight;
+    private Short serviceInterval;
+    private Integer kilometers;
+    private Date lastServiceDate;
+    private Integer lastServiceKm;
+    private String plate;
+    private String vin;
+    private Date registrationDate;
+    private Integer whId;
+    private String city;
+    private String region;
+    private Long driverId;
+    private String driverName;
+    private String driverEmail;
+    private String driverPhone;
+    private String driverImg;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/Warehouse.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/Warehouse.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/Warehouse.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,40 @@
+package mk.ukim.finki.db.distributorapp.warehouse;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.articleUnit.ArticleUnit;
+import mk.ukim.finki.db.distributorapp.city.City;
+import mk.ukim.finki.db.distributorapp.manager.Manager;
+import mk.ukim.finki.db.distributorapp.vehicle.Vehicle;
+
+import java.util.List;
+
+@Entity
+@Data
+@Table(name = "warehouse")
+public class Warehouse {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "wh_id")
+    private Integer warehouseId;
+
+    @Size(max = 255)
+    @NotNull
+    @Column(name = "wh_adr", nullable = false)
+    private String warehouseAddress;
+
+    @OneToOne
+    @JoinColumn(name = "city_id", unique = true, nullable = false)
+    private City city;
+
+    @OneToOne(mappedBy = "warehouse")
+    private Manager manager;
+
+    @OneToMany(mappedBy = "warehouse")
+    private List<Vehicle> vehicles;
+
+    @OneToMany(mappedBy = "warehouse")
+    private List<ArticleUnit> articleUnits;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,89 @@
+package mk.ukim.finki.db.distributorapp.warehouse;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseDto;
+import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseInventoryDto;
+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;
+
+public interface WarehouseRepository extends JpaRepository<Warehouse, Integer> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into warehouse(wh_adr, city_id) " +
+                    "values (?1,?2)"
+    )
+    Integer create(
+            @NonNull String whAddress,
+            @NonNull Integer city);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update warehouse " +
+                    "set wh_adr = ?2,city_id = ?3 " +
+                    "where wh_id = ?1"
+    )
+    Integer edit(
+            @NonNull Integer id,
+            @NonNull String whAddress,
+            @NonNull Integer city);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from warehouse where wh_id = ?1"
+    )
+    void delete(@NonNull Integer id);
+    //-------------------------------------------------------------------------------------------------------------------
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select a.art_name as articleName,
+                           man.man_name as manufacturerName,
+                           count(au.unit_id) as totalUnits
+                    from warehouse w
+                        join manager m on m.wh_id = w.wh_id
+                        join article_unit au on au.wh_id = w.wh_id
+                        join unit_price up on au.unit_id = up.unit_id
+                        join price p on p.price_id=up.price_id
+                        join article a on p.art_id=a.art_id
+                        join manufacturer man on a.man_id = man.man_id
+                    where m.user_id = :manager
+                    group by a.art_name, man.man_name
+                    order by totalUnits
+                    """
+    )
+    List<WarehouseInventoryDto> getInventoryByManager(@NonNull @Param("manager") Long manager_id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                     with reg as (
+                         select r.*
+                         from city c1 join region r on c1.region_id = r.region_id
+                         where c1.city_id = :city
+                     )
+                     select w.wh_id as id,
+                            w.wh_adr as address,
+                            c.city_id as cityId,
+                            c.city_name as cityName,
+                            r1.region_id as regionId,
+                            r1.region_name as regionName
+                     from warehouse w
+                     join city c on c.city_id = w.city_id
+                     join reg r1 on r1.region_id = c.region_id
+                     where c.region_id = r1.region_id
+                    """
+    )
+    WarehouseDto findWarehouseDtoByCityId(@NonNull @Param("city") Integer cityId);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.db.distributorapp.warehouse;
+
+import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseDto;
+import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseInventoryDto;
+
+import java.util.List;
+
+public interface WarehouseService {
+
+    WarehouseDto findById(Integer id);
+
+    WarehouseDto findByCityId(Integer id);
+
+    Integer create(WarehouseDto warehouseDto);
+
+    Integer edit(WarehouseDto warehouseDto);
+
+    void deleteById(Integer id);
+
+    List<WarehouseInventoryDto> getInventoryByManager(Long managerId);
+
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/WarehouseServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,59 @@
+package mk.ukim.finki.db.distributorapp.warehouse;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseDto;
+import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseInventoryDto;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class WarehouseServiceImpl implements WarehouseService {
+    private final WarehouseRepository warehouseRepository;
+
+    @Override
+    public WarehouseDto findById(Integer id) {
+        Warehouse wh = this.warehouseRepository.findById(id).get();
+        return new WarehouseDto(
+                wh.getWarehouseId(),
+                wh.getWarehouseAddress(),
+                wh.getCity().getCityId(),
+                wh.getCity().getCityName(),
+                wh.getCity().getRegion().getRegionId(),
+                wh.getCity().getRegion().getRegionName()
+        );
+    }
+
+    @Override
+    public WarehouseDto findByCityId(Integer id) {
+        return this.warehouseRepository.findWarehouseDtoByCityId(id);
+    }
+
+    @Override
+    public Integer create(WarehouseDto warehouseDto) {
+        return this.warehouseRepository.create(
+                warehouseDto.getAddress(),
+                warehouseDto.getCityId()
+        );
+    }
+
+    @Override
+    public Integer edit(WarehouseDto warehouseDto) {
+        return this.warehouseRepository.edit(
+                warehouseDto.getId(),
+                warehouseDto.getAddress(),
+                warehouseDto.getCityId()
+        );
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        this.warehouseRepository.findById(id);
+    }
+
+    @Override
+    public List<WarehouseInventoryDto> getInventoryByManager(Long managerId) {
+        return this.warehouseRepository.getInventoryByManager(managerId);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/dto/WarehouseDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/dto/WarehouseDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/dto/WarehouseDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,17 @@
+package mk.ukim.finki.db.distributorapp.warehouse.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WarehouseDto {
+    private Integer id;
+    private String address;
+    private Integer cityId;
+    private String cityName;
+    private Integer regionId;
+    private String regionName;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/dto/WarehouseInventoryDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/dto/WarehouseInventoryDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/warehouse/dto/WarehouseInventoryDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.warehouse.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class WarehouseInventoryDto {
+    String articleName;
+    String manufacturerName;
+    Long totalUnits;
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/AdminController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/AdminController.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/AdminController.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,7 +2,16 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.*;
+import mk.ukim.finki.db.distributorapp.city.dto.CityDtoRegister;
+import mk.ukim.finki.db.distributorapp.driver.dto.CreateDriverDto;
+import mk.ukim.finki.db.distributorapp.driver.dto.DriverDto;
+import mk.ukim.finki.db.distributorapp.manager.dto.CreateManagerDto;
 import mk.ukim.finki.db.distributorapp.security.auth.AuthService;
-import mk.ukim.finki.db.distributorapp.service.*;
+import mk.ukim.finki.db.distributorapp.city.CityService;
+import mk.ukim.finki.db.distributorapp.driver.DriverService;
+import mk.ukim.finki.db.distributorapp.vehicle.VehicleService;
+import mk.ukim.finki.db.distributorapp.warehouse.WarehouseService;
+import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleBasicDto;
+import mk.ukim.finki.db.distributorapp.vehicle.dto.VehicleDto;
+import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseDto;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -22,7 +31,6 @@
     private final VehicleService vehicleService;
 
-    @GetMapping({"/dashboard","/"})
-    public String getDashboard(Model model)
-    {
+    @GetMapping({"/dashboard", "/"})
+    public String getDashboard(Model model) {
         return "home/admin";
     }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerController.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerController.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -4,6 +4,24 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.*;
-import mk.ukim.finki.db.distributorapp.service.*;
+import mk.ukim.finki.db.distributorapp.article.ArticleService;
+import mk.ukim.finki.db.distributorapp.article.dto.ArticleDto;
+import mk.ukim.finki.db.distributorapp.articleUnit.ArticleUnitService;
+import mk.ukim.finki.db.distributorapp.articleUnit.dto.ArticleUnitDto;
+import mk.ukim.finki.db.distributorapp.articleUnit.dto.ArticleUnitSimpleDto;
+import mk.ukim.finki.db.distributorapp.category.CategoryService;
+import mk.ukim.finki.db.distributorapp.category.dto.CategoryDto;
+import mk.ukim.finki.db.distributorapp.customer.CustomerService;
+import mk.ukim.finki.db.distributorapp.customer.dto.CustomerDto;
+import mk.ukim.finki.db.distributorapp.delivery.DeliveryService;
+import mk.ukim.finki.db.distributorapp.manufacturer.ManufacturerService;
+import mk.ukim.finki.db.distributorapp.manufacturer.dto.ManufacturerDto;
+import mk.ukim.finki.db.distributorapp.order.OrdersService;
+import mk.ukim.finki.db.distributorapp.order.dto.CreateOrderDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderItemDto;
+import mk.ukim.finki.db.distributorapp.order.dto.OrderSimpleDto;
+import mk.ukim.finki.db.distributorapp.users.UsersService;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.warehouse.WarehouseService;
+import mk.ukim.finki.db.distributorapp.warehouse.dto.WarehouseDto;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/DriverController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/DriverController.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/DriverController.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,9 +2,9 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryEndDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryStartDto;
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.service.DriverService;
-import mk.ukim.finki.db.distributorapp.service.UsersService;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryEndDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryStartDto;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.driver.DriverService;
+import mk.ukim.finki.db.distributorapp.users.UsersService;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -23,5 +23,5 @@
     private final UsersService usersService;
 
-    @GetMapping({"/dashboard","/"})
+    @GetMapping({"/dashboard", "/"})
     public String dashboard(Model model) {
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/HomeController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/HomeController.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/HomeController.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,6 +2,6 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.service.UsersService;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.users.UsersService;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -13,5 +13,5 @@
 @Controller
 @RequiredArgsConstructor
-@RequestMapping({"/","/home"})
+@RequestMapping({"/", "/home"})
 public class HomeController {
     private final UsersService usersService;
@@ -27,5 +27,5 @@
 
         String userEmail = authentication.getName();
-        if(userEmail.equals("superuser@admin.com")) {
+        if (userEmail.equals("superuser@admin.com")) {
             return "redirect:/admin/dashboard";
         }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ManagerController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ManagerController.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/ManagerController.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -2,8 +2,12 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliveryCreateDto;
-import mk.ukim.finki.db.distributorapp.model.dto.DeliverySimpleDto;
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.service.*;
+import mk.ukim.finki.db.distributorapp.delivery.DeliveryService;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliveryCreateDto;
+import mk.ukim.finki.db.distributorapp.delivery.dto.DeliverySimpleDto;
+import mk.ukim.finki.db.distributorapp.order.OrdersService;
+import mk.ukim.finki.db.distributorapp.users.UsersService;
+import mk.ukim.finki.db.distributorapp.users.dto.UserDto;
+import mk.ukim.finki.db.distributorapp.vehicle.VehicleService;
+import mk.ukim.finki.db.distributorapp.warehouse.WarehouseService;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -27,5 +31,5 @@
     private final DeliveryService deliveryService;
 
-    @GetMapping({"/dashboard","/"})
+    @GetMapping({"/dashboard", "/"})
     public String dashboard(Model model) {
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
@@ -47,5 +51,5 @@
 
     @GetMapping("/create-delivery")
-    public String createDelivery(Model model){
+    public String createDelivery(Model model) {
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
         String userEmail = authentication.getName();
@@ -61,5 +65,5 @@
 
     @PostMapping("/create-delivery")
-    public String createDelivery(@ModelAttribute DeliveryCreateDto newDelivery){
+    public String createDelivery(@ModelAttribute DeliveryCreateDto newDelivery) {
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
         String userEmail = authentication.getName();
@@ -71,5 +75,5 @@
         DeliverySimpleDto createdDelivery = deliveries.get(0);
 
-        this.ordersService.addOrdersToDelivery(newDelivery.getOrders(),createdDelivery.getDeliveryId());
+        this.ordersService.addOrdersToDelivery(newDelivery.getOrders(), createdDelivery.getDeliveryId());
 
         return "redirect:/manager/dashboard";
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/WarehouseController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/WarehouseController.java	(revision 749b5214991c9095b77445ae1464759ca4e0957f)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/WarehouseController.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -9,5 +9,5 @@
 public class WarehouseController {
     @GetMapping("/create")
-    public String createWarehouse(){
+    public String createWarehouse() {
         return "create-warehouse";
     }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/Weekday.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/Weekday.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/Weekday.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,28 @@
+package mk.ukim.finki.db.distributorapp.weekday;
+
+import jakarta.persistence.*;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import mk.ukim.finki.db.distributorapp.customerWeekday.CustomerWeekday;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+@Data
+@Entity
+@Table(name = "weekday")
+public class Weekday {
+    @Id
+    @Column(name = "day_id", nullable = false)
+    private Short id;
+
+    @Size(max = 20)
+    @NotNull
+    @Column(name = "day_name", nullable = false, length = 20)
+    private String dayName;
+
+    @OneToMany(mappedBy = "day")
+    private Set<CustomerWeekday> customerWeekdays = new LinkedHashSet<>();
+
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayRepository.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,37 @@
+package mk.ukim.finki.db.distributorapp.weekday;
+
+import lombok.NonNull;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.transaction.annotation.Transactional;
+
+public interface WeekdayRepository extends JpaRepository<Weekday, Short> {
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "insert into weekday(day_id,day_name) " +
+                    "values (?1,?2)"
+    )
+    Integer create(@NonNull String dayName);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "update weekday " +
+                    "set day_name=?2 " +
+                    "where day_id=?1"
+    )
+    Integer edit(@NonNull Short id, @NonNull String dayName);
+
+    @Modifying
+    @Transactional
+    @Query(
+            nativeQuery = true,
+            value = "delete from weekday " +
+                    "where day_id=?1"
+    )
+    void deleteById(@NonNull Short id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayService.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.db.distributorapp.weekday;
+
+import mk.ukim.finki.db.distributorapp.weekday.dto.WeekdayDto;
+
+public interface WeekdayService {
+
+    Integer create(WeekdayDto weekdayDto);
+
+    Integer edit(WeekdayDto weekdayDto);
+
+    void deleteById(Short id);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/WeekdayServiceImpl.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,31 @@
+package mk.ukim.finki.db.distributorapp.weekday;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.db.distributorapp.weekday.dto.WeekdayDto;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class WeekdayServiceImpl implements WeekdayService {
+    private final WeekdayRepository weekdayRepository;
+
+    @Override
+    public Integer create(WeekdayDto weekdayDto) {
+        return this.weekdayRepository.create(
+                weekdayDto.getDayName()
+        );
+    }
+
+    @Override
+    public Integer edit(WeekdayDto weekdayDto) {
+        return this.weekdayRepository.edit(
+                weekdayDto.getId(),
+                weekdayDto.getDayName()
+        );
+    }
+
+    @Override
+    public void deleteById(Short id) {
+        this.weekdayRepository.deleteById(id);
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/dto/WeekdayDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/dto/WeekdayDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/weekday/dto/WeekdayDto.java	(revision e2f67bf16de5a6423a4a3fcc6384b8126bc4286b)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.db.distributorapp.weekday.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class WeekdayDto {
+    private Short id;
+    private String dayName;
+}
