Index: backend/pom.xml
===================================================================
--- backend/pom.xml	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/pom.xml	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -78,5 +78,4 @@
             <groupId>org.thymeleaf.extras</groupId>
             <artifactId>thymeleaf-extras-springsecurity6</artifactId>
-            <!-- Temporary explicit version to fix Thymeleaf bug -->
             <version>3.1.1.RELEASE</version>
         </dependency>
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -12,8 +12,9 @@
     private String name;
     private String manufacturer;
+    private Long quantity;
     private Long manufacturerId;
     private BigDecimal price;
     private String category;
-    private Long categoryId;
+    private Integer categoryId;
     private Integer weight;
     private String image;
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleUnitDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -3,6 +3,6 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
@@ -15,5 +15,5 @@
     private String batchNo;
     private Date manufactureDate;
-    private Double costPrice;
+    private BigDecimal costPrice;
     private Long artId;
     private String artName;
Index: backend/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 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ArticleUnitSimpleDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -0,0 +1,23 @@
+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: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CategoryDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -3,10 +3,9 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 
 @Data
 @AllArgsConstructor
 public class CategoryDto {
-    private Long id;
+    private Integer id;
     private String name;
 }
Index: backend/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 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/CreateOrderDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -0,0 +1,15 @@
+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: backend/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 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderItemDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -0,0 +1,18 @@
+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: backend/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 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrderSimpleDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -0,0 +1,22 @@
+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: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/OrdersDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -3,4 +3,5 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.time.LocalDate;
@@ -9,4 +10,5 @@
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class OrdersDto {
     private Long id;
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/ProFormaDto.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -3,4 +3,5 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.time.LocalDate;
@@ -8,4 +9,5 @@
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class ProFormaDto {
     private Long id;
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/ArticleUnit.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -6,4 +6,5 @@
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.LinkedHashSet;
@@ -38,5 +39,5 @@
     @NotNull
     @Column(name = "unit_cost_price", nullable = false)
-    private Double unitCostPrice;
+    private BigDecimal unitCostPrice;
 
     @NotNull
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Category.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -15,5 +15,5 @@
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name = "ctg_id")
-    private Long categoryId;
+    private Integer categoryId;
 
     @Size(max = 255)
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleRepository.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,4 +2,5 @@
 
 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;
@@ -16,7 +17,22 @@
     @Query(
             nativeQuery = true,
-            value = "select * from article"
+            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<Article> listAll();
+    List<ArticleDto> listAll();
 
     @Query(
@@ -47,5 +63,5 @@
             @NonNull @Param("image") String image,
             @NonNull @Param("weight") Integer weight,
-            @NonNull @Param("ctg") Long ctg_id,
+            @NonNull @Param("ctg") Integer ctg_id,
             @NonNull @Param("man") Long man_id);
 
@@ -63,5 +79,5 @@
             @NonNull @Param("img") String image,
             @NonNull @Param("weight") Integer weight,
-            @NonNull @Param("ctg") Long ctg_id,
+            @NonNull @Param("ctg") Integer ctg_id,
             @NonNull @Param("man") Long man_id);
 
@@ -73,3 +89,39 @@
     )
     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/repository/ArticleUnitRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleUnitRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ArticleUnitRepository.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,4 +2,6 @@
 
 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;
@@ -9,4 +11,5 @@
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -18,5 +21,5 @@
             value = "select * from article_unit"
     )
