Index: pom.xml
===================================================================
--- pom.xml	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ pom.xml	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -69,4 +69,5 @@
             <version>3.1.2.RELEASE</version>
         </dependency>
+
     </dependencies>
 
@@ -99,3 +100,4 @@
         </plugins>
     </build>
+
 </project>
Index: src/main/java/mk/ukim/finki/easyfood/config/SecurityConfig.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/config/SecurityConfig.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/config/SecurityConfig.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -4,4 +4,5 @@
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpMethod;
 import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -40,5 +41,6 @@
                 .authenticationProvider(authenticationProvider())
                 .authorizeHttpRequests(authz -> authz
-                        .requestMatchers("/login", "/register", "/css/**", "/js/**", "/images/**", "/error", "/home", "/").permitAll()
+                        .requestMatchers(HttpMethod.POST, "/DeliveryMan/accept/**", "/DeliveryMan/deliver/**").permitAll()
+                        .requestMatchers("/login", "/register", "/css/**","/DeliveryMan/**", "/js/**", "/images/**", "/error", "/home", "/").permitAll()
                         .requestMatchers("/admin/register").permitAll()
                         .requestMatchers("/admin/**").hasRole("ADMIN")
Index: src/main/java/mk/ukim/finki/easyfood/model/Administrator.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Administrator.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/model/Administrator.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -2,4 +2,5 @@
 
 import jakarta.persistence.*;
+import lombok.Data;
 import lombok.NoArgsConstructor;
 import mk.ukim.finki.easyfood.model.enumerations.ROLE;
@@ -10,4 +11,6 @@
 @Table(name = "administrator")
 @PrimaryKeyJoinColumn(name = "user_id")
+@Data
+
 public class Administrator extends AppUser {
 
Index: src/main/java/mk/ukim/finki/easyfood/model/AppUser.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/AppUser.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/model/AppUser.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -11,5 +11,5 @@
 @Table(name = "app_user")
 @Inheritance(strategy = InheritanceType.JOINED)
-@Data
+
 public class AppUser {
     protected AppUser() {
@@ -61,10 +61,34 @@
     }
 
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public ROLE getRole() {
+        return role;
+    }
+
+    public List<Address> getAddresses() {
+        return addresses;
+    }
+
     public void setId(Long id) {
         this.id = id;
-    }
-
-    public String getFirstName() {
-        return firstName;
     }
 
@@ -73,14 +97,6 @@
     }
 
-    public String getLastName() {
-        return lastName;
-    }
-
     public void setLastName(String lastName) {
         this.lastName = lastName;
-    }
-
-    public String getEmail() {
-        return email;
     }
 
@@ -89,14 +105,6 @@
     }
 
-    public String getPassword() {
-        return password;
-    }
-
     public void setPassword(String password) {
         this.password = password;
-    }
-
-    public String getPhone() {
-        return phone;
     }
 
@@ -105,14 +113,6 @@
     }
 
-    public ROLE getRole() {
-        return role;
-    }
-
     public void setRole(ROLE role) {
         this.role = role;
-    }
-
-    public List<Address> getAddresses() {
-        return addresses;
     }
 
Index: src/main/java/mk/ukim/finki/easyfood/model/Customer.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Customer.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/model/Customer.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -2,7 +2,7 @@
 
 import jakarta.persistence.*;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
 import mk.ukim.finki.easyfood.model.enumerations.ROLE;
+import mk.ukim.finki.easyfood.model.Order;
 
 import java.util.List;
@@ -28,4 +28,11 @@
     }
 
+    public ShoppingCart getShoppingCart() {
+        return shoppingCart;
+    }
+
+    public List<Order> getOrders() {
+        return orders;
+    }
 }
 
Index: src/main/java/mk/ukim/finki/easyfood/model/DeliveryMan.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/DeliveryMan.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/model/DeliveryMan.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -11,5 +11,4 @@
 @Table(name = "delivery_man")
 @PrimaryKeyJoinColumn(name = "user_id")