-    List<ArticleUnit> listAll();
+    List<ArticleUnitSimpleDto> listAll();
 
     @Query(
@@ -36,7 +39,31 @@
     @Query(
             nativeQuery = true,
-            value = "select * from article_unit where wh_id=?1"
+            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<ArticleUnit> findAllByWarehouse(@NonNull @Param("wh") Integer wh_id);
+    List<ArticleUnitDto> findAllByWarehouse(@NonNull @Param("wh") Integer wh_id);
 
     @Modifying
@@ -44,6 +71,6 @@
     @Query(
             nativeQuery = true,
-            value = "insert into article_unit(unit_expiration_date, unit_serial_number, unit_batch_number, unit_manufacture_date, unit_cost_price, art_id, wh_id, ord_id) " +
-                    "values (?1,?2,?3,?4,?5,?6,?7,?8)"
+            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(
@@ -52,6 +79,5 @@
             @NonNull @Param("batch_no") String unit_batch_number,
             @NonNull @Param("man_date") Date unit_manufacture_date,
-            @NonNull @Param("cost_price") Double unit_cost_price,
-            @NonNull @Param("art") Long art_id,
+            @NonNull @Param("cost_price") BigDecimal unit_cost_price,
             @NonNull @Param("wh") Integer wh_id,
             @Param("ord") Long ord_id
@@ -63,5 +89,5 @@
             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,art_id=?7,wh_id=?8,ord_id=?9 " +
+                    "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"
     )
@@ -72,6 +98,5 @@
             @NonNull @Param("batch_no") String unit_batch_number,
             @NonNull @Param("man_date") Date unit_manufacture_date,
-            @NonNull @Param("cost_price") Double unit_cost_price,
-            @NonNull @Param("art") Long art_id,
+            @NonNull @Param("cost_price") BigDecimal unit_cost_price,
             @NonNull @Param("wh") Integer wh_id,
             @Param("ord") Long ord_id
@@ -85,3 +110,40 @@
     )
     void delete(@NonNull @Param("id") Long id);
+
+    @Query(
+            nativeQuery = true,
+            value = """
+                    select *
+                    from article_unit au
+                    join warehouse wh on au.wh_id = wh.wh_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 manufacturer m on a.man_id = m.man_id
+                    where wh.wh_id = :warehouse and a.art_id = :article
+                    order by au.unit_manufacture_date;
+                    """
+    )
+    List<ArticleUnitDto> findAllByArticleAndWarehouse(@NonNull @Param("article") Long articleId, @NonNull @Param("warehouse") Integer warehouseId);
+
+    @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/repository/CategoryRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CategoryRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CategoryRepository.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -40,5 +40,5 @@
                     """
     )
-    Optional<Category> findById(@Param("id") @NonNull Long id);
+    Optional<Category> findById(@Param("id") @NonNull Integer id);
 
     @Modifying
@@ -61,5 +61,5 @@
                     "where ctg_id=?1"
     )
-    Integer edit(@NonNull Long id,
+    Integer edit(@NonNull Integer id,
                  @NonNull String name);
 
@@ -70,4 +70,4 @@
                     "where ctg_id = ?1",
             nativeQuery = true)
-    void deleteById(@NonNull Long id);
+    void deleteById(@NonNull Integer id);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/CustomerRepository.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,4 +2,5 @@
 
 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;
@@ -9,5 +10,4 @@
 
 import java.util.List;
-import java.util.Optional;
 
 public interface CustomerRepository extends JpaRepository<Customer, Long> {
@@ -30,11 +30,17 @@
             nativeQuery = true,
             value = """
-                    select *
+                    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
-                    where c.user_id = ?1
+                    join users u on c.user_id = u.user_id
                     """
     )
-    Optional<Customer> findById(@NonNull Long id);
+    CustomerDto findCustomerById(@NonNull Long id);
 
     @Modifying
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManufacturerRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManufacturerRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ManufacturerRepository.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,4 +2,5 @@
 
 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;
@@ -14,7 +15,14 @@
     @Query(
             nativeQuery = true,
-            value = "select * from manufacturer"
+            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<Manufacturer> listAll();
+    List<ManufacturerDto> listAll();
 
     @Query(
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/OrdersRepository.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,4 +2,5 @@
 
 import lombok.NonNull;
+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;
@@ -13,18 +14,94 @@
 import java.time.LocalDateTime;
 import java.util.List;
-import java.util.Optional;
 
 public interface OrdersRepository extends JpaRepository<Orders, Long> {
     @Query(
             nativeQuery = true,
-            value = "select * from orders"
-    )
-    List<Orders> listAll();
-
-    @Query(
-            nativeQuery = true,
-            value = "select * from orders where cust_id=?1"
-    )
-    List<Orders> findByCustomer(@NonNull Long id);
+            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(
@@ -32,5 +109,5 @@
             value = "select * from orders where ord_id=?1"
     )
-    Optional<Orders> findById(@NonNull Long id);
+    OrdersDto findOrderById(@NonNull Long id);
 
     @Modifying
@@ -48,6 +125,6 @@
             @NonNull Short ord_status_id,
             @NonNull Long cust_id,
-            @NonNull Long del_id,
-            @NonNull Long pf_id
+            Long del_id,
+            Long pf_id
     );
 
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ProFormaRepository.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,4 +2,5 @@
 
 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;
@@ -15,7 +16,23 @@
     @Query(
             nativeQuery = true,
-            value = "select * from pro_forma"
+            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<ProForma> listAll();
+    List<ProFormaDto> listAll();
 
     @Query(
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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/CustomUserDetailsService.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -29,11 +29,11 @@
 
 //        if(Objects.equals(user.getClazz_(), "CUSTOMER")){
-//            return this.customerRepository.findById(user.getUserId())
+//            return this.customerRepository.findCustomerById(user.getUserId())
 //                    .orElseThrow(() -> new UsernameNotFoundException(email));
 //        }else if(Objects.equals(user.getClazz_(), "MANAGER")){
-//            return this.managerRepository.findById(user.getUserId())
+//            return this.managerRepository.findCustomerById(user.getUserId())
 //                    .orElseThrow(() -> new UsernameNotFoundException(email));
 //        } else if(Objects.equals(user.getClazz_(), "DRIVER")){
-//            return this.driverRepository.findById(user.getUserId())
+//            return this.driverRepository.findCustomerById(user.getUserId())
 //                    .orElseThrow(() -> new UsernameNotFoundException(email));
 //        }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleService.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleService.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -17,3 +17,5 @@
 
     Integer create(ArticleDto article);
+
+    List<ArticleDto> getAllArticlesByWarehouse(Integer warehouseId);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleUnitService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleUnitService.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ArticleUnitService.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,11 +2,14 @@
 
 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.model.dto.UnitPriceDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Warehouse;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
 public interface ArticleUnitService {
-    List<ArticleUnitDto> getAllArticleUnits();
+    List<ArticleUnitSimpleDto> getAllArticleUnits();
 
     List<ArticleUnitDto> findALlByName(String name);
@@ -20,6 +23,17 @@
     Integer edit(ArticleUnitDto articleUnitDto);
 
+    @Transactional
+    Integer simpleEdit(ArticleUnitSimpleDto articleUnitSimpleDto);
+
     Integer addArticleUnitWithPrice(ArticleUnitDto articleUnitDto, UnitPriceDto unitPriceDto);
 
     void delete(Long id);
+
+    List<ArticleUnitDto> getAllArticleUnitsByWarehouse(Integer warehouseId);
+
+    List<ArticleUnitDto> findAllByArticleAndWarehouse(Long articleId, 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/service/CategoryService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CategoryService.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CategoryService.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -9,5 +9,5 @@
     List<CategoryDto> listCategories();
 
-    CategoryDto getCategoryById(Long id);
+    CategoryDto getCategoryById(Integer id);
 
     List<CategoryDto> searchCategories(String text);
@@ -17,4 +17,4 @@
     Integer edit(CategoryDto categoryDto);
 
-    void deleteById(Long id);
+    void deleteById(Integer id);
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/CustomerService.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,5 +2,4 @@
 
 import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Customer;
 
 import java.util.List;
@@ -10,9 +9,5 @@
     List<CustomerDto> findAllCustomers();
 
-    List<CustomerDto> findCustomerByName(String name);
-
     CustomerDto findCustomerById(Long id);
-
-    Customer getCustomerObjById(Long id);
 
     Integer create(CustomerDto customerDto);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/OrdersService.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -1,7 +1,10 @@
 package mk.ukim.finki.db.distributorapp.service;
 
+import mk.ukim.finki.db.distributorapp.model.dto.CreateOrderDto;
+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.Customer;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.security.Principal;
 import java.util.List;
 
@@ -9,9 +12,12 @@
     List<OrdersDto> getAllOrders();
 
-    List<OrdersDto> findOrdersByCustomer(Customer customer);
+    List<OrdersDto> findOrdersByCustomer(Long customerId);
+
+    List<OrderSimpleDto> findSimpleOrdersByCustoemr(Long customerId);
 
     OrdersDto findById(Long id);
 
-    Integer create(OrdersDto ordersDto);
+    @Transactional
+    Integer create(CreateOrderDto createOrderDto, Principal principal);
 
     Integer edit(OrdersDto ordersDto);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaService.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaService.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/ProFormaService.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,8 +2,10 @@
 
 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();
 
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleServiceImpl.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -17,16 +17,5 @@
     @Override
     public List<ArticleDto> getAllArticles() {
-        List<Article> articles = this.articleRepository.listAll();
-        return articles.stream().map(art -> new ArticleDto(
-                art.getArticleId(),
-                art.getArticleName(),
-                art.getManufacturer().getManufacturerName(),
-                art.getManufacturer().getManufacturerId(),
-                art.getPrices().get(art.getPrices().size() - 1).getPrice(),
-                art.getCategory().getCategoryName(),
-                art.getCategory().getCategoryId(),
-                art.getArticleWeight(),
-                art.getArtImage()
-        )).toList();
+        return this.articleRepository.listAll();
     }
 
@@ -38,4 +27,5 @@
                 art.getArticleName(),
                 art.getManufacturer().getManufacturerName(),
+                0L,
                 art.getManufacturer().getManufacturerId(),
                 art.getPrices().get(art.getPrices().size() - 1).getPrice(),
@@ -55,4 +45,5 @@
                 art.getArticleName(),
                 art.getManufacturer().getManufacturerName(),
+                0L,
                 art.getManufacturer().getManufacturerId(),
                 art.getPrices().get(art.getPrices().size() - 1).getPrice(),
@@ -89,3 +80,8 @@
                 art.getManufacturerId());
     }
+
+    @Override
+    public List<ArticleDto> getAllArticlesByWarehouse(Integer warehouseId) {
+        return this.articleRepository.findAllByWarehouse(warehouseId);
+    }
 }
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ArticleUnitServiceImpl.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -3,7 +3,10 @@
 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.model.dto.UnitPriceDto;
 import mk.ukim.finki.db.distributorapp.model.entities.ArticleUnit;
 import mk.ukim.finki.db.distributorapp.model.entities.Warehouse;
+import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidArgumentsException;
 import mk.ukim.finki.db.distributorapp.repository.ArticleUnitRepository;
 import mk.ukim.finki.db.distributorapp.repository.PriceRepository;
@@ -50,8 +53,7 @@
 
     @Override
-    public List<ArticleUnitDto> getAllArticleUnits() {
-        List<ArticleUnit> articleUnits = this.articleUnitRepository.listAll();
+    public List<ArticleUnitSimpleDto> getAllArticleUnits() {
+        return this.articleUnitRepository.listAll();
 
-        return buildDto(articleUnits);
     }
 
@@ -65,12 +67,11 @@
     @Override
     public List<ArticleUnitDto> findAllByWarehouse(Warehouse warehouse) {
-        List<ArticleUnit> articleUnits = this.articleUnitRepository.findAllByWarehouse(warehouse.getWarehouseId());
-        return buildDto(articleUnits);
+        return this.articleUnitRepository.findAllByWarehouse(warehouse.getWarehouseId());
     }
 
     @Override
     public ArticleUnitDto findById(Long id) {
-        ArticleUnit articleUnit = this.articleUnitRepository.findById(id).get();
-        Warehouse wh = this.warehouseRepository.findById(articleUnit.getWarehouse().getWarehouseId()).get();
+        ArticleUnit articleUnit = this.articleUnitRepository.findById(id).orElseThrow(InvalidArgumentsException::new);
+        Warehouse wh = this.warehouseRepository.findById(articleUnit.getWarehouse().getWarehouseId()).orElseThrow(InvalidArgumentsException::new);
         return new ArticleUnitDto(
                 articleUnit.getUnitId(),
@@ -99,5 +100,4 @@
                 articleUnitDto.getManufactureDate(),
                 articleUnitDto.getCostPrice(),
-                articleUnitDto.getArtId(),
                 articleUnitDto.getWhId(),
                 articleUnitDto.getOrdId()
@@ -115,7 +115,21 @@
                 articleUnitDto.getManufactureDate(),
                 articleUnitDto.getCostPrice(),
-                articleUnitDto.getArtId(),
                 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()
         );
     }
@@ -130,5 +144,4 @@
                 articleUnitDto.getManufactureDate(),
                 articleUnitDto.getCostPrice(),
-                articleUnitDto.getArtId(),
                 articleUnitDto.getWhId(),
                 articleUnitDto.getOrdId()
@@ -143,3 +156,34 @@
         this.articleUnitRepository.deleteById(id);
     }
+
+    @Override
+    public List<ArticleUnitDto> getAllArticleUnitsByWarehouse(Integer warehouseId) {
+        return this.articleUnitRepository.findAllByWarehouse(warehouseId);
+    }
+
+    @Override
+    public List<ArticleUnitDto> findAllByArticleAndWarehouse(Long articleId, Integer warehouseId) {
+        return this.articleUnitRepository.findAllByArticleAndWarehouse(articleId,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/service/impl/CategoryServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CategoryServiceImpl.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -36,5 +36,5 @@
 
     @Override
-    public CategoryDto getCategoryById(Long id) {
+    public CategoryDto getCategoryById(Integer id) {
         Category ctg = this.categoryRepository.findById(id).get();
         return new CategoryDto(
@@ -55,5 +55,5 @@
 
     @Override
-    public void deleteById(Long id) {
+    public void deleteById(Integer id) {
         this.categoryRepository.deleteById(id);
     }
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/CustomerServiceImpl.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -42,27 +42,6 @@
 
     @Override
-    public List<CustomerDto> findCustomerByName(String name) {
-        List<Customer> customers = this.customerRepository.findAllByName("'"+name+"'");
-        return buildDto(customers);
-    }
-
-    @Override
     public CustomerDto findCustomerById(Long id) {
-        Customer customer = this.customerRepository.findById(id).get();
-        return new CustomerDto(
-                customer.getUserId(),
-                customer.getUsername(),
-                customer.getUserEmail(),
-                customer.getUserMobile(),
-                customer.getCustomerEDB(),
-                customer.getCustomerCompanyName(),
-                customer.getCustomerAddress(),
-                customer.getCustomerRepresentativeImage()
-        );
-    }
-
-    @Override
-    public Customer getCustomerObjById(Long id) {
-        return this.customerRepository.findById(id).get();
+        return this.customerRepository.findCustomerById(id);
     }
 
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ManufacturerServiceImpl.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -34,6 +34,5 @@
     @Override
     public List<ManufacturerDto> getAllManufacturers() {
-        List<Manufacturer> manufacturers = this.manufacturerRepository.listAll();
-        return buildDto(manufacturers);
+        return this.manufacturerRepository.listAll();
     }
 
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/OrdersServiceImpl.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,11 +2,14 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.OrdersDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Customer;
+import mk.ukim.finki.db.distributorapp.model.dto.*;
 import mk.ukim.finki.db.distributorapp.model.entities.Orders;
 import mk.ukim.finki.db.distributorapp.repository.OrdersRepository;
-import mk.ukim.finki.db.distributorapp.service.OrdersService;
+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.ArrayList;
 import java.util.List;
@@ -16,4 +19,10 @@
 public class OrdersServiceImpl implements OrdersService {
     private final OrdersRepository ordersRepository;
+    private final UsersService usersService;
+    private final WarehouseService warehouseService;
+    private final ArticleUnitService articleUnitService;
+    private final CustomerService customerService;
+    private final ProFormaService proFormaService;
+
 
 
@@ -48,50 +57,66 @@
     @Override
     public List<OrdersDto> getAllOrders() {
-        List<Orders> orders = this.ordersRepository.listAll();
-        return buildDto(orders);
+        return this.ordersRepository.listAll();
     }
 
     @Override
-    public List<OrdersDto> findOrdersByCustomer(Customer customer) {
-        List<Orders> orders = this.ordersRepository.findByCustomer(customer.getUserId());
-        return buildDto(orders);
+    public List<OrdersDto> findOrdersByCustomer(Long customerId) {
+        return this.ordersRepository.findOrdersByCustomer(customerId);
+    }
+
+    @Override
+    public List<OrderSimpleDto> findSimpleOrdersByCustoemr(Long customerId){
+        return this.ordersRepository.findSimpleOrdersByCustomer(customerId);
     }
 
     @Override
     public OrdersDto findById(Long id) {
-        Orders ord = this.ordersRepository.findById(id).get();
-        return new OrdersDto(
-                ord.getOrderId(),
-                ord.getOrderDate(),
-                ord.getOrderSum(),
-                ord.getOrderFulfillmentDate(),
-                ord.getOrderComment(),
-                ord.getOrderStatus().getOrderStatusId(),
-                ord.getOrderStatus().getOrderStatusName(),
-                ord.getCustomer().getUserId(),
-                ord.getCustomer().getCustomerCompanyName(),
-                ord.getCustomer().getUserMobile(),
-                ord.getCustomer().getUserEmail(),
-                ord.getDelivery().getDeliveryId(),
-                ord.getDelivery().getVehicle().getDriver().getUserId(),
-                ord.getDelivery().getVehicle().getDriver().getUsername(),
-                ord.getDelivery().getVehicle().getDriver().getUserMobile(),
-                ord.getDelivery().getVehicle().getDriver().getUserEmail(),
-                ord.getProForma().getProFormaId(),
-                ord.getProForma().getProFormaStatus().getProFormaStatusName()
-        );
+        return  this.ordersRepository.findOrderById(id);
     }
 
     @Override
-    public Integer create(OrdersDto ordersDto) {
+    @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(
-                ordersDto.getOrdDate(),
-                ordersDto.getOrdSum(),
-                ordersDto.getOrdFulfillmentDate(),
-                ordersDto.getOrdComment(),
-                ordersDto.getOStatusId(),
-                ordersDto.getCustomerId(),
-                ordersDto.getDeliveryId(),
-                ordersDto.getPfId()
+                order.getOrdDate(),
+                order.getOrdSum(),
+                order.getOrdFulfillmentDate(),
+                order.getOrdComment(),
+                order.getOStatusId(),
+                order.getCustomerId(),
+                order.getDeliveryId(),
+                order.getPfId()
         );
     }
Index: backend/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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/ProFormaServiceImpl.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -7,4 +7,5 @@
 import mk.ukim.finki.db.distributorapp.service.ProFormaService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
@@ -38,7 +39,7 @@
 
     @Override
+    @Transactional
     public List<ProFormaDto> getAllProForma() {
-        List<ProForma> proFormas = this.proFormaRepository.listAll();
-        return buildDto(proFormas);
+        return this.proFormaRepository.listAll();
     }
 
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 aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/CustomerController.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -1,19 +1,18 @@
 package mk.ukim.finki.db.distributorapp.web;
 
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.CustomerDto;
-import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
-import mk.ukim.finki.db.distributorapp.model.entities.Customer;
-import mk.ukim.finki.db.distributorapp.model.entities.Users;
-import mk.ukim.finki.db.distributorapp.service.CustomerService;
-import mk.ukim.finki.db.distributorapp.service.DeliveryService;
-import mk.ukim.finki.db.distributorapp.service.OrdersService;
-import mk.ukim.finki.db.distributorapp.service.UsersService;
+import mk.ukim.finki.db.distributorapp.model.dto.*;
+import mk.ukim.finki.db.distributorapp.service.*;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.*;
+
+import java.security.Principal;
+import java.util.List;
 
 @Controller
@@ -25,6 +24,12 @@
     private final OrdersService ordersService;
     private final DeliveryService deliveryService;
+    private final CategoryService categoryService;
+    private final WarehouseService warehouseService;
+    private final ArticleService articleService;
+    private final ArticleUnitService articleUnitService;
+    private final ManufacturerService manufacturerService;
+    private final ProFormaService proFormaService;
 
-    @GetMapping({"/dashboard","/"})
+    @GetMapping({"/dashboard", "/"})
     public String dashboard(Model model) {
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
@@ -37,3 +42,73 @@
         return "home/customer";
     }
+
+    @GetMapping("/my-orders")
+    public String myOrders(Model model) {
+        return "my-orders";
+    }
+
+    @GetMapping("/create-order")
+    public String createOrder(Model model) {
+        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+
+        String userEmail = authentication.getName();
+
+        UserDto user = this.usersService.findUserDtoByEmail(userEmail);
+
+        WarehouseDto warehouse = this.warehouseService.findByCityId(user.getCityId());
+
+        List<CategoryDto> categories = this.categoryService.listCategories();
+        List<ArticleDto> articles = this.articleService.getAllArticlesByWarehouse(warehouse.getId());
+        List<ManufacturerDto> manufacturers = this.manufacturerService.getAllManufacturers();
+        List<ArticleUnitDto> articleUnits = this.articleUnitService.getAllArticleUnitsByWarehouse(warehouse.getId());
+
+        model.addAttribute("categories", categories);
+        model.addAttribute("articles", articles);
+        model.addAttribute("manufacturers", manufacturers);
+        model.addAttribute("articleUnits", articleUnits);
+        return "create-order";
+    }
+
+    @InitBinder
+    public void initBinder(WebDataBinder binder) {
+        ObjectMapper objectMapper = new ObjectMapper();
+        binder.registerCustomEditor(List.class, "orderItems", new java.beans.PropertyEditorSupport() {
+            @Override
+            public void setAsText(String text) throws IllegalArgumentException {
+                try {
+                    List<OrderItemDto> items = objectMapper.readValue(
+                            text, new TypeReference<List<OrderItemDto>>() {
+                            }
+                    );
+                    setValue(items);
+                } catch (Exception e) {
+                    throw new IllegalArgumentException("Invalid JSON for order items", e);
+                }
+            }
+        });
+    }
+
+    @PostMapping("/create-order")
+    public String createOrder(@ModelAttribute CreateOrderDto createOrderDto, Principal principal) {
+
+        this.ordersService.create(createOrderDto, principal);
+
+        String userEmail = principal.getName();
+
+        UserDto user = this.usersService.findUserDtoByEmail(userEmail);
+
+        CustomerDto customer = this.customerService.findCustomerById(user.getId());
+
+        List<OrderSimpleDto> simpleCustomerOrders = this.ordersService.findSimpleOrdersByCustoemr(customer.getId());
+        OrderSimpleDto createdOrder = simpleCustomerOrders.get(simpleCustomerOrders.size() - 1);
+        WarehouseDto wh = this.warehouseService.findByCityId(user.getCityId());
+
+        List<ArticleUnitSimpleDto> editedUnits = this.articleUnitService.addArticleUnitToOrder(createOrderDto.getOrderItems(), createdOrder.getId(), wh.getId());
+
+        for (ArticleUnitSimpleDto unit : editedUnits) {
+            this.articleUnitService.simpleEdit(unit);
+        }
+
+        return "redirect:/customer/my-orders";
+    }
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleUnitController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleUnitController.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestArticleUnitController.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -2,4 +2,5 @@
 
 import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitDto;
+import mk.ukim.finki.db.distributorapp.model.dto.ArticleUnitSimpleDto;
 import mk.ukim.finki.db.distributorapp.service.ArticleUnitService;
 import org.springframework.http.ResponseEntity;
@@ -18,6 +19,6 @@
 
     @GetMapping("/all")
-    public ResponseEntity<List<ArticleUnitDto>> getAllUnits() {
-        List<ArticleUnitDto> units = this.articleUnitService.getAllArticleUnits();
+    public ResponseEntity<List<ArticleUnitSimpleDto>> getAllUnits() {
+        List<ArticleUnitSimpleDto> units = this.articleUnitService.getAllArticleUnits();
         return ResponseEntity.ok(units);
     }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCategoryController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCategoryController.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestCategoryController.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -36,5 +36,5 @@
 
     @DeleteMapping("/delete/{id}")
-    public ResponseEntity<Void> deleteCategory(@PathVariable Long id) {
+    public ResponseEntity<Void> deleteCategory(@PathVariable Integer id) {
         this.categoryService.deleteById(id);
         return ResponseEntity.noContent().build();
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrdersController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrdersController.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestOrdersController.java	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -24,10 +24,4 @@
     }
 
-    @PutMapping("/add")
-    public ResponseEntity<Integer> addOrders(@RequestBody OrdersDto OrdersDto) {
-        Integer result = this.OrderService.create(OrdersDto);
-        return ResponseEntity.ok(result);
-    }
-
     @PutMapping("/edit")
     public ResponseEntity<Integer> editOrders(@RequestBody OrdersDto OrdersDto) {
Index: backend/src/main/resources/templates/create-order.html
===================================================================
--- backend/src/main/resources/templates/create-order.html	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
+++ backend/src/main/resources/templates/create-order.html	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Place an Order</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet">
+    <style>
+        .scrollable-cards {
+            max-height: 400px;
+            overflow-y: auto;
+        }
+    </style>
+</head>
+<body>
+<div th:replace="~{fragments/navbar :: navbar}"></div>
+<div class="container mt-4">
+    <h1>Place Your Order</h1>
+
+    <div class="row mb-3">
+        <div class="col-md-4">
+            <label for="filterCategory" class="form-label">Category</label>
+            <select id="filterCategory" class="form-select">
+                <option value="">All</option>
+                <option th:each="cat : ${categories}"
+                        th:value="${cat.id}"
+                        th:text="${cat.name}">Category</option>
+            </select>
+        </div>
+        <div class="col-md-4">
+            <label for="filterManufacturer" class="form-label">Manufacturer</label>
+            <select id="filterManufacturer" class="form-select">
+                <option value="">All</option>
+                <option th:each="manu : ${manufacturers}"
+                        th:value="${manu.id}"
+                        th:text="${manu.name}">Manufacturer</option>
+            </select>
+        </div>
+        <div class="col-md-4">
+            <label for="filterSearch" class="form-label">Article Name</label>
+            <input type="text" id="filterSearch" class="form-control" placeholder="Search article">
+        </div>
+    </div>
+
+    <div class="scrollable-cards row row-cols-1 row-cols-md-2 row-cols-lg-3 g-3" id="articleContainer">
+        <div class="col" th:each="art : ${articles}"
+             th:attr="data-category=${art.categoryId}, data-manufacturer=${art.manufacturerId}, data-article-name=${art.name}, data-manufacturer-name=${art.manufacturer}">
+            <div class="card h-100">
+                <img th:src="@{${art.image}}" class="card-img-top" alt="Article Image" onerror="this.style.display='none'">
+                <div class="card-body">
+                    <h5 class="card-title" th:text="${art.name}">Article Name</h5>
+                    <p class="card-text">
+                        Manufacturer: <span th:text="${art.manufacturer}">Manufacturer</span><br>
+                        Price: $<span th:text="${art.price}">0.00</span><br>
+                        In Stock: <span th:text="${art.quantity}">0</span>
+                    </p>
+                </div>
+                <div class="card-footer">
+                    <button type="button" class="btn btn-primary btn-sm add-article"
+                            th:data-article-id="${art.id}"
+                            th:data-article-name="${art.name}"
+                            th:data-unit-price="${art.price}"
+                            th:data-available="${art.quantity}">
+                        Add to Order
+                    </button>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <h3 class="mt-4">Order Summary</h3>
+    <table class="table table-bordered" id="orderSummaryTable">
+        <thead>
+        <tr>
+            <th>Article</th>
+            <th>Unit Price</th>
+            <th>Manufacturer</th>
+            <th>Quantity</th>
+            <th>Line Total</th>
+            <th>Action</th>
+        </tr>
+        </thead>
+        <tbody>
+        </tbody>
+    </table>
+    <div class="mb-3">
+        <label for="totalSum" class="form-label">Total Sum:</label>
+        <span id="totalSum">0.00</span>
+    </div>
+    <div class="mb-3 form-check">
+        <input type="checkbox" class="form-check-input" id="proForma" name="proForma">
+        <label class="form-check-label" for="proForma">Request Pro Forma</label>
+    </div>
+
+    <form id="orderForm" th:action="@{/customer/create-order}" method="post">
+        <input type="hidden" id="orderItems" name="orderItems">
+        <button type="submit" class="btn btn-success">Place Order</button>
+    </form>
+</div>
+
+<div th:replace="~{fragments/footer :: footer}"></div>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>
+<script>
+    const orderItems = [];
+
+    function updateOrderSummary() {
+        const tbody = document.querySelector('#orderSummaryTable tbody');
+        tbody.innerHTML = '';
+
+        let totalSum = 0;
+        orderItems.forEach((item, index) => {
+            const row = document.createElement('tr');
+            row.innerHTML = `
+        <td>${item.articleName}</td>
+        <td>${item.unitPrice.toFixed(2)}</td>
+        <td>${item.manufacturerName}</td>
+        <td>${item.quantity}</td>
+        <td>${(item.unitPrice * item.quantity).toFixed(2)}</td>
+        <td><button type="button" class="btn btn-danger btn-sm" data-index="${index}">Remove</button></td>
+      `;
+            tbody.appendChild(row);
+            totalSum += item.unitPrice * item.quantity;
+        });
+        document.getElementById('totalSum').textContent = totalSum.toFixed(2);
+        document.getElementById('orderItems').value = JSON.stringify(orderItems);
+    }
+
+    document.querySelectorAll('.add-article').forEach(function(button) {
+        button.addEventListener('click', function() {
+            const articleId = this.getAttribute('data-article-id');
+            const articleName = this.getAttribute('data-article-name');
+            const manufacturerName = this.getAttribute('data-manufacturer-name');
+            const unitPrice = parseFloat(this.getAttribute('data-unit-price'));
+            const available = parseInt(this.getAttribute('data-available'), 10);
+
+            let quantity = prompt("Enter quantity for " + articleName, "1");
+            quantity = parseInt(quantity, 10);
+            if (isNaN(quantity) || quantity <= 0) {
+                alert("Invalid quantity. Item not added.");
+                return;
+            }
+            if (quantity > available) {
+                alert("Quantity exceeds available stock.");
+                return;
+            }
+
+            const orderItem = {
+                articleId: articleId,
+                articleName: articleName,
+                manufacturerName: manufacturerName,
+                unitPrice: unitPrice,
+                quantity: quantity
+            };
+            orderItems.push(orderItem);
+            updateOrderSummary();
+        });
+    });
+
+    document.getElementById('orderSummaryTable').addEventListener('click', function(event) {
+        if (event.target.matches('button')) {
+            const index = event.target.getAttribute('data-index');
+            orderItems.splice(index, 1);
+            updateOrderSummary();
+        }
+    });
+
+    function filterArticles() {
+        const categoryFilter = document.getElementById('filterCategory').value;
+        const manufacturerFilter = document.getElementById('filterManufacturer').value;
+        const searchFilter = document.getElementById('filterSearch').value.toLowerCase();
+
+        document.querySelectorAll('#articleContainer > .col').forEach(function(card) {
+            const cardCategory = card.getAttribute('data-category');
+            const cardManufacturer = card.getAttribute('data-manufacturer');
+            const cardArticleName = card.getAttribute('data-article-name').toLowerCase();
+
+            let matches = true;
+            if (categoryFilter && cardCategory !== categoryFilter) {
+                matches = false;
+            }
+            if (manufacturerFilter && cardManufacturer !== manufacturerFilter) {
+                matches = false;
+            }
+            if (searchFilter && !cardArticleName.includes(searchFilter)) {
+                matches = false;
+            }
+            card.style.display = matches ? 'block' : 'none';
+        });
+    }
+
+    document.getElementById('filterCategory').addEventListener('change', filterArticles);
+    document.getElementById('filterManufacturer').addEventListener('change', filterArticles);
+    document.getElementById('filterSearch').addEventListener('keyup', filterArticles);
+</script>
+</body>
+</html>
Index: backend/src/main/resources/templates/fragments/navbar.html
===================================================================
--- backend/src/main/resources/templates/fragments/navbar.html	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/resources/templates/fragments/navbar.html	(revision 1e9fb8b7819f8def7033a7dd4ac01651a4cc9f1a)
@@ -18,8 +18,4 @@
         <div class="collapse navbar-collapse" id="navbarNav">
             <ul class="navbar-nav me-auto">
-                <li class="nav-item">
-                    <a class="nav-link" href="/">Home</a>
-                </li>
-
                 <!--    Links for authenticated users:    -->
                 <li class="nav-item" sec:authorize="isAuthenticated()">
@@ -28,16 +24,28 @@
 
                 <!--    Links for specific roles:    -->
+                <!--    CUSTOMER    -->
                 <li class="nav-item" sec:authorize="hasRole('CUSTOMER')">
-                    <a class="nav-link" href="/customer/dashboard">Customer Dashboard</a>
+                    <a class="nav-link" href="/customer/dashboard">Home</a>
+                </li>
+                <li class="nav-item" sec:authorize="hasRole('CUSTOMER')">
+                    <a class="nav-link" href="/customer/create-order">Create order</a>
+                </li>
+                <!--    MANAGER    -->
+                <li class="nav-item" sec:authorize="hasRole('MANAGER')">
+                    <a class="nav-link" href="/manager/dashboard">Home</a>
                 </li>
                 <li class="nav-item" sec:authorize="hasRole('MANAGER')">
-                    <a class="nav-link" href="/manager/dashboard">Manager Dashboard</a>
+                    <a class="nav-link" href="/manager/create-delivery">Create delivery</a>
+                </li>
+                <!--    DRIVER    -->
+                <li class="nav-item" sec:authorize="hasRole('DRIVER')">
+                    <a class="nav-link" href="/driver/dashboard">Home</a>
                 </li>
                 <li class="nav-item" sec:authorize="hasRole('DRIVER')">
-                    <a class="nav-link" href="/driver/dashboard">Driver Dashboard</a>
+                    <a class="nav-link" href="/driver/deliveries">Deliveries</a>
                 </li>
-<!--                <li class="nav-item" sec:authorize="hasRole('ADMIN')">-->
-<!--                    <a class="nav-link" href="/home/admin">Admin Dashboard</a>-->
-<!--                </li>-->
+                <!--                <li class="nav-item" sec:authorize="hasRole('ADMIN')">-->
+                <!--                    <a class="nav-link" href="/home/admin">Admin Dashboard</a>-->
+                <!--                </li>-->
                 <li class="nav-item" sec:authorize="hasRole('ADMIN')">
                     <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