-@Data
 public class DeliveryMan extends AppUser {
     public DeliveryMan(String email, String password, String firstName, String lastName, String phone, ROLE role) {
@@ -21,4 +20,21 @@
     @OneToMany(mappedBy = "deliveryMan", fetch = FetchType.LAZY)
     private List<Order> orders;
+
+    public DeliveryMan(List<Order> orders) {
+        this.orders = orders;
+    }
+
+    public List<Order> getOrders() {
+        return orders;
+    }
+
+    public void setOrders(List<Order> orders) {
+        this.orders = orders;
+    }
+
+    public DeliveryMan(String email, String password, String firstName, String lastName, String phone, ROLE role, List<Order> orders) {
+        super(email, password, firstName, lastName, phone, role);
+        this.orders = orders;
+    }
 }
 
Index: src/main/java/mk/ukim/finki/easyfood/model/Menu.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Menu.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/model/Menu.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -31,4 +31,40 @@
     // getters and setters
 
+    public Restaurant getRestaurant() {
+        return restaurant;
+    }
+
+    public void setRestaurant(Restaurant restaurant) {
+        this.restaurant = restaurant;
+    }
+
+    public LocalDateTime getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public void setCreatedAt(LocalDateTime createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public void setUpdatedAt(LocalDateTime updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public LocalDateTime getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public String getName() {
+        return name;
+    }
+
     public Long getId() {
         return id;
Index: src/main/java/mk/ukim/finki/easyfood/model/RestaurantOwner.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/RestaurantOwner.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/model/RestaurantOwner.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -12,5 +12,4 @@
 @Table(name = "restaurant_owner")
 @PrimaryKeyJoinColumn(name = "user_id")
-@NoArgsConstructor
 public class RestaurantOwner extends AppUser {
 
@@ -29,4 +28,8 @@
     }
 
+    public RestaurantOwner() {
+
+    }
+
 
     public List<Restaurant> getRestaurants() {
Index: src/main/java/mk/ukim/finki/easyfood/service/OrderService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/OrderService.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/service/OrderService.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -1,8 +1,10 @@
 package mk.ukim.finki.easyfood.service;
 
+import jakarta.transaction.Transactional;
 import mk.ukim.finki.easyfood.model.CartItems;
 import mk.ukim.finki.easyfood.model.DeliveryMan;
 import mk.ukim.finki.easyfood.model.Order;
 import mk.ukim.finki.easyfood.model.OrderItems;
+import mk.ukim.finki.easyfood.model.enumerations.ORDER_STATUS;
 
 import java.util.List;
@@ -10,4 +12,7 @@
 
 public interface OrderService {
+    @Transactional
+    public Order updateOrderStatus(Long orderId, ORDER_STATUS newStatus);
+
     public List<Order> listOrdersByDeliveryManAndOrderStatus(Long deliveryMan, String orderStatus);
 
Index: src/main/java/mk/ukim/finki/easyfood/service/impl/OrderServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/OrderServiceImpl.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/service/impl/OrderServiceImpl.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -5,4 +5,5 @@
 import mk.ukim.finki.easyfood.model.Order;
 import mk.ukim.finki.easyfood.model.OrderItems;
+import mk.ukim.finki.easyfood.model.enumerations.ORDER_STATUS;
 import mk.ukim.finki.easyfood.repository.DeliveryManRepository;
 import mk.ukim.finki.easyfood.repository.OrderItemsRepository;
@@ -29,4 +30,12 @@
         this.orderItemsRepository = orderItemsRepository;
         this.shoppingCartService = shoppingCartService;
+    }
+    @Override
+    @Transactional
+    public Order updateOrderStatus(Long orderId, ORDER_STATUS newStatus) {
+        Order order = orderRepository.findById(orderId)
+                .orElseThrow(() -> new IllegalArgumentException("Invalid order ID: " + orderId));
+        order.setOrderStatus(newStatus.toString()); // Assuming orderStatus is a String in your Order model
+        return orderRepository.save(order);
     }
 
Index: src/main/java/mk/ukim/finki/easyfood/web/controller/DeliveryManController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/DeliveryManController.java	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/java/mk/ukim/finki/easyfood/web/controller/DeliveryManController.java	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -1,16 +1,13 @@
 package mk.ukim.finki.easyfood.web.controller;
 
-import mk.ukim.finki.easyfood.model.DeliveryMan;
 import mk.ukim.finki.easyfood.model.Order;
+import mk.ukim.finki.easyfood.model.enumerations.ORDER_STATUS;
 import mk.ukim.finki.easyfood.service.OrderService;
-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.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
-
-import java.util.List;
 
 @Controller
@@ -25,11 +22,33 @@
     @GetMapping("/{id}")
     public String deliveryManShow(@PathVariable Long id, Model model) {
-
-        List<Order> pendingOrders = orderService.listOrdersByDeliveryManAndOrderStatus(id, "Pending");
-        List<Order> processingOrders = orderService.listOrdersByDeliveryManAndOrderStatus(id, "Processing");
-        model.addAttribute("pendingOrders", pendingOrders);
-        model.addAttribute("processingOrders", processingOrders);
-
+        model.addAttribute("pendingOrders", orderService.listOrdersByDeliveryManAndOrderStatus(id, "PENDING"));
+        model.addAttribute("processingOrders", orderService.listOrdersByDeliveryManAndOrderStatus(id, "OUT_FOR_DELIVERY"));
         return "deliveryman_dash";
     }
+
+    @PostMapping("/accept/{orderId}")
+    public String acceptOrder(@PathVariable Long orderId) {
+        orderService.updateOrderStatus(orderId, ORDER_STATUS.OUT_FOR_DELIVERY);
+
+        // Retrieve the updated order using orElseThrow() to get the Order object
+        Order updatedOrder = orderService.findById(orderId)
+                .orElseThrow(() -> new IllegalArgumentException("Order not found with ID: " + orderId));
+
+        Long deliveryManId = updatedOrder.getDeliveryMan().getId();
+
+        return "redirect:/DeliveryMan/" + deliveryManId;
+    }
+
+    @PostMapping("/deliver/{orderId}")
+    public String deliverOrder(@PathVariable Long orderId) {
+        orderService.updateOrderStatus(orderId, ORDER_STATUS.DELIVERED);
+
+        // Retrieve the updated order using orElseThrow() to get the Order object
+        Order updatedOrder = orderService.findById(orderId)
+                .orElseThrow(() -> new IllegalArgumentException("Order not found with ID: " + orderId));
+
+        Long deliveryManId = updatedOrder.getDeliveryMan().getId();
+
+        return "redirect:/DeliveryMan/" + deliveryManId;
+    }
 }
Index: src/main/resources/templates/admin_register.html
===================================================================
--- src/main/resources/templates/admin_register.html	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/resources/templates/admin_register.html	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -50,6 +50,6 @@
                                 <option value="">Select Role</option>
                                 <option th:each="role : ${roles}"
-                                        th:value="${role.name()}"
-                                        th:text="${role.name()}">
+                                        th:value="${role.getName()}"
+                                        th:text="${role.getName()}">
                                 </option>
                             </select>
Index: src/main/resources/templates/deliveryman_dash.html
===================================================================
--- src/main/resources/templates/deliveryman_dash.html	(revision a3e71ea155fe8d1b58fa7d59552080376de9fe08)
+++ src/main/resources/templates/deliveryman_dash.html	(revision 4325a1ba1647554f46270d33e7ef1feb9474909a)
@@ -23,14 +23,16 @@
   <!-- Available Deliveries -->
   <h3 class="fw-bold mb-3">Available Deliveries</h3>
-  <div class="card shadow-sm border-0 mb-3">
+  <div class="card shadow-sm border-0 mb-3" th:each="orders : ${pendingOrders}">
     <div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-md-center">
       <div>
-        <h5 class="mb-1">Order #205</h5>
-        <p class="text-muted mb-1">Pickup: Pizza Palace</p>
-        <p class="text-muted mb-1">Drop-off: 123 Main St.</p>
-        <p class="fw-semibold text-dark mb-0">Payment: $12.00</p>
+        <h5 class="mb-1" >Order #<span th:text="${orders.id}"></span></h5>
+        <p class="text-muted mb-1">Pickup: <span th:text="${orders.getRestaurantName}"></span></p>
+        <p class="text-muted mb-1">Drop-off: <span th:text="${orders.getAddress}"></span></p>
       </div>
       <div class="mt-3 mt-md-0">
-        <button class="btn btn-success">Accept</button>
+        <form th:action="@{'/DeliveryMan/accept/' + ${orders.id}}" method="post">
+          <button class="btn btn-success">Mark as being delivered</button>
+        </form>
+
       </div>
     </div>
@@ -38,10 +40,10 @@
 
   <!-- Active Delivery (after accepted) -->
-  <h3 class="fw-bold mb-3 mt-4">Active Delivery</h3>
-  <div class="card shadow-sm border-0 mb-3">
+  <h3 class="fw-bold mb-3 mt-4" >Active Delivery</h3>
+  <div class="card shadow-sm border-0 mb-3" th:each="orders : ${processingOrders}">
     <div class="card-body">
-      <h5 class="mb-2">Order #204</h5>
-      <p class="text-muted mb-1">Pickup: Sushi House</p>
-      <p class="text-muted mb-1">Drop-off: 45 Park Avenue</p>
+      <h5 class="mb-1" >Order #<span th:text="${orders.id}"></span></h5>
+      <p class="text-muted mb-1">Pickup: <span th:text="${orders.getRestaurantName}"></span></p>
+      <p class="text-muted mb-1">Drop-off: <span th:text="${orders.getAddress}"></span></p>
 
       <!-- Embedded Map -->
@@ -54,7 +56,7 @@
 
       <!-- Update Status -->
-      <div class="text-end">
-        <button class="btn btn-primary">Mark as Delivered</button>
-      </div>
+      <form th:action="@{'/DeliveryMan/deliver/' + ${orders.id}}" method="post">
+        <button type="submit" class="btn btn-primary">Mark as Delivered</button>
+      </form>
     </div>
   </div>
