Index: .gitignore
===================================================================
--- .gitignore	(revision 52af00c340f80b264edff12391e360f518423180)
+++ .gitignore	(revision 09b63e81ec991605e64a859b841de94e18103044)
@@ -32,5 +32,2 @@
 ### VS Code ###
 .vscode/
-
-# Ignore application properties
-src/main/resources/application.properties
Index: pom.xml
===================================================================
--- pom.xml	(revision 52af00c340f80b264edff12391e360f518423180)
+++ pom.xml	(revision 09b63e81ec991605e64a859b841de94e18103044)
@@ -37,9 +37,4 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-security</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-thymeleaf</artifactId>
         </dependency>
@@ -64,10 +59,4 @@
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.thymeleaf.extras</groupId>
-            <artifactId>thymeleaf-extras-springsecurity6</artifactId>
-            <version>3.1.2.RELEASE</version>
-        </dependency>
-
     </dependencies>
 
Index: src/main/java/mk/ukim/finki/easyfood/EasyFoodApplication.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/EasyFoodApplication.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ src/main/java/mk/ukim/finki/easyfood/EasyFoodApplication.java	(revision 09b63e81ec991605e64a859b841de94e18103044)
@@ -3,8 +3,4 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-
 
 @SpringBootApplication
@@ -15,9 +11,3 @@
     }
 
-    @Bean
-    PasswordEncoder passwordEncoder() {
-        return new BCryptPasswordEncoder(10);
-    }
-
-
 }
Index: c/main/java/mk/ukim/finki/easyfood/config/SecurityConfig.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/config/SecurityConfig.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,75 +1,0 @@
-package mk.ukim.finki.easyfood.config;
-
-import mk.ukim.finki.easyfood.service.impl.UserDetailsServiceImpl;
-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;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.core.userdetails.User;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.provisioning.InMemoryUserDetailsManager;
-import org.springframework.security.web.SecurityFilterChain;
-
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig {
-
-    private final UserDetailsServiceImpl userDetailsService;
-    private final PasswordEncoder passwordEncoder;
-
-    public SecurityConfig(UserDetailsServiceImpl userDetailsService, PasswordEncoder passwordEncoder) {
-        this.userDetailsService = userDetailsService;
-        this.passwordEncoder = passwordEncoder;
-    }
-
-    @Bean
-    public DaoAuthenticationProvider authenticationProvider() {
-        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
-        authProvider.setUserDetailsService(userDetailsService);
-        authProvider.setPasswordEncoder(passwordEncoder);
-        return authProvider;
-    }
-
-    @Bean
-    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
-        http
-                .authenticationProvider(authenticationProvider())
-                .authorizeHttpRequests(authz -> authz
-                        .requestMatchers("/login", "/register", "/css/**", "/js/**", "/images/**", "/error", "/home", "/").permitAll()
-                        .requestMatchers("/DeliveryMan/accept/**", "/DeliveryMan/deliver/**","/DeliveryMan/**").hasRole("DELIVERY_MAN")
-                        .requestMatchers("/admin/register").permitAll()
-                        .requestMatchers("/admin/**").hasRole("ADMIN")
-                        .anyRequest().authenticated()
-                )
-                .formLogin(form -> form
-                        .loginPage("/login")
-                        .loginProcessingUrl("/login")
-                        .usernameParameter("email")
-                        .passwordParameter("password")
-                        .defaultSuccessUrl("/post-login", true) // Change this line
-                        .failureUrl("/login?error=true")
-                        .permitAll()
-
-                )
-                .logout(logout -> logout
-                        .logoutSuccessUrl("/login?logout=true")
-                        .invalidateHttpSession(true)
-                        .deleteCookies("JSESSIONID")
-
-                        .permitAll()
-                )
-                .sessionManagement(session -> session
-                        .maximumSessions(1)
-                        .maxSessionsPreventsLogin(false)
-                );
-
-        return http.build();
-    }
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/config/WebConfig.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/config/WebConfig.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package mk.ukim.finki.easyfood.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-@Configuration
-public class WebConfig implements WebMvcConfigurer {
-
-    @Override
-    public void addResourceHandlers(ResourceHandlerRegistry registry) {
-        registry.addResourceHandler("/media/**")
-                .addResourceLocations("file:src/main/resources/images/media/");
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/Address.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Address.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,86 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import java.util.List;
-
-@Entity
-@Table(name = "address")
-public class Address {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "address_id")
-    private Long id;
-
-    @Column(name = "city", length = 100)
-    private String city;
-
-    @Column(name = "street", length = 200)
-    private String street;
-
-    @Column(name = "postal_code", length = 20)
-    private String postalCode;
-
-    @OneToMany(mappedBy = "address")
-    private List<Order> orders;
-
-    @ManyToMany(mappedBy = "addresses")
-    private List<AppUser> users;
-
-    // getters and setters
-
-    @Override
-    public String toString() {
-        return  city +
-                ", " + street +
-                ", " + postalCode;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getCity() {
-        return city;
-    }
-
-    public void setCity(String city) {
-        this.city = city;
-    }
-
-    public String getStreet() {
-        return street;
-    }
-
-    public void setStreet(String street) {
-        this.street = street;
-    }
-
-    public String getPostalCode() {
-        return postalCode;
-    }
-
-    public void setPostalCode(String postalCode) {
-        this.postalCode = postalCode;
-    }
-
-    public List<Order> getOrders() {
-        return orders;
-    }
-
-    public void setOrders(List<Order> orders) {
-        this.orders = orders;
-    }
-
-    public List<AppUser> getUsers() {
-        return users;
-    }
-
-    public void setUsers(List<AppUser> users) {
-        this.users = users;
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/Administrator.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Administrator.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,31 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-
-import java.time.LocalDate;
-
-@Entity
-@Table(name = "administrator")
-@PrimaryKeyJoinColumn(name = "user_id")
-@Data
-
-public class Administrator extends AppUser {
-
-    protected Administrator() {
-        super();
-    }
-
-    @Column(name = "authorized_from")
-    private LocalDate authorizedFrom;
-
-    @Column(name = "authorized_to")
-    private LocalDate authorizedTo;
-
-    // getters and setters
-    public Administrator(String email, String password, String firstName, String lastName, String phone, ROLE role) {
-        super(email, password, firstName, lastName, phone, role);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/AppUser.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/AppUser.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,122 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-
-import java.util.List;
-
-@Entity
-@Table(name = "app_user")
-@Inheritance(strategy = InheritanceType.JOINED)
-
-public class AppUser {
-    protected AppUser() {
-    }
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "user_id")
-    private Long id;
-
-    @Column(name = "first_name", nullable = false, length = 100)
-    private String firstName;
-
-    @Column(name = "last_name", nullable = false, length = 100)
-    private String lastName;
-
-    @Column(name = "email", nullable = false, unique = true, length = 150)
-    private String email;
-
-    @Column(name = "password", nullable = false, length = 255)
-    private String password;
-
-    @Column(name = "phone", length = 50)
-    private String phone;
-
-    @Enumerated(EnumType.STRING)
-    private ROLE role;
-
-    @ManyToMany(fetch = FetchType.EAGER)
-    @JoinTable(
-            name = "user_addresses",
-            joinColumns = @JoinColumn(name = "user_id"),
-            inverseJoinColumns = @JoinColumn(name = "address_id")
-    )
-    private List<Address> addresses;
-
-
-    public AppUser(String email, String password, String firstName, String lastName, String phone, ROLE role) {
-        this.email = email;
-        this.password = password;
-        this.firstName = firstName;
-        this.lastName = lastName;
-        this.phone = phone;
-        this.role = role;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    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 void setFirstName(String firstName) {
-        this.firstName = firstName;
-    }
-
-    public void setLastName(String lastName) {
-        this.lastName = lastName;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    public void setRole(ROLE role) {
-        this.role = role;
-    }
-
-    public void setAddresses(List<Address> addresses) {
-        this.addresses = addresses;
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/CartItems.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/CartItems.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,48 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-
-@Entity
-@Table(name = "cart_items")
-@IdClass(CartItemsId.class)
-public class CartItems {
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "cart_id")
-    private ShoppingCart cart;
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "item_id")
-    private Item item;
-
-    @Column(name = "quantity", nullable = false)
-    private Integer quantity;
-
-    // getters and setters
-
-    public Item getItem() {
-        return item;
-    }
-
-    public Integer getQuantity() {
-        return quantity;
-    }
-
-    public void setCart(ShoppingCart cart) {
-        this.cart = cart;
-    }
-
-    public void setItem(Item item) {
-        this.item = item;
-    }
-
-    public void setQuantity(Integer quantity) {
-        this.quantity = quantity;
-    }
-
-    public ShoppingCart getCart() {
-        return cart;
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/CartItemsId.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/CartItemsId.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,29 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import java.io.Serializable;
-import java.util.Objects;
-
-public class CartItemsId implements Serializable {
-    private Long cart;
-    private Long item;
-
-    public CartItemsId() {}
-
-    public CartItemsId(Long cart, Long item) {
-        this.cart = cart;
-        this.item = item;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof CartItemsId)) return false;
-        CartItemsId that = (CartItemsId) o;
-        return Objects.equals(cart, that.cart) && Objects.equals(item, that.item);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(cart, item);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/Category.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Category.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,46 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-import lombok.Getter;
-
-import java.util.List;
-
-@Entity
-@Table(name = "category")
-public class Category {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "category_id")
-    private Long id;
-
-    @Column(name = "name", length = 100)
-    private String name;
-
-    @Column(name = "description", columnDefinition = "TEXT")
-    private String description;
-
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/Costs.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Costs.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,32 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-import java.math.BigDecimal;
-import java.time.LocalDate;
-
-@Entity
-@Table(name = "costs")
-public class Costs {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "cost_id")
-    private Long id;
-
-    @ManyToOne
-    @JoinColumn(name = "restaurant_id")
-    private Restaurant restaurant;
-
-    @Column(name = "date")
-    private LocalDate date;
-
-    @Column(name = "amount")
-    private BigDecimal amount;
-
-    @Column(name = "type", length = 100)
-    private String type;
-
-    // getters and setters
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/Customer.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Customer.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,38 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import lombok.*;
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-import mk.ukim.finki.easyfood.model.Order;
-
-import java.util.List;
-
-
-@Entity
-@Table(name = "customer")
-@PrimaryKeyJoinColumn(name = "user_id")
-@Data
-public class Customer extends AppUser {
-    protected Customer() {
-    }
-
-    @OneToMany(mappedBy = "customer")
-    private List<Order> orders;
-
-    @OneToOne(mappedBy = "customer", cascade = CascadeType.ALL)
-    private ShoppingCart shoppingCart;
-
-
-    public Customer(String email, String password, String firstName, String lastName, String phone, ROLE role) {
-        super(email, password, firstName, lastName, phone, role);
-    }
-
-    public ShoppingCart getShoppingCart() {
-        return shoppingCart;
-    }
-
-    public List<Order> getOrders() {
-        return orders;
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/DeliveryAssignment.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/DeliveryAssignment.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,32 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-
-import jakarta.persistence.*;
-
-import java.time.LocalDate;
-
-@Entity
-@Table(name = "delivery_assignment")
-@IdClass(DeliveryAssignmentId.class)
-public class DeliveryAssignment {
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "deliveryfirm_id")
-    private DeliveryFirm deliveryFirm;
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "user_id")
-    private DeliveryMan deliveryMan;
-
-
-    @Column(name = "start_date")
-    private LocalDate startDate;
-
-    @Column(name = "end_date")
-    private LocalDate endDate;
-    // getters and setters
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/DeliveryAssignmentId.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/DeliveryAssignmentId.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,31 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import java.io.Serializable;
-import java.util.Objects;
-
-public class DeliveryAssignmentId implements Serializable {
-    private Long deliveryFirm;
-    private Long deliveryMan;
-
-    public DeliveryAssignmentId() {}
-
-    public DeliveryAssignmentId(Long deliveryFirm, Long deliveryMan) {
-        this.deliveryFirm = deliveryFirm;
-        this.deliveryMan = deliveryMan;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof DeliveryAssignmentId)) return false;
-        DeliveryAssignmentId that = (DeliveryAssignmentId) o;
-        return Objects.equals(deliveryFirm, that.deliveryFirm) && Objects.equals(deliveryMan, that.deliveryMan);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(deliveryFirm, deliveryMan);
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/DeliveryFirm.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/DeliveryFirm.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,20 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-
-@Entity
-@Table(name = "delivery_firm")
-public class DeliveryFirm {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "deliveryfirm_id")
-    private Long id;
-
-    @Column(name = "name", nullable = false, length = 150)
-    private String name;
-
-    // getters and setters
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/DeliveryMan.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/DeliveryMan.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,40 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-
-import java.util.List;
-
-@Entity
-@Table(name = "delivery_man")
-@PrimaryKeyJoinColumn(name = "user_id")
-public class DeliveryMan extends AppUser {
-    public DeliveryMan(String email, String password, String firstName, String lastName, String phone, ROLE role) {
-        super(email, password, firstName, lastName, phone, role);
-    }
-
-    protected DeliveryMan() {
-    }
-    @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: c/main/java/mk/ukim/finki/easyfood/model/Earnings.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Earnings.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,31 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-import java.math.BigDecimal;
-import java.time.LocalDate;
-
-@Entity
-@Table(name = "earnings")
-public class Earnings {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "earning_id")
-    private Long id;
-
-    @ManyToOne
-    @JoinColumn(name = "restaurant_id")
-    private Restaurant restaurant;
-
-    @Column(name = "date")
-    private LocalDate date;
-
-    @Column(name = "amount")
-    private BigDecimal amount;
-
-    @Column(name = "source", length = 100)
-    private String source;
-
-    // getters and setters
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/Ingredient.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Ingredient.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-
-@Entity
-@Table(name = "ingredient")
-public class Ingredient {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "ingredient_id")
-    private Long id;
-
-    @Column(name = "name", nullable = false, length = 100)
-    private String name;
-
-    // getters and setters
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/Item.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Item.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,92 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Set;
-
-@Entity
-@Table(name = "item")
-@Data
-public class Item {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "item_id")
-    private Long id;
-
-    @Column(name = "image_url", length = 255)
-    @Getter
-    private String imageUrl;
-
-    @Column(name = "name", nullable = false, length = 100)
-    @Getter
-
-    private String name;
-
-    @Column(name = "price", nullable = false)
-
-    private BigDecimal price;
-
-    @Column(name = "description", columnDefinition = "TEXT")
-    private String description;
-
-    @OneToMany(mappedBy = "item")
-    private Set<MenuItem> menuItems;
-
-    public Item() {
-    }
-
-    public Item(String imageUrl, String name, BigDecimal price, String description) {
-        this.imageUrl = imageUrl;
-        this.name = name;
-        this.price = price;
-        this.description = description;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getImageUrl() {
-        return imageUrl;
-    }
-
-    public void setImageUrl(String imageUrl) {
-        this.imageUrl = imageUrl;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public BigDecimal getPrice() {
-        return price;
-    }
-
-    public void setPrice(BigDecimal price) {
-        this.price = price;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/ItemCategory.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/ItemCategory.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-
-@Entity
-@Table(name = "item_category")
-@IdClass(ItemCategoryId.class)
-public class ItemCategory {
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "category_id")
-    private Category category;
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "item_id")
-    private Item item;
-
-    // getters and setters
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/ItemCategoryId.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/ItemCategoryId.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,30 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import java.io.Serializable;
-import java.util.Objects;
-
-public class ItemCategoryId implements Serializable {
-    private Long category;
-    private Long item;
-
-    public ItemCategoryId() {}
-
-    public ItemCategoryId(Long category, Long item) {
-        this.category = category;
-        this.item = item;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof ItemCategoryId)) return false;
-        ItemCategoryId that = (ItemCategoryId) o;
-        return Objects.equals(category, that.category) && Objects.equals(item, that.item);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(category, item);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/ItemIngredient.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/ItemIngredient.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,25 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-
-@Entity
-@Table(name = "item_ingredient")
-@IdClass(ItemIngredientId.class)
-public class ItemIngredient {
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "item_id")
-    private Item item;
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "ingredient_id")
-    private Ingredient ingredient;
-
-    @Column(name = "quantity", length = 50)
-    private String quantity;
-
-    // getters and setters
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/ItemIngredientId.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/ItemIngredientId.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,29 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import java.io.Serializable;
-import java.util.Objects;
-
-public class ItemIngredientId implements Serializable {
-    private Long item;
-    private Long ingredient;
-
-    public ItemIngredientId() {}
-
-    public ItemIngredientId(Long item, Long ingredient) {
-        this.item = item;
-        this.ingredient = ingredient;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof ItemIngredientId)) return false;
-        ItemIngredientId that = (ItemIngredientId) o;
-        return Objects.equals(item, that.item) && Objects.equals(ingredient, that.ingredient);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(item, ingredient);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/Menu.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Menu.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,72 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Entity
-@Table(name = "menu")
-@Data
-public class Menu {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "menu_id")
-    private Long id;
-
-    @OneToOne
-    @JoinColumn(name = "restaurant_id")
-    private Restaurant restaurant;
-
-    @Column(name = "created_at")
-    private LocalDateTime createdAt;
-
-    @Column(name = "updated_at")
-    private LocalDateTime updatedAt;
-
-    @Column(name = "name", length = 150)
-    private String name;
-
-    // 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: c/main/java/mk/ukim/finki/easyfood/model/MenuItem.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/MenuItem.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,43 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-@Data
-@NoArgsConstructor
-@Entity
-@Table(name = "menu_item")
-@IdClass(MenuItemId.class)
-public class MenuItem implements Serializable {
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "menu_id")
-    private Menu menu;
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "item_id")
-    private Item item;
-
-    public Item getItem() {
-        return item;
-    }
-
-
-    public Menu getMenu() {
-        return menu;
-    }
-
-    public void setMenu(Menu menu) {
-        this.menu = menu;
-    }
-
-    public void setItem(Item item) {
-        this.item = item;
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/MenuItemId.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/MenuItemId.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,29 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import java.io.Serializable;
-import java.util.Objects;
-
-public class MenuItemId implements Serializable {
-    private Long menu;
-    private Long item;
-
-    public MenuItemId() {}
-
-    public MenuItemId(Long menu, Long item) {
-        this.menu = menu;
-        this.item = item;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof MenuItemId)) return false;
-        MenuItemId that = (MenuItemId) o;
-        return Objects.equals(menu, that.menu) && Objects.equals(item, that.item);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(menu, item);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/Order.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Order.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,135 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Entity
-@Table(name = "orders")
-public class Order {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "order_id")
-    private Long id;
-
-    @ManyToOne
-    @JoinColumn(name = "address_id")
-    private Address address;
-
-    @ManyToOne
-    @JoinColumn(name = "restaurant_id")
-    private Restaurant restaurant;
-
-    @ManyToOne
-    @JoinColumn(name = "deliveryman_id")
-    private DeliveryMan deliveryMan;
-
-    @ManyToOne
-    @JoinColumn(name = "user_id")
-    private Customer customer;
-
-    @Column(name = "order_date")
-    private LocalDateTime orderDate;
-
-    @Column(name = "comment", columnDefinition = "TEXT")
-    private String comment;
-
-    @Column(name = "order_status", length = 50)
-    private String orderStatus;
-
-    @Column(name = "total_amount")
-    private BigDecimal totalAmount;
-
-    @OneToMany(mappedBy = "order", fetch = FetchType.LAZY)
-    private List<OrderItems> orderItems;
-
-    public Restaurant getRestaurant() {
-        return restaurant;
-    }
-
-    public List<OrderItems> getOrderItems() {
-        return orderItems;
-    }
-
-    public void setOrderItems(List<OrderItems> orderItems) {
-        this.orderItems = orderItems;
-    }
-
-    // getters and setters
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Address getAddress() {
-        return address;
-    }
-
-    public void setAddress(Address address) {
-        this.address = address;
-    }
-
-    public String getRestaurantName() {
-        return restaurant.getName();
-    }
-
-    public void setRestaurant(Restaurant restaurant) {
-        this.restaurant = restaurant;
-    }
-
-    public DeliveryMan getDeliveryMan() {
-        return deliveryMan;
-    }
-
-    public void setDeliveryMan(DeliveryMan deliveryMan) {
-        this.deliveryMan = deliveryMan;
-    }
-
-    public Customer getCustomer() {
-        return customer;
-    }
-
-    public void setCustomer(Customer customer) {
-        this.customer = customer;
-    }
-
-    public LocalDateTime getOrderDate() {
-        return orderDate;
-    }
-
-    public void setOrderDate(LocalDateTime orderDate) {
-        this.orderDate = orderDate;
-    }
-
-    public String getComment() {
-        return comment;
-    }
-
-    public void setComment(String comment) {
-        this.comment = comment;
-    }
-
-    public String getOrderStatus() {
-        return orderStatus;
-    }
-
-    public void setOrderStatus(String orderStatus) {
-        this.orderStatus = orderStatus;
-    }
-
-    public BigDecimal getTotalAmount() {
-        return totalAmount;
-    }
-
-    public void setTotalAmount(BigDecimal totalAmount) {
-        this.totalAmount = totalAmount;
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/OrderItems.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/OrderItems.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,63 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-
-import java.math.BigDecimal;
-
-@Entity
-@Table(name = "order_items")
-@IdClass(OrderItemsId.class)
-public class OrderItems {
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "order_id")
-    private Order order;
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "item_id")
-    private Item item;
-
-    @Column(name = "quantity", nullable = false)
-    private Integer quantity;
-
-    @Column(name = "total_price")
-    private BigDecimal totalPrice;
-
-    // getters and setters
-
-
-    public Order getOrder() {
-        return order;
-    }
-
-    public void setOrder(Order order) {
-        this.order = order;
-    }
-
-    public Item getItem() {
-        return item;
-    }
-
-    public void setItem(Item item) {
-        this.item = item;
-    }
-
-    public Integer getQuantity() {
-        return quantity;
-    }
-
-    public void setQuantity(Integer quantity) {
-        this.quantity = quantity;
-    }
-
-    public BigDecimal getTotalPrice() {
-        return totalPrice;
-    }
-
-    public void setTotalPrice(BigDecimal totalPrice) {
-        this.totalPrice = totalPrice;
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/OrderItemsId.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/OrderItemsId.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,31 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import java.io.Serializable;
-import java.util.Objects;
-
-public class OrderItemsId implements Serializable {
-    private Long order;
-    private Long item;
-
-    public OrderItemsId() {}
-
-    public OrderItemsId(Long order, Long item) {
-        this.order = order;
-        this.item = item;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof OrderItemsId)) return false;
-        OrderItemsId that = (OrderItemsId) o;
-        return Objects.equals(order, that.order) && Objects.equals(item, that.item);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(order, item);
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/Restaurant.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/Restaurant.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,118 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-
-import java.time.LocalTime;
-import java.util.List;
-
-@Entity
-@Table(name = "restaurant")
-@Data
-public class Restaurant {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "restaurant_id")
-    private Long id;
-
-    @OneToOne
-    @JoinColumn(name = "address_id")
-    private Address address;
-
-    @ManyToMany(mappedBy = "restaurants")
-    private List<RestaurantOwner> owners;
-
-    @Column(name = "name", nullable = false, length = 150)
-    private String name;
-
-
-
-    @Column(name = "website_url", length = 255)
-    private String websiteUrl;
-
-    @Column(name = "opening_time")
-    private LocalTime openingTime;
-
-    @Column(name = "closing_time")
-    private LocalTime closingTime;
-
-    @Column(name = "email", length = 150)
-    private String email;
-
-    @Column(name = "phone_number", length = 50)
-    private String phoneNumber;
-
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Address getAddress() {
-        return address;
-    }
-
-    public void setAddress(Address address) {
-        this.address = address;
-    }
-
-    public List<RestaurantOwner> getOwners() {
-        return owners;
-    }
-
-    public void setOwners(List<RestaurantOwner> owners) {
-        this.owners = owners;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getWebsiteUrl() {
-        return websiteUrl;
-    }
-
-    public void setWebsiteUrl(String websiteUrl) {
-        this.websiteUrl = websiteUrl;
-    }
-
-    public LocalTime getOpeningTime() {
-        return openingTime;
-    }
-
-    public void setOpeningTime(LocalTime openingTime) {
-        this.openingTime = openingTime;
-    }
-
-    public LocalTime getClosingTime() {
-        return closingTime;
-    }
-
-    public void setClosingTime(LocalTime closingTime) {
-        this.closingTime = closingTime;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public String getPhoneNumber() {
-        return phoneNumber;
-    }
-
-    public void setPhoneNumber(String phoneNumber) {
-        this.phoneNumber = phoneNumber;
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/RestaurantCategory.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/RestaurantCategory.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-
-@Entity
-@Table(name = "restaurant_category")
-@IdClass(RestaurantCategoryId.class)
-public class RestaurantCategory {
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "category_id")
-    private Category category;
-
-    @Id
-    @ManyToOne
-    @JoinColumn(name = "restaurant_id")
-    private Restaurant restaurant;
-
-    // getters and setters
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/RestaurantCategoryId.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/RestaurantCategoryId.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,29 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import java.io.Serializable;
-import java.util.Objects;
-
-public class RestaurantCategoryId implements Serializable {
-    private Long category;
-    private Long restaurant;
-
-    public RestaurantCategoryId() {}
-
-    public RestaurantCategoryId(Long category, Long restaurant) {
-        this.category = category;
-        this.restaurant = restaurant;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof RestaurantCategoryId)) return false;
-        RestaurantCategoryId that = (RestaurantCategoryId) o;
-        return Objects.equals(category, that.category) && Objects.equals(restaurant, that.restaurant);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(category, restaurant);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/RestaurantOwner.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/RestaurantOwner.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,43 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-
-import jakarta.persistence.*;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-
-import java.time.LocalTime;
-import java.util.List;
-
-@Entity
-@Table(name = "restaurant_owner")
-@PrimaryKeyJoinColumn(name = "user_id")
-public class RestaurantOwner extends AppUser {
-
-
-    @ManyToMany
-    @JoinTable(
-            name = "restaurant_owners",
-            joinColumns = @JoinColumn(name = "user_id"),
-            inverseJoinColumns = @JoinColumn(name = "restaurant_id")
-    )
-    private List<Restaurant> restaurants;
-    // getters and setters
-
-    public RestaurantOwner(String email, String password, String firstName, String lastName, String phone, ROLE role) {
-        super(email, password, firstName, lastName, phone, role);
-    }
-
-    public RestaurantOwner() {
-
-    }
-
-
-    public List<Restaurant> getRestaurants() {
-        return restaurants;
-    }
-
-    public void setRestaurants(List<Restaurant> restaurants) {
-        this.restaurants = restaurants;
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/ShoppingCart.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/ShoppingCart.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,59 +1,0 @@
-package mk.ukim.finki.easyfood.model;
-
-import jakarta.persistence.*;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Entity
-@Table(name = "shopping_cart")
-public class ShoppingCart {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "cart_id")
-    private Long id;
-
-    @OneToOne
-    @JoinColumn(name = "user_id")
-    private Customer customer;
-
-    @OneToMany(mappedBy = "cart", cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<CartItems> cartItems = new ArrayList<>();
-
-    public ShoppingCart() {
-        this.cartItems = new ArrayList<>();
-    }
-
-    public ShoppingCart(Customer customer) {
-        this.customer = customer;
-        this.cartItems = new ArrayList<>();
-    }
-
-    public void setCartItems(List<CartItems> cartItems) {
-        this.cartItems = cartItems;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public void setCustomer(Customer customer) {
-        this.customer = customer;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public Customer getCustomer() {
-        return customer;
-    }
-
-    public List<CartItems> getCartItems() {
-        if (cartItems == null) {
-            cartItems = new ArrayList<>();
-        }
-        return cartItems;
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/enumerations/ORDER_STATUS.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/enumerations/ORDER_STATUS.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.easyfood.model.enumerations;
-
-public enum ORDER_STATUS {
-    ORDER_CONFIRMED,
-    PREPARING,
-    OUT_FOR_DELIVERY,
-    DELIVERED
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/enumerations/ROLE.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/enumerations/ROLE.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.easyfood.model.enumerations;
-
-public enum ROLE {
-    CUSTOMER,
-    DELIVERY_MAN,
-    RESTAURANT_OWNER,
-    ADMIN
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/CategoryNotFoundException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/CategoryNotFoundException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND)
-public class CategoryNotFoundException extends RuntimeException {
-    public CategoryNotFoundException(Long categoryId) {
-        super(String.format("Category with id %d does not exist.", categoryId));
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/InvalidArgumentsException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/InvalidArgumentsException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-public class InvalidArgumentsException extends RuntimeException {
-    public InvalidArgumentsException() {
-        super("Invalid arguments exception");
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/InvalidUserCredentialsException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/InvalidUserCredentialsException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-public class InvalidUserCredentialsException extends RuntimeException {
-    public InvalidUserCredentialsException() {
-        super("Invalid user credentials exception");
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/ItemNotFoundException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/ItemNotFoundException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,7 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-public class ItemNotFoundException extends RuntimeException{
-    public ItemNotFoundException(Long itemId) {
-        super(String.format("Item with id %d does not exist.", itemId));
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/MenuNotFoundException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/MenuNotFoundException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,7 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-public class MenuNotFoundException extends RuntimeException {
-    public MenuNotFoundException(Long menuId) {
-        super(String.format("Menu with id %d does not exist.", menuId));
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/PasswordsDoNotMatchException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/PasswordsDoNotMatchException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-public class PasswordsDoNotMatchException extends RuntimeException {
-    public PasswordsDoNotMatchException() {
-        super("Passwords do not match exception");
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/RestaurantNotFoundException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/RestaurantNotFoundException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND)
-public class RestaurantNotFoundException extends RuntimeException {
-    public RestaurantNotFoundException(Long restaurantId) {
-        super(String.format("Restaurant with id %d does not exist.", restaurantId));
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/UserNotFoundException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/UserNotFoundException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,8 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-
-public class UserNotFoundException extends RuntimeException {
-    public UserNotFoundException(String email) {
-        super(String.format("User with email %s does not exist.", email));
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/model/exceptions/UsernameAlreadyExistsException.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/model/exceptions/UsernameAlreadyExistsException.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.easyfood.model.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(HttpStatus.PRECONDITION_FAILED)
-public class UsernameAlreadyExistsException extends RuntimeException {
-    public UsernameAlreadyExistsException(String username) {
-        super(String.format("User with username: %s already exists", username));
-    }
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/repository/AddressRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/AddressRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,18 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Address;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public interface AddressRepository extends JpaRepository<Address, Long> {
-    List<Address> findAllById(Long id);
-
-    @Query("SELECT a FROM Address a JOIN a.users u WHERE u.id = :userId")
-    List<Address> findAllByUserId(@Param("userId") Long userId);
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/AdministratorRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/AdministratorRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,9 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Administrator;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface AdministratorRepository extends JpaRepository<Administrator, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/AppUserRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/AppUserRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,13 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-@Repository
-public interface AppUserRepository extends JpaRepository<AppUser, Long> {
-    Optional<AppUser> findByEmail(String email);
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/CartItemsRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/CartItemsRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,29 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.CartItems;
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.model.ShoppingCart;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Optional;
-
-
-@Repository
-public interface CartItemsRepository extends JpaRepository<CartItems, Long> {
-    Optional<CartItems> findByCartAndItem(ShoppingCart cart, Item item);
-
-    Optional<CartItems> findByCart_CustomerAndItem(Customer customer, Item item);
-
-    @Modifying
-    @Transactional
-    @Query("DELETE FROM CartItems c WHERE c.item.id = :itemId")
-    void deleteByItemId(Long itemId);
-
-    List<CartItems> findByCart_Customer_Id(Long id);
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/CategoryRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/CategoryRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,9 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Category;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface CategoryRepository extends JpaRepository<Category, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/CostsRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/CostsRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,9 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Costs;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface CostsRepository extends JpaRepository<Costs, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/CustomerRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/CustomerRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,13 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Customer;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-@Repository
-public interface CustomerRepository extends JpaRepository<Customer, Long> {
-    Optional<Customer> findByEmail(String email);
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/DeliveryAssignmentRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/DeliveryAssignmentRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,10 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.DeliveryAssignment;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-
-@Repository
-public interface DeliveryAssignmentRepository extends JpaRepository<DeliveryAssignment, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/DeliveryFirmRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/DeliveryFirmRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,9 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.DeliveryFirm;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface DeliveryFirmRepository extends JpaRepository<DeliveryFirm, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/DeliveryManRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/DeliveryManRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.DeliveryMan;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-@Repository
-public interface DeliveryManRepository extends JpaRepository<DeliveryMan, Long> {
-    Optional<DeliveryMan> findByEmail(String email);
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/EarningsRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/EarningsRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,9 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Earnings;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface EarningsRepository extends JpaRepository<Earnings, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/IngredientRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/IngredientRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,9 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Ingredient;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface IngredientRepository extends JpaRepository<Ingredient, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/ItemCategoryRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/ItemCategoryRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,13 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.ItemCategory;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-
-@Repository
-public interface ItemCategoryRepository extends JpaRepository<ItemCategory, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/ItemIngredientRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/ItemIngredientRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.ItemIngredient;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-@Repository
-public interface ItemIngredientRepository extends JpaSpecificationRepository<ItemIngredient, Long> {
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/ItemRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/ItemRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,57 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Item;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.Optional;
-
-@Repository
-public interface ItemRepository extends JpaRepository<Item, Long>, JpaSpecificationExecutor<Item> {
-    Optional<Item> findByName(String name);
-
-    List<Item> findAllByIdIn(List<Long> ids);
-
-    @Query("SELECT i FROM Item i JOIN ItemCategory ic ON i.id = ic.item.id WHERE ic.category.id = :categoryId")
-    List<Item> findItemsByCategoryId(@Param("categoryId") Long categoryId);
-
-    @Query(value = """
-                SELECT i.* FROM item i
-                JOIN order_items oi ON i.item_id = oi.item_id
-                GROUP BY i.item_id
-                ORDER BY SUM(oi.quantity) DESC
-                LIMIT 5
-            """, nativeQuery = true)
-    List<Item> findTop5PopularItems();
-
-
-    @Query(value = """
-                SELECT i.* FROM item i
-                JOIN order_items oi ON i.item_id = oi.item_id
-                JOIN orders o ON o.order_id = oi.order_id
-                WHERE o.user_id = :userId
-                GROUP BY i.item_id
-                ORDER BY SUM(oi.quantity) DESC
-                LIMIT 5
-            """, nativeQuery = true)
-    List<Item> findTop5ItemsForUser(@Param("userId") Long userId);
-
-
-    @Query(value = """
-                SELECT i.* 
-                FROM item i
-                JOIN order_items oi ON i.item_id = oi.item_id
-                JOIN order_items oi2 ON oi2.order_id = oi.order_id
-                WHERE oi2.item_id IN :cartItemIds AND i.item_id NOT IN :cartItemIds
-                GROUP BY i.item_id
-                ORDER BY COUNT(*) DESC
-                LIMIT 5
-            """, nativeQuery = true)
-    List<Item> findItemsBoughtTogether(@Param("cartItemIds") List<Long> cartItemIds);
-
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/repository/JpaSpecificationRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/JpaSpecificationRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.repository.NoRepositoryBean;
-
-@NoRepositoryBean
-public interface JpaSpecificationRepository<T, ID> extends JpaRepository<T, ID> {
-    Page<T> findAll(Specification<T> filter, Pageable page);
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/MenuItemRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/MenuItemRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,26 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.MenuItem;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Optional;
-
-@Repository
-public interface MenuItemRepository extends JpaRepository<MenuItem, Long> {
-    List<MenuItem> findByMenu(Menu menu);
-
-    List<MenuItem> findByItem(Item item);
-
-    Optional<MenuItem> findFirstByItem(Item item);
-
-    List<MenuItem> findByMenuId(Long menuId);
-
-    void deleteByItemId(Long itemId);
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/MenuRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/MenuRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Restaurant;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public interface MenuRepository extends JpaRepository<Menu, Long> {
-
-    Menu findByRestaurantId(Long restaurantId);
-
-    List<Menu> findByRestaurant(Restaurant restaurant);
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/OrderItemsRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/OrderItemsRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,25 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Order;
-import mk.ukim.finki.easyfood.model.OrderItems;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public interface OrderItemsRepository extends JpaRepository<OrderItems, Long> {
-    List<OrderItems> findByOrder(Order order);
-
-    @Query("SELECT oi FROM OrderItems oi WHERE oi.order.id = :orderId")
-    List<OrderItems> findByOrderId(@Param("orderId") Long orderId);
-
-    @Modifying
-    @Query("UPDATE OrderItems SET item = null WHERE item.id = :itemId")
-    void setItemIdToNull(@Param("itemId") Long itemId);
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/OrderRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/OrderRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,30 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.DeliveryMan;
-import mk.ukim.finki.easyfood.model.Order;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public interface OrderRepository extends JpaRepository<Order, Long> {
-    List<Order> findAllByDeliveryManAndOrderStatus(DeliveryMan deliveryMan, String orderStatus);
-
-    List<Order> findAllById(Long id);
-
-    List<Order> findByCustomerIdOrderByOrderDateDesc(Long customerId);
-
-    @Modifying
-    @Query("UPDATE Order SET customer = null WHERE customer.id = :userId")
-    void setUserIdToNull(@Param("userId") Long userId);
-
-    @Modifying
-    @Query("UPDATE Order SET restaurant = null WHERE restaurant.id = :restaurantId")
-    void setRestaurantIdToNull(@Param("restaurantId") Long restaurantId);
-}
-
-
Index: c/main/java/mk/ukim/finki/easyfood/repository/RestaurantOwnerRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/RestaurantOwnerRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.RestaurantOwner;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-@Repository
-public interface RestaurantOwnerRepository extends JpaRepository<RestaurantOwner, Long> {
-    Optional<RestaurantOwner> findByEmail(String email);
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/RestaurantRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/RestaurantRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Restaurant;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface RestaurantRepository extends JpaRepository<Restaurant, Long> {
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/ShoppingCartRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/ShoppingCartRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,25 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.model.ShoppingCart;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.Optional;
-
-@Repository
-public interface ShoppingCartRepository extends JpaRepository<ShoppingCart, Long> {
-
-    Optional<ShoppingCart> findByCustomer(Customer customer);
-
-    default Optional<ShoppingCart> findByCustomerId(Long customerId) {
-        return findAll().stream()
-                .filter(cart -> cart.getCustomer().getId().equals(customerId))
-                .findFirst();
-    }
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/repository/UserRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/repository/UserRepository.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,14 +1,0 @@
-package mk.ukim.finki.easyfood.repository;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Customer;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-@Repository
-public interface UserRepository extends JpaSpecificationRepository<AppUser, Long> {
-    Optional<AppUser> findByEmailAndPassword(String email, String password);
-
-    Optional<AppUser> findByEmail(String email);
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/AddressService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/AddressService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,24 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.Address;
-import mk.ukim.finki.easyfood.model.Customer;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface AddressService {
-    List<Address> findAllByUserId(Long id);
-
-
-    void removeAddressFromUser(Customer customer, Long addressId);
-
-    @Transactional
-    Address addAddressToUser(Customer customer, Address address);
-
-
-    Address findById(Long addressId);
-
-    Address save(Address address);
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/AdminService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/AdminService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,51 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Restaurant;
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Item;
-
-import java.util.List;
-
-public interface AdminService {
-
-    long getTotalUsersCount();
-
-    long getTotalRestaurantsCount();
-
-    long getTotalMenusCount();
-
-    long getTotalItemsCount();
-
-    List<AppUser> getAllUsers();
-
-    AppUser getUserById(Long id);
-
-    void updateUser(Long id, String firstName, String lastName, String email, String phone);
-
-    void deleteUser(Long id);
-
-    List<Restaurant> getAllRestaurants();
-
-    Restaurant getRestaurantById(Long id);
-
-    void updateRestaurant(Long id, String name, String address, String phoneNumber);
-
-    void deleteRestaurant(Long id);
-
-    List<Menu> getAllMenus();
-
-    Menu getMenuById(Long id);
-
-    void updateMenu(Long id, String name, Long restaurantId);
-
-    void deleteMenu(Long id);
-
-    List<Item> getAllItems();
-
-    Item getItemById(Long id);
-
-    void updateItem(Long id, String name, String description, String price, String imageUrl);
-
-    void deleteItem(Long id);
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/CartItemsService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/CartItemsService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,6 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.CartItems;
-
-public interface CartItemsService {
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/CategoryService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/CategoryService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,24 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-
-import mk.ukim.finki.easyfood.model.Category;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface CategoryService {
-    List<Category> listCategories();
-
-    Optional<Category> create(String name, String description);
-
-    Optional<Category> update(Long id, String name, String description);
-
-    void delete(String name);
-
-    void deleteById(Long id);
-
-    List<Category> searchCategories(String text);
-
-    Optional<Category> findById(Long id);
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/ItemService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/ItemService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.Item;
-import org.springframework.data.domain.Page;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Optional;
-
-public interface ItemService {
-    List<Item> findAll();
-
-    List<Item> findRecommendedItems(Long userId);
-
-    public List<Item> getItemsByMenuId(Long menuId);
-
-    Item findById(Long itemId);
-
-    List<Item> searchItems(String searchTerm);
-
-    List<Item> findItemsByCategoryId(Long categoryId);
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/MenuItemService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/MenuItemService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,24 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.MenuItem;
-import mk.ukim.finki.easyfood.model.Restaurant;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface MenuItemService {
-    List<MenuItem> findAll();
-
-    List<MenuItem> findByMenu(Menu menu);
-
-    MenuItem createMenuItem(MenuItem menuItem);
-
-    void deleteMenuItem(MenuItem menuItem);
-
-    MenuItem findById(Long id);
-
-    public Optional<Restaurant> getRestaurantByItem(Item item);
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/service/MenuService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/MenuService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,24 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Restaurant;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface MenuService {
-
-    public Menu getMenuByRestaurantId(Long restaurantId);
-
-    List<Menu> findAll();
-
-    Optional<Menu> findById(Long id);
-
-    Menu createMenu(Menu menu);
-
-    Menu updateMenu(Menu menu);
-
-    void deleteMenu(Long id);
-
-    List<Menu> findByRestaurant(Restaurant restaurant);
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/OrderService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/OrderService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,40 +1,0 @@
-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;
-import java.util.Optional;
-
-public interface OrderService {
-    @Transactional
-    public Order updateOrderStatus(Long orderId, ORDER_STATUS newStatus);
-
-    public List<Order> listOrdersByDeliveryManAndOrderStatus(Long deliveryMan, String orderStatus);
-
-    List<Order> listAllOrders();
-
-    List<Order> findAllByUserId(Long id);
-
-    Order save(Order order);
-
-    void saveOrderItem(OrderItems orderItem);
-
-    Optional<Order> findOrderById(Long orderId);
-
-    List<OrderItems> findOrderItemsByOrderId(Long orderId);
-
-    Order createOrderWithItems(Order order, List<CartItems> cartItems);
-
-    Optional<Order> findById(Long orderId);
-
-    List<OrderItems> getOrderItems(Long orderId);
-
-    List<Order> getOrdersByCustomerId(Long customerId);
-
-    void updateOrderStatus(Long orderId, String status);
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/RestaurantOwnerService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/RestaurantOwnerService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,9 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.Restaurant;
-import mk.ukim.finki.easyfood.model.RestaurantOwner;
-
-import java.time.LocalTime;
-
-public interface RestaurantOwnerService {
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/RestaurantService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/RestaurantService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,10 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Restaurant;
-
-
-public interface RestaurantService {
-    Restaurant findRestaurantById(Long id);
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/ShoppingCartService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/ShoppingCartService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,35 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.CartItems;
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.model.ShoppingCart;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-public interface ShoppingCartService {
-
-    public List<CartItems> getItemsInCartByCustomerId(Long customerId);
-
-    public BigDecimal totalItemsPrice(Long customerId);
-
-    void addItemToCart(Customer customer, Item item, int quantity);
-
-    List<CartItems> getCartForUser(Long userId);
-
-    void removeItemFromCart(Customer customer, Item item);
-
-    void updateItemQuantity(Customer customer, Item item, int quantity);
-
-    int getNumberOfItemsInCart(Long customerId);
-
-    public ShoppingCart getActiveShoppingCart(Long userId);
-
-    public void deleteShoppingCart(Long userId);
-
-    List<CartItems> getCartItems(Long customerId);
-
-    void clearCart(Long customerId);
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/service/UserService.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/UserService.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.easyfood.service;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.DeliveryMan;
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-
-import java.util.Optional;
-
-public interface UserService {
-    AppUser register(String fullName, String email, String phoneNumber, String password, String repeatPassword);
-
-    Customer getCustomerById(Long id);
-
-    Optional<Customer> findByEmail(String email);
-
-    Optional<DeliveryMan> findByEmailDM(String email);
-
-    public Customer save(Customer customer);
-
-    DeliveryMan registerDeliveryMan(String fullName, String email, String phoneNumber,
-                                    String password, String repeatPassword);
-
-    DeliveryMan getDeliveryManById(Long id);
-
-    Optional<DeliveryMan> findDeliveryManByEmail(String email);
-
-    DeliveryMan save(DeliveryMan deliveryMan);
-
-    AppUser registerUserWithRole(String fullName, String email, String phoneNumber,
-                                 String password, String repeatPassword, ROLE role);
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/AddressServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/AddressServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,71 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.Address;
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.repository.AddressRepository;
-import mk.ukim.finki.easyfood.repository.CustomerRepository;
-import mk.ukim.finki.easyfood.service.AddressService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-
-import java.util.List;
-
-@Service
-public class AddressServiceImpl implements AddressService {
-
-    private final AddressRepository addressRepository;
-    private final CustomerRepository customerRepository;
-
-    public AddressServiceImpl(AddressRepository addressRepository, CustomerRepository customerRepository) {
-        this.addressRepository = addressRepository;
-        this.customerRepository = customerRepository;
-    }
-
-    @Override
-    public List<Address> findAllByUserId(Long id) {
-        return this.addressRepository.findAllById(id);
-    }
-
-
-    @Transactional
-    @Override
-    public Address addAddressToUser(Customer customer, Address address) {
-        Address savedAddress = addressRepository.save(address);
-
-        customer.getAddresses().add(savedAddress);
-
-        customerRepository.save(customer);
-
-        return savedAddress;
-    }
-
-    @Override
-    @Transactional
-    public void removeAddressFromUser(Customer customer, Long addressId) {
-        Address addressToRemove = addressRepository.findById(addressId)
-                .orElseThrow(() -> new RuntimeException("Address not found with id: " + addressId));
-
-        customer.getAddresses().removeIf(address -> address.getId().equals(addressId));
-
-        customerRepository.save(customer);
-
-        if (addressToRemove.getUsers() == null || addressToRemove.getUsers().isEmpty() ||
-                (addressToRemove.getUsers().size() == 1 && addressToRemove.getUsers().contains(customer))) {
-            addressRepository.delete(addressToRemove);
-        }
-    }
-
-    @Override
-    public Address findById(Long addressId) {
-        return addressRepository.findById(addressId)
-                .orElseThrow(() -> new RuntimeException("Address not found with id: " + addressId));
-    }
-
-    @Override
-    public Address save(Address address) {
-        return addressRepository.save(address);
-    }
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/AdminServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/AdminServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,182 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.*;
-import mk.ukim.finki.easyfood.repository.*;
-import mk.ukim.finki.easyfood.service.AdminService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Service
-public class AdminServiceImpl implements AdminService {
-
-    private final AppUserRepository userRepository;
-    private final RestaurantRepository restaurantRepository;
-    private final MenuRepository menuRepository;
-    private final ItemRepository itemRepository;
-    private final MenuItemRepository menuItemRepository;
-    private final OrderRepository ordersRepository;
-
-    public AdminServiceImpl(AppUserRepository userRepository,
-                            RestaurantRepository restaurantRepository,
-                            MenuRepository menuRepository,
-                            ItemRepository itemRepository,
-                            MenuItemRepository menuItemRepository,
-                            OrderRepository ordersRepository) {
-        this.userRepository = userRepository;
-        this.restaurantRepository = restaurantRepository;
-        this.menuRepository = menuRepository;
-        this.itemRepository = itemRepository;
-        this.menuItemRepository = menuItemRepository;
-        this.ordersRepository = ordersRepository;
-    }
-
-    @Override
-    public long getTotalUsersCount() {
-        return userRepository.count();
-    }
-
-    @Override
-    public long getTotalRestaurantsCount() {
-        return restaurantRepository.count();
-    }
-
-    @Override
-    public long getTotalMenusCount() {
-        return menuRepository.count();
-    }
-
-    @Override
-    public long getTotalItemsCount() {
-        return itemRepository.count();
-    }
-
-    @Override
-    public List<AppUser> getAllUsers() {
-        return userRepository.findAll();
-    }
-
-    @Override
-    public AppUser getUserById(Long id) {
-        return userRepository.findById(id)
-                .orElseThrow(() -> new RuntimeException("User not found with id: " + id));
-    }
-
-    @Override
-    public void updateUser(Long id, String firstName, String lastName, String email, String phone) {
-        AppUser user = getUserById(id);
-        user.setFirstName(firstName);
-        user.setLastName(lastName);
-        user.setEmail(email);
-        user.setPhone(phone);
-        userRepository.save(user);
-    }
-
-    @Override
-    @Transactional
-    public void deleteUser(Long id) {
-        if (!userRepository.existsById(id)) {
-            throw new RuntimeException("User not found with id: " + id);
-        }
-
-        ordersRepository.setUserIdToNull(id);
-
-        userRepository.deleteById(id);
-    }
-
-    @Override
-    public List<Restaurant> getAllRestaurants() {
-        return restaurantRepository.findAll();
-    }
-
-    @Override
-    public Restaurant getRestaurantById(Long id) {
-        return restaurantRepository.findById(id)
-                .orElseThrow(() -> new RuntimeException("Restaurant not found with id: " + id));
-    }
-
-    @Override
-    public void updateRestaurant(Long id, String name, String websiteUrl, String phoneNumber) {
-        Restaurant restaurant = getRestaurantById(id);
-        restaurant.setName(name);
-        restaurant.setWebsiteUrl(websiteUrl);
-        restaurant.setPhoneNumber(phoneNumber);
-        restaurantRepository.save(restaurant);
-    }
-
-    @Override
-    @Transactional
-    public void deleteRestaurant(Long id) {
-        if (!restaurantRepository.existsById(id)) {
-            throw new RuntimeException("Restaurant not found with id: " + id);
-        }
-        ordersRepository.setRestaurantIdToNull(id);
-        restaurantRepository.deleteById(id);
-    }
-
-    @Override
-    public List<Menu> getAllMenus() {
-        return menuRepository.findAll();
-    }
-
-    @Override
-    public Menu getMenuById(Long id) {
-        return menuRepository.findById(id)
-                .orElseThrow(() -> new RuntimeException("Menu not found with id: " + id));
-    }
-
-    @Override
-    public void updateMenu(Long id, String name, Long restaurantId) {
-        Menu menu = getMenuById(id);
-        Restaurant restaurant = getRestaurantById(restaurantId);
-
-        menu.setName(name);
-        menu.setRestaurant(restaurant);
-        menu.setUpdatedAt(LocalDateTime.now());
-        menuRepository.save(menu);
-    }
-
-    @Override
-    @Transactional
-    public void deleteMenu(Long id) {
-        if (!menuRepository.existsById(id)) {
-            throw new RuntimeException("Menu not found with id: " + id);
-        }
-        List<MenuItem> menuItems = menuItemRepository.findByMenuId(id);
-        for (MenuItem menuItem : menuItems) {
-            deleteItem(menuItem.getMenu().getId());
-        }
-        menuRepository.deleteById(id);
-    }
-    @Override
-    public List<Item> getAllItems() {
-        return itemRepository.findAll();
-    }
-
-    @Override
-    public Item getItemById(Long id) {
-        return itemRepository.findById(id)
-                .orElseThrow(() -> new RuntimeException("Item not found with id: " + id));
-    }
-
-    @Override
-    public void updateItem(Long id, String name, String description, String price, String imageUrl) {
-        Item item = getItemById(id);
-        item.setName(name);
-        item.setDescription(description);
-        item.setPrice(new BigDecimal(price));
-        item.setImageUrl(imageUrl);
-        itemRepository.save(item);
-    }
-
-    @Override
-    @Transactional
-    public void deleteItem(Long id) {
-        if (!itemRepository.existsById(id)) {
-            throw new RuntimeException("Item not found with id: " + id);
-        }
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/CartItemsServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/CartItemsServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.CartItems;
-import mk.ukim.finki.easyfood.model.ShoppingCart;
-import mk.ukim.finki.easyfood.repository.CartItemsRepository;
-import mk.ukim.finki.easyfood.repository.ShoppingCartRepository;
-import mk.ukim.finki.easyfood.service.CartItemsService;
-import org.springframework.stereotype.Service;
-
-@Service
-public class CartItemsServiceImpl implements CartItemsService {
-    private final CartItemsRepository cartItemsRepository;
-    private final ShoppingCartRepository shoppingCartRepository;
-
-    public CartItemsServiceImpl(CartItemsRepository cartItemsRepository, ShoppingCartRepository shoppingCartRepository) {
-        this.cartItemsRepository = cartItemsRepository;
-        this.shoppingCartRepository = shoppingCartRepository;
-    }
-
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/CategoryServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/CategoryServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,55 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.Category;
-import mk.ukim.finki.easyfood.repository.CategoryRepository;
-import mk.ukim.finki.easyfood.service.CategoryService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Optional;
-
-@Service
-public class CategoryServiceImpl implements CategoryService {
-
-    private final CategoryRepository categoryRepository;
-
-    public CategoryServiceImpl(CategoryRepository categoryRepository) {
-        this.categoryRepository = categoryRepository;
-    }
-
-
-    @Override
-    public List<Category> listCategories() {
-        return categoryRepository.findAll();
-    }
-
-    @Override
-    public Optional<Category> create(String name, String description) {
-        return Optional.empty();
-    }
-
-    @Override
-    public Optional<Category> update(Long id, String name, String description) {
-        return Optional.empty();
-    }
-
-    @Override
-    public void delete(String name) {
-
-    }
-
-    @Override
-    public void deleteById(Long id) {
-
-    }
-
-    @Override
-    public List<Category> searchCategories(String text) {
-        return List.of();
-    }
-
-    @Override
-    public Optional<Category> findById(Long id) {
-        return Optional.empty();
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/ItemServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/ItemServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,108 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import jakarta.persistence.criteria.Join;
-import mk.ukim.finki.easyfood.model.*;
-
-import mk.ukim.finki.easyfood.model.exceptions.ItemNotFoundException;
-import mk.ukim.finki.easyfood.repository.*;
-import mk.ukim.finki.easyfood.service.ItemService;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import jakarta.persistence.criteria.Predicate; // This is the correct one
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Service
-public class ItemServiceImpl implements ItemService {
-
-    private final ItemRepository itemRepository;
-    private final MenuItemRepository menuItemRepository;
-    private final MenuRepository menuRepository;
-    private final RestaurantRepository restaurantRepository;
-    private final CartItemsRepository cartItemsRepository;
-
-    public ItemServiceImpl(ItemRepository itemRepository,
-                           MenuItemRepository menuItemRepository,
-                           MenuRepository menuRepository,
-                           RestaurantRepository restaurantRepository, CartItemsRepository cartItemsRepository) {
-        this.itemRepository = itemRepository;
-        this.menuItemRepository = menuItemRepository;
-        this.menuRepository = menuRepository;
-        this.restaurantRepository = restaurantRepository;
-        this.cartItemsRepository = cartItemsRepository;
-    }
-
-    @Override
-    public List<Item> findAll() {
-        return itemRepository.findAll();
-    }
-
-    @Override
-    @Transactional(readOnly = true)
-    public List<Item> findRecommendedItems(Long userId) {
-        List<CartItems> cartItems = cartItemsRepository.findByCart_Customer_Id(userId);
-        List<Long> cartItemIds = cartItems.stream()
-                .map(ci -> ci.getItem().getId())
-                .toList();
-
-        if (cartItemIds.isEmpty()) {
-            return itemRepository.findTop5PopularItems();
-        } else {
-            return itemRepository.findItemsBoughtTogether(cartItemIds);
-        }
-    }
-
-
-    public List<Item> getItemsByMenuId(Long menuId) {
-        Menu menu = menuRepository.findById(menuId)
-                .orElseThrow(() -> new RuntimeException("Menu not found"));
-
-        List<MenuItem> menuItems = menuItemRepository.findByMenu(menu);
-
-        return menuItems.stream()
-                .map(MenuItem::getItem)
-                .collect(Collectors.toList());
-    }
-
-    @Override
-    public Item findById(Long itemId) {
-        return this.itemRepository.findById(itemId).orElseThrow(() -> new ItemNotFoundException(itemId));
-    }
-
-    @Override
-    public List<Item> searchItems(String searchTerm) {
-        Specification<Item> specification = (root, query, criteriaBuilder) -> {
-            List<Predicate> predicates = new ArrayList<>();
-
-            if (searchTerm != null && !searchTerm.trim().isEmpty()) {
-                String likePattern = "%" + searchTerm.toLowerCase() + "%";
-                Predicate itemNamePredicate = criteriaBuilder.like(criteriaBuilder.lower(root.get("name")), likePattern);
-
-                Join<Item, Object> menuItemJoin = root.join("menuItems");
-
-                Join<Object, Object> menuJoin = menuItemJoin.join("menu");
-
-                Join<Object, Object> restaurantJoin = menuJoin.join("restaurant");
-
-                Predicate restaurantNamePredicate = criteriaBuilder.like(criteriaBuilder.lower(restaurantJoin.get("name")), likePattern);
-
-                query.distinct(true);
-
-                predicates.add(criteriaBuilder.or(itemNamePredicate, restaurantNamePredicate));
-            }
-
-            return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
-        };
-
-        return itemRepository.findAll(specification);
-    }
-
-    @Override
-    public List<Item> findItemsByCategoryId(Long categoryId) {
-        return this.itemRepository.findItemsByCategoryId(categoryId);
-    }
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/MenuItemServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/MenuItemServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,57 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.MenuItem;
-import mk.ukim.finki.easyfood.model.Restaurant;
-import mk.ukim.finki.easyfood.model.exceptions.MenuNotFoundException;
-import mk.ukim.finki.easyfood.repository.MenuItemRepository;
-import mk.ukim.finki.easyfood.service.MenuItemService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Optional;
-
-@Service
-public class MenuItemServiceImpl implements MenuItemService {
-
-    private final MenuItemRepository menuItemRepository;
-
-    public MenuItemServiceImpl(MenuItemRepository menuItemRepository) {
-        this.menuItemRepository = menuItemRepository;
-    }
-
-    @Override
-    public List<MenuItem> findAll() {
-        return menuItemRepository.findAll();
-    }
-
-    @Override
-    public List<MenuItem> findByMenu(Menu menu) {
-        return menuItemRepository.findByMenu(menu);
-    }
-
-    @Override
-    public MenuItem createMenuItem(MenuItem menuItem) {
-        return menuItemRepository.save(menuItem);
-    }
-
-    @Override
-    public void deleteMenuItem(MenuItem menuItem) {
-        menuItemRepository.delete(menuItem);
-    }
-
-    @Override
-    public MenuItem findById(Long id) {
-        return this.menuItemRepository.findById(id).orElseThrow(() -> new MenuNotFoundException(id));
-    }
-
-    @Override
-    public Optional<Restaurant> getRestaurantByItem(Item item) {
-        Optional<MenuItem> menuItem = menuItemRepository.findFirstByItem(item);
-        if (menuItem.isPresent()) {
-            return Optional.ofNullable(menuItem.get().getMenu().getRestaurant());
-        }
-        return Optional.empty();
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/MenuServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/MenuServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,53 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Restaurant;
-import mk.ukim.finki.easyfood.repository.MenuRepository;
-import mk.ukim.finki.easyfood.service.MenuService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Optional;
-
-@Service
-public class MenuServiceImpl implements MenuService {
-    private final MenuRepository menuRepository;
-
-    public MenuServiceImpl(MenuRepository menuRepository) {
-        this.menuRepository = menuRepository;
-    }
-
-    public Menu getMenuByRestaurantId(Long restaurantId) {
-        return menuRepository.findByRestaurantId(restaurantId);
-    }
-
-    @Override
-    public List<Menu> findAll() {
-        return menuRepository.findAll();
-    }
-
-    @Override
-    public Optional<Menu> findById(Long id) {
-        return menuRepository.findById(id);
-    }
-
-    @Override
-    public Menu createMenu(Menu menu) {
-        return menuRepository.save(menu);
-    }
-
-    @Override
-    public Menu updateMenu(Menu menu) {
-        return menuRepository.save(menu);
-    }
-
-    @Override
-    public void deleteMenu(Long id) {
-        menuRepository.deleteById(id);
-    }
-
-    @Override
-    public List<Menu> findByRestaurant(Restaurant restaurant) {
-        return menuRepository.findByRestaurant(restaurant);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/OrderServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/OrderServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,133 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-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 mk.ukim.finki.easyfood.repository.DeliveryManRepository;
-import mk.ukim.finki.easyfood.repository.OrderItemsRepository;
-import mk.ukim.finki.easyfood.repository.OrderRepository;
-import mk.ukim.finki.easyfood.service.OrderService;
-import mk.ukim.finki.easyfood.service.ShoppingCartService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Optional;
-
-@Service
-public class OrderServiceImpl implements OrderService {
-    private final OrderRepository orderRepository;
-    private final DeliveryManRepository deliveryManRepository;
-    private final OrderItemsRepository orderItemsRepository;
-    private final ShoppingCartService shoppingCartService;
-
-    public OrderServiceImpl(OrderRepository orderRepository, DeliveryManRepository deliveryManRepository, OrderItemsRepository orderItemsRepository, ShoppingCartService shoppingCartService) {
-        this.orderRepository = orderRepository;
-        this.deliveryManRepository = deliveryManRepository;
-        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);
-    }
-
-    @Override
-    public List<Order> listAllOrders() {
-        return orderRepository.findAll();
-    }
-
-    @Override
-    public List<Order> listOrdersByDeliveryManAndOrderStatus(Long deliveryMan, String orderStatus) {
-        DeliveryMan deliveryMan1 = deliveryManRepository.findById(deliveryMan).orElse(null);
-        return orderRepository.findAllByDeliveryManAndOrderStatus(deliveryMan1, orderStatus);
-    }
-
-    @Override
-    public List<Order> findAllByUserId(Long id) {
-        return this.orderRepository.findByCustomerIdOrderByOrderDateDesc(id);
-    }
-
-    public void saveOrderItem(OrderItems orderItem) {
-        orderItemsRepository.save(orderItem);
-    }
-
-    public Optional<Order> findOrderById(Long orderId) {
-        return orderRepository.findById(orderId);
-    }
-
-    public List<OrderItems> findOrderItemsByOrderId(Long orderId) {
-        return orderItemsRepository.findByOrderId(orderId);
-    }
-
-    @Override
-    @Transactional
-    public Order createOrderWithItems(Order order, List<CartItems> cartItems) {
-        Order savedOrder = orderRepository.save(order);
-
-        BigDecimal totalAmount = BigDecimal.ZERO;
-
-        for (CartItems cartItem : cartItems) {
-            OrderItems orderItem = new OrderItems();
-            orderItem.setOrder(savedOrder);
-            orderItem.setItem(cartItem.getItem());
-            orderItem.setQuantity(cartItem.getQuantity());
-
-            BigDecimal itemTotal = cartItem.getItem().getPrice()
-                    .multiply(BigDecimal.valueOf(cartItem.getQuantity()));
-
-            orderItem.setTotalPrice(itemTotal);
-            totalAmount = totalAmount.add(itemTotal);
-
-            orderItemsRepository.save(orderItem);
-        }
-
-        savedOrder.setTotalAmount(totalAmount);
-        orderRepository.save(savedOrder);
-
-        // ✅ clear cart inside same transaction
-        shoppingCartService.clearCart(order.getCustomer().getId());
-
-        return savedOrder;
-    }
-
-
-    @Override
-    public Order save(Order order) {
-        return orderRepository.save(order);
-    }
-
-    @Override
-    public Optional<Order> findById(Long orderId) {
-        return orderRepository.findById(orderId);
-    }
-
-    @Override
-    public List<OrderItems> getOrderItems(Long orderId) {
-        return orderItemsRepository.findByOrderId(orderId);
-    }
-
-    @Override
-    public List<Order> getOrdersByCustomerId(Long customerId) {
-        return orderRepository.findByCustomerIdOrderByOrderDateDesc(customerId);
-    }
-
-    @Override
-    @Transactional
-    public void updateOrderStatus(Long orderId, String status) {
-        Optional<Order> orderOpt = orderRepository.findById(orderId);
-        if (orderOpt.isPresent()) {
-            Order order = orderOpt.get();
-            order.setOrderStatus(status);
-            orderRepository.save(order);
-        }
-    }
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/RestaurantOwnerServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/RestaurantOwnerServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,19 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.RestaurantOwner;
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-import mk.ukim.finki.easyfood.model.exceptions.InvalidArgumentsException;
-import mk.ukim.finki.easyfood.model.exceptions.PasswordsDoNotMatchException;
-import mk.ukim.finki.easyfood.model.exceptions.UsernameAlreadyExistsException;
-import mk.ukim.finki.easyfood.repository.RestaurantOwnerRepository;
-import mk.ukim.finki.easyfood.service.RestaurantOwnerService;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalTime;
-
-@Service
-public class RestaurantOwnerServiceImpl implements RestaurantOwnerService {
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/RestaurantServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/RestaurantServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Restaurant;
-import mk.ukim.finki.easyfood.repository.RestaurantRepository;
-import mk.ukim.finki.easyfood.service.RestaurantService;
-import org.springframework.stereotype.Service;
-
-@Service
-public class RestaurantServiceImpl implements RestaurantService {
-    final private RestaurantRepository restaurantRepository;
-
-    public RestaurantServiceImpl(RestaurantRepository restaurantRepository) {
-        this.restaurantRepository = restaurantRepository;
-    }
-
-    @Override
-    public Restaurant findRestaurantById(Long id) {
-        return restaurantRepository.findById(id).orElse(null);
-    }
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/ShoppingCartServiceImp.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/ShoppingCartServiceImp.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,201 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.CartItems;
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.model.ShoppingCart;
-import mk.ukim.finki.easyfood.repository.CartItemsRepository;
-import mk.ukim.finki.easyfood.repository.CustomerRepository;
-import mk.ukim.finki.easyfood.repository.ItemRepository;
-import mk.ukim.finki.easyfood.repository.ShoppingCartRepository;
-import mk.ukim.finki.easyfood.service.ShoppingCartService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
-@Service
-public class ShoppingCartServiceImp implements ShoppingCartService {
-
-    private final ShoppingCartRepository shoppingCartRepository;
-    private final CustomerRepository customerRepository;
-    private final ItemRepository itemRepository;
-    private final CartItemsRepository cartItemsRepository;
-
-    public ShoppingCartServiceImp(ShoppingCartRepository shoppingCartRepository,
-                                  CustomerRepository customerRepository,
-                                  ItemRepository itemRepository,
-                                  CartItemsRepository cartItemsRepository) {
-        this.shoppingCartRepository = shoppingCartRepository;
-        this.customerRepository = customerRepository;
-        this.itemRepository = itemRepository;
-        this.cartItemsRepository = cartItemsRepository;
-    }
-
-    @Override
-    public List<CartItems> getItemsInCartByCustomerId(Long customerId) {
-        Optional<Customer> customerOpt = customerRepository.findById(customerId);
-        if (customerOpt.isEmpty()) {
-            return Collections.emptyList();
-        }
-
-        Customer customer = customerOpt.get();
-        Optional<ShoppingCart> cartOpt = shoppingCartRepository.findByCustomer(customer);
-
-        if (cartOpt.isEmpty()) {
-            return Collections.emptyList();
-        }
-
-        ShoppingCart cart = cartOpt.get();
-        List<CartItems> items = cart.getCartItems();
-        return items != null ? items : Collections.emptyList();
-    }
-
-    @Override
-    public BigDecimal totalItemsPrice(Long customerId) {
-        List<CartItems> cartItems = getItemsInCartByCustomerId(customerId);
-        return cartItems.stream()
-                .map(cartItem -> cartItem.getItem().getPrice()
-                        .multiply(BigDecimal.valueOf(cartItem.getQuantity())))
-                .reduce(BigDecimal.ZERO, BigDecimal::add);
-    }
-
-    @Override
-    @Transactional
-    public void addItemToCart(Customer customer, Item item, int quantity) {
-        if (customer == null) {
-            throw new IllegalArgumentException("Customer cannot be null.");
-        }
-
-        ShoppingCart cart = shoppingCartRepository.findByCustomer(customer).orElseGet(() -> {
-            ShoppingCart newCart = new ShoppingCart();
-            newCart.setCustomer(customer);
-            return shoppingCartRepository.save(newCart);
-        });
-
-        if (cart.getCartItems() == null) {
-            cart.setCartItems(new ArrayList<>());
-        }
-
-        Optional<CartItems> existingItem = cartItemsRepository.findByCartAndItem(cart, item);
-
-        if (existingItem.isPresent()) {
-            CartItems cartItem = existingItem.get();
-            cartItem.setQuantity(cartItem.getQuantity() + quantity);
-            cartItemsRepository.save(cartItem);
-        } else {
-            CartItems newCartItem = new CartItems();
-            newCartItem.setCart(cart);
-            newCartItem.setItem(item);
-            newCartItem.setQuantity(quantity);
-            cartItemsRepository.save(newCartItem);
-        }
-    }
-
-    @Override
-    public List<CartItems> getCartForUser(Long userId) {
-        return getItemsInCartByCustomerId(userId);
-    }
-
-    @Override
-    @Transactional
-    public void removeItemFromCart(Customer customer, Item item) {
-        Optional<ShoppingCart> cartOptional = shoppingCartRepository.findByCustomer(customer);
-
-        if (cartOptional.isPresent()) {
-            ShoppingCart cart = cartOptional.get();
-            Optional<CartItems> cartItemOptional = cartItemsRepository.findByCartAndItem(cart, item);
-
-            if (cartItemOptional.isPresent()) {
-                cartItemsRepository.delete(cartItemOptional.get());
-            } else {
-                throw new RuntimeException("Item not found in cart.");
-            }
-        } else {
-            throw new RuntimeException("Cart not found for customer.");
-        }
-    }
-
-    @Override
-    @Transactional
-    public void updateItemQuantity(Customer customer, Item item, int quantity) {
-        if (quantity <= 0) {
-            removeItemFromCart(customer, item);
-        } else {
-            Optional<ShoppingCart> cartOptional = shoppingCartRepository.findByCustomer(customer);
-
-            if (cartOptional.isPresent()) {
-                ShoppingCart cart = cartOptional.get();
-                Optional<CartItems> cartItemOptional = cartItemsRepository.findByCartAndItem(cart, item);
-
-                if (cartItemOptional.isPresent()) {
-                    CartItems cartItem = cartItemOptional.get();
-                    cartItem.setQuantity(quantity);
-                    cartItemsRepository.save(cartItem);
-                } else {
-                    throw new RuntimeException("Item not found in cart.");
-                }
-            } else {
-                throw new RuntimeException("Cart not found for customer.");
-            }
-        }
-    }
-
-
-    @Override
-    public int getNumberOfItemsInCart(Long customerId) {
-        return getItemsInCartByCustomerId(customerId).stream()
-                .mapToInt(CartItems::getQuantity)
-                .sum();
-    }
-
-    @Override
-    public ShoppingCart getActiveShoppingCart(Long userId) {
-        Optional<Customer> customer = customerRepository.findById(userId);
-        if (customer.isPresent()) {
-            return shoppingCartRepository.findByCustomer(customer.get())
-                    .orElse(null);
-        }
-        return null;
-    }
-
-    @Override
-    @Transactional
-    public void clearCart(Long customerId) {
-        Optional<Customer> customerOpt = customerRepository.findById(customerId);
-        if (customerOpt.isPresent()) {
-            Customer customer = customerOpt.get();
-            Optional<ShoppingCart> cartOpt = shoppingCartRepository.findByCustomer(customer);
-
-            if (cartOpt.isPresent()) {
-                ShoppingCart cart = cartOpt.get();
-                if (cart.getCartItems() != null) {
-                    cartItemsRepository.deleteAll(cart.getCartItems());
-                    cart.getCartItems().clear();
-                    shoppingCartRepository.save(cart);
-                }
-            }
-        }
-    }
-
-    @Override
-    @Transactional
-    public void deleteShoppingCart(Long userId) {
-        ShoppingCart cart = getActiveShoppingCart(userId);
-        if (cart != null) {
-            if (cart.getCartItems() != null) {
-                cartItemsRepository.deleteAll(cart.getCartItems());
-            }
-            shoppingCartRepository.delete(cart);
-        }
-    }
-
-    @Override
-    public List<CartItems> getCartItems(Long customerId) {
-        return getItemsInCartByCustomerId(customerId);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/UserDetailsServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/UserDetailsServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.repository.AppUserRepository;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.User;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService; // SPRING SECURITY INTERFACE
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
-import java.util.Collections;
-
-@Service
-public class UserDetailsServiceImpl implements UserDetailsService {
-
-    private final AppUserRepository userRepository;
-
-    public UserDetailsServiceImpl(AppUserRepository userRepository) {
-        this.userRepository = userRepository;
-    }
-
-    @Override
-    public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
-
-        AppUser user = userRepository.findByEmail(email)
-                .orElseThrow(() -> {
-                    return new UsernameNotFoundException("User not found with email: " + email);
-                });
-
-        return User.builder()
-                .username(user.getEmail())
-                .password(user.getPassword())
-                .authorities(Collections.singletonList(
-                        new SimpleGrantedAuthority("ROLE_" + user.getRole().name())))
-                .accountExpired(false)
-                .accountLocked(false)
-                .credentialsExpired(false)
-                .disabled(false)
-                .build();
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/service/impl/UserServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/service/impl/UserServiceImpl.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,162 +1,0 @@
-package mk.ukim.finki.easyfood.service.impl;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.DeliveryMan;
-import mk.ukim.finki.easyfood.model.RestaurantOwner;
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-import mk.ukim.finki.easyfood.model.exceptions.InvalidArgumentsException;
-import mk.ukim.finki.easyfood.model.exceptions.PasswordsDoNotMatchException;
-import mk.ukim.finki.easyfood.model.exceptions.UsernameAlreadyExistsException;
-import mk.ukim.finki.easyfood.repository.AppUserRepository;
-import mk.ukim.finki.easyfood.repository.CustomerRepository;
-import mk.ukim.finki.easyfood.repository.DeliveryManRepository;
-import mk.ukim.finki.easyfood.repository.RestaurantOwnerRepository;
-import mk.ukim.finki.easyfood.service.UserService;
-import org.springframework.stereotype.Service;
-import org.springframework.security.crypto.password.PasswordEncoder;
-
-import java.util.Optional;
-
-@Service
-public class UserServiceImpl implements UserService {
-
-    private final AppUserRepository userRepository;
-    private final PasswordEncoder passwordEncoder;
-    private final CustomerRepository customerRepository;
-    private final RestaurantOwnerRepository restaurantOwnerRepository;
-    private final DeliveryManRepository deliveryManRepository;
-
-    public UserServiceImpl(AppUserRepository appUserRepository, PasswordEncoder passwordEncoder,
-                           CustomerRepository customerRepository, RestaurantOwnerRepository restaurantOwnerRepository,
-                           DeliveryManRepository deliveryManRepository) {
-        this.userRepository = appUserRepository;
-        this.passwordEncoder = passwordEncoder;
-        this.customerRepository = customerRepository;
-        this.restaurantOwnerRepository = restaurantOwnerRepository;
-        this.deliveryManRepository = deliveryManRepository;
-    }
-
-    private void validateCommonFields(String fullName, String email, String phoneNumber, String password, String repeatPassword) {
-        if (fullName == null || fullName.isEmpty() ||
-                email == null || email.isEmpty() ||
-                phoneNumber == null || phoneNumber.isEmpty() ||
-                password == null || password.isEmpty()) {
-            throw new InvalidArgumentsException();
-        }
-
-        if (!password.equals(repeatPassword)) {
-            throw new PasswordsDoNotMatchException();
-        }
-
-        if (this.userRepository.findByEmail(email).isPresent()) {
-            throw new UsernameAlreadyExistsException(email);
-        }
-    }
-
-    private String[] parseFullName(String fullName) {
-        String[] nameParts = fullName.trim().split("\\s+", 2);
-        String firstName = nameParts[0];
-        String lastName = nameParts.length > 1 ? nameParts[1] : "";
-        return new String[]{firstName, lastName};
-    }
-
-    @Override
-    public AppUser register(String fullName, String email, String phoneNumber, String password, String repeatPassword) {
-        if (fullName == null || fullName.isEmpty() ||
-                email == null || email.isEmpty() ||
-                phoneNumber == null || phoneNumber.isEmpty() ||
-                password == null || password.isEmpty()) {
-            throw new InvalidArgumentsException();
-        }
-
-        if (!password.equals(repeatPassword)) {
-            throw new PasswordsDoNotMatchException();
-        }
-
-        if (this.userRepository.findByEmail(email).isPresent()) {
-            throw new UsernameAlreadyExistsException(email);
-        }
-
-
-        String[] nameParts = fullName.trim().split("\\s+", 2);
-        String firstName = nameParts[0];
-        String lastName = nameParts.length > 1 ? nameParts[1] : "";
-
-        Customer customer = new Customer(email, passwordEncoder.encode(password), firstName, lastName, phoneNumber, ROLE.CUSTOMER);
-
-        return customerRepository.save(customer);
-    }
-
-    @Override
-    public Customer getCustomerById(Long id) {
-        return customerRepository.findById(id)
-                .orElseThrow(() -> new RuntimeException("Customer not found with id: " + id));
-    }
-
-
-    @Override
-    public Optional<Customer> findByEmail(String email) {
-        return customerRepository.findByEmail(email);
-    }
-
-    @Override
-    public Optional<DeliveryMan> findByEmailDM(String email) {
-        return deliveryManRepository.findByEmail(email);
-    }
-
-    @Override
-    public Customer save(Customer customer) {
-        return userRepository.save(customer);
-    }
-
-    @Override
-    public DeliveryMan registerDeliveryMan(String fullName, String email, String phoneNumber,
-                                           String password, String repeatPassword) {
-        return (DeliveryMan) registerUserWithRole(fullName, email, phoneNumber, password, repeatPassword, ROLE.DELIVERY_MAN);
-    }
-
-    @Override
-    public DeliveryMan getDeliveryManById(Long id) {
-        return deliveryManRepository.findById(id)
-                .orElseThrow(() -> new RuntimeException("Delivery man not found with id: " + id));
-    }
-
-    @Override
-    public Optional<DeliveryMan> findDeliveryManByEmail(String email) {
-        return deliveryManRepository.findByEmail(email);
-    }
-
-    @Override
-    public DeliveryMan save(DeliveryMan deliveryMan) {
-        return userRepository.save(deliveryMan);
-    }
-
-    @Override
-    public AppUser registerUserWithRole(String fullName, String email, String phoneNumber,
-                                        String password, String repeatPassword, ROLE role) {
-        validateCommonFields(fullName, email, phoneNumber, password, repeatPassword);
-
-        String[] names = parseFullName(fullName);
-        String firstName = names[0];
-        String lastName = names[1];
-        String encodedPassword = passwordEncoder.encode(password);
-
-        AppUser user;
-        switch (role) {
-            case CUSTOMER:
-                user = new Customer(email, encodedPassword, firstName, lastName, phoneNumber, ROLE.CUSTOMER);
-                break;
-            case RESTAURANT_OWNER:
-                user = new RestaurantOwner(email, encodedPassword, firstName, lastName, phoneNumber, ROLE.RESTAURANT_OWNER);
-                break;
-            case DELIVERY_MAN:
-                user = new DeliveryMan(email, encodedPassword, firstName, lastName, phoneNumber, ROLE.DELIVERY_MAN);
-                break;
-            default:
-                throw new IllegalArgumentException("Invalid role: " + role);
-        }
-
-        return userRepository.save(user);
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/AdminHomeController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/AdminHomeController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,183 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Restaurant;
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.service.AdminService;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-import java.util.Optional;
-
-@Controller
-@RequestMapping("/admin")
-public class AdminHomeController {
-
-    private final AdminService adminService;
-
-    public AdminHomeController(AdminService adminService) {
-        this.adminService = adminService;
-    }
-
-    @GetMapping
-    public String adminHome(Model model) {
-        // Get counts for dashboard overview
-        model.addAttribute("totalUsers", adminService.getTotalUsersCount());
-        model.addAttribute("totalRestaurants", adminService.getTotalRestaurantsCount());
-        model.addAttribute("totalMenus", adminService.getTotalMenusCount());
-        model.addAttribute("totalItems", adminService.getTotalItemsCount());
-
-        return "admin_home";
-    }
-
-    // Users Management
-    @GetMapping("/users")
-    public String getAllUsers(Model model) {
-        List<AppUser> users = adminService.getAllUsers();
-        model.addAttribute("users", users);
-        return "admin_users";
-    }
-
-    @GetMapping("/users/edit/{id}")
-    public String editUser(@PathVariable Long id, Model model) {
-        AppUser user = adminService.getUserById(id);
-        if (user != null) {
-            model.addAttribute("user", user);
-            return "admin_edit_user";
-        } else {
-            return "redirect:/admin/users?error=User not found";
-        }
-    }
-
-    @PostMapping("/users/update")
-    public String updateUser(@RequestParam Long id,
-                             @RequestParam String firstName,
-                             @RequestParam String lastName,
-                             @RequestParam String email,
-                             @RequestParam String phone,
-                             Model model) {
-        try {
-            adminService.updateUser(id, firstName, lastName, email, phone);
-            return "redirect:/admin/users?success=User updated successfully";
-        } catch (Exception e) {
-            model.addAttribute("error", e.getMessage());
-            return "redirect:/admin/users?error=" + e.getMessage();
-        }
-    }
-
-    @PostMapping("/users/delete/{id}")
-    public String deleteUser(@PathVariable Long id) {
-        adminService.deleteUser(id);
-        return "redirect:/admin/users?success=User deleted successfully";
-    }
-
-    // Restaurants Management
-    @GetMapping("/restaurants")
-    public String getAllRestaurants(Model model) {
-        List<Restaurant> restaurants = adminService.getAllRestaurants();
-        model.addAttribute("restaurants", restaurants);
-        return "admin_restaurants";
-    }
-
-    @GetMapping("/restaurants/edit/{id}")
-    public String editRestaurant(@PathVariable Long id, Model model) {
-        Restaurant restaurant = adminService.getRestaurantById(id);
-        model.addAttribute("restaurant", restaurant);
-        return "admin_edit_restaurant";
-    }
-
-    @PostMapping("/restaurants/update")
-    public String updateRestaurant(@RequestParam Long id,
-                                   @RequestParam String name,
-                                   @RequestParam String webiste,
-                                   @RequestParam String phoneNumber,
-                                   Model model) {
-        try {
-            adminService.updateRestaurant(id, name, webiste, phoneNumber);
-            return "redirect:/admin/restaurants?success=Restaurant updated successfully";
-        } catch (Exception e) {
-            return "redirect:/admin/restaurants?error=" + e.getMessage();
-        }
-    }
-
-    @PostMapping("/restaurants/delete/{id}")
-    public String deleteRestaurant(@PathVariable Long id) {
-        adminService.deleteRestaurant(id);
-        return "redirect:/admin/restaurants?success=Restaurant deleted successfully";
-    }
-
-    // Menus Management
-    @GetMapping("/menus")
-    public String getAllMenus(Model model) {
-        List<Menu> menus = adminService.getAllMenus();
-        model.addAttribute("menus", menus);
-        return "admin_menus";
-    }
-
-    @GetMapping("/menus/edit/{id}")
-    public String editMenu(@PathVariable Long id, Model model) {
-        Menu menu = adminService.getMenuById(id);
-        List<Restaurant> restaurants = adminService.getAllRestaurants();
-        model.addAttribute("menu", menu);
-        model.addAttribute("restaurants", restaurants);
-        return "admin_edit_menu";
-    }
-
-    @PostMapping("/menus/update")
-    public String updateMenu(@RequestParam Long id,
-                             @RequestParam String name,
-                             @RequestParam Long restaurantId,
-                             Model model) {
-        try {
-            adminService.updateMenu(id, name, restaurantId);
-            return "redirect:/admin/menus?success=Menu updated successfully";
-        } catch (Exception e) {
-            return "redirect:/admin/menus?error=" + e.getMessage();
-        }
-    }
-
-    @PostMapping("/menus/delete/{id}")
-    public String deleteMenu(@PathVariable Long id) {
-        adminService.deleteMenu(id);
-        return "redirect:/admin/menus?success=Menu deleted successfully";
-    }
-
-    // Items Management
-    @GetMapping("/items")
-    public String getAllItems(Model model) {
-        List<Item> items = adminService.getAllItems();
-        model.addAttribute("items", items);
-        return "admin_items";
-    }
-
-    @GetMapping("/items/edit/{id}")
-    public String editItem(@PathVariable Long id, Model model) {
-        Item item = adminService.getItemById(id);
-        model.addAttribute("item", item);
-        return "admin_edit_item";
-    }
-
-    @PostMapping("/items/update")
-    public String updateItem(@RequestParam Long id,
-                             @RequestParam String name,
-                             @RequestParam String description,
-                             @RequestParam String price,
-                             @RequestParam String imageUrl,
-                             Model model) {
-        try {
-            adminService.updateItem(id, name, description, price, imageUrl);
-            return "redirect:/admin/items?success=Item updated successfully";
-        } catch (Exception e) {
-            return "redirect:/admin/items?error=" + e.getMessage();
-        }
-    }
-
-    @PostMapping("/items/delete/{id}")
-    public String deleteItem(@PathVariable Long id) {
-        adminService.deleteItem(id);
-        return "redirect:/admin/items?success=Item deleted successfully";
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/AdminRegisterController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/AdminRegisterController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,60 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.enumerations.ROLE;
-import mk.ukim.finki.easyfood.service.UserService;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-
-@Controller
-@RequestMapping("/admin/register")
-public class AdminRegisterController {
-    private final UserService userService;
-
-    public AdminRegisterController(UserService userService) {
-        this.userService = userService;
-    }
-
-    @GetMapping
-    public String getAdminRegisterPage(@RequestParam(value = "error", required = false) String error,
-                                       @RequestParam(value = "success", required = false) String success,
-                                       Model model) {
-        if (error != null) {
-            model.addAttribute("error", error);
-        }
-        if (success != null) {
-            model.addAttribute("success", success);
-        }
-
-        model.addAttribute("roles", Arrays.asList(ROLE.values()));
-
-        return "admin_register";
-    }
-
-    @PostMapping
-    public String adminRegister(@RequestParam String fullName,
-                                @RequestParam String email,
-                                @RequestParam String phoneNumber,
-                                @RequestParam String password,
-                                @RequestParam String repeatedPassword,
-                                @RequestParam ROLE role) {
-        try {
-            this.userService.registerUserWithRole(fullName, email, phoneNumber, password, repeatedPassword, role);
-
-            String successMsg = URLEncoder.encode("Successfully registered " +
-                            role.toString().toLowerCase().replace("_", " ") + ": " + fullName,
-                    StandardCharsets.UTF_8);
-            return "redirect:/admin/register?success=" + successMsg;
-        } catch (RuntimeException ex) {
-            String errorMsg = URLEncoder.encode(ex.getMessage(), StandardCharsets.UTF_8);
-            return "redirect:/admin/register?error=" + errorMsg;
-        }
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/DeliveryManController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/DeliveryManController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,68 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Order;
-import mk.ukim.finki.easyfood.model.enumerations.ORDER_STATUS;
-import mk.ukim.finki.easyfood.service.OrderService;
-import mk.ukim.finki.easyfood.service.UserService;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.userdetails.UserDetails;
-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;
-
-@Controller
-@RequestMapping("/DeliveryMan")
-public class DeliveryManController {
-    private final OrderService orderService;
-    private final UserService userService; // Inject the user service
-
-    public DeliveryManController(OrderService orderService, UserService userService) {
-        this.orderService = orderService;
-        this.userService = userService;
-    }
-
-    @GetMapping("/{id}")
-    public String deliveryManShow(@PathVariable Long id, Model model, Authentication authentication) {
-        UserDetails userDetails = (UserDetails) authentication.getPrincipal();
-        AppUser loggedInUser = userService.findByEmailDM(userDetails.getUsername())
-                .orElseThrow(() -> new IllegalArgumentException("User not found"));
-
-        // CRUCIAL SECURITY CHECK: Make sure the URL ID matches the logged-in user's ID
-        if (!id.equals(loggedInUser.getId())) {
-            // Redirect to their own page if they try to access another user's page
-            return "redirect:/DeliveryMan/" + loggedInUser.getId();
-        }
-
-        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);
-
-        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);
-
-        Order updatedOrder = orderService.findById(orderId)
-                .orElseThrow(() -> new IllegalArgumentException("Order not found with ID: " + orderId));
-
-        Long deliveryManId = updatedOrder.getDeliveryMan().getId();
-
-        return "redirect:/DeliveryMan/" + deliveryManId;
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/HomeController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/HomeController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,81 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.Category;
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.service.CategoryService;
-import mk.ukim.finki.easyfood.service.ItemService;
-import mk.ukim.finki.easyfood.service.ShoppingCartService;
-import org.springframework.security.core.Authentication;
-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.annotation.RequestParam;
-
-import java.util.List;
-
-@Controller
-@RequestMapping(path = {"/", "/home"})
-public class HomeController {
-
-    private final CategoryService categoryService;
-    private final ItemService itemService;
-    private final ShoppingCartService shoppingCartService;
-
-    public HomeController(CategoryService categoryService, ItemService itemService, ShoppingCartService shoppingCartService) {
-        this.categoryService = categoryService;
-        this.itemService = itemService;
-        this.shoppingCartService = shoppingCartService;
-    }
-
-
-    @GetMapping
-    public String getHomePage(Model model,
-                              Authentication authentication,
-                              @RequestParam(required = false) String searchTerm,
-                              @RequestParam(required = false) Long categoryId) {
-        List<Category> categories = categoryService.listCategories();
-        List<Item> items;
-
-        if (authentication != null && authentication.isAuthenticated()) {
-            String username = authentication.getName();
-            if (username.equals("admin@easyfood.com") || username.contains("admin")) {
-                return "redirect:/admin";
-            }
-        }
-
-        if (searchTerm != null && !searchTerm.trim().isEmpty()) {
-            items = itemService.searchItems(searchTerm);
-            model.addAttribute("searchTerm", searchTerm);
-        } else if (categoryId != null) {
-            items = itemService.findItemsByCategoryId(categoryId);
-        } else {
-            items = itemService.findAll();
-        }
-
-
-        Long userId = null;
-        if (authentication != null && authentication.getPrincipal() instanceof Customer) {
-            Customer customer = (Customer) authentication.getPrincipal();
-            userId = customer.getId();
-        }
-
-        int numberOfItems = 0;
-        if (userId != null) {
-            numberOfItems = shoppingCartService.getNumberOfItemsInCart(userId);
-        }
-
-        model.addAttribute("numberOfItems", numberOfItems);
-        List<Item> recommendedItems = itemService.findRecommendedItems(userId);
-
-        model.addAttribute("categories", categories);
-        model.addAttribute("items", items);
-        model.addAttribute("recommendedItems", recommendedItems);
-
-        return "main_pg";
-    }
-
-
-}
-
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/LoginController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/LoginController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,30 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-
-@Controller
-public class LoginController {
-
-    @GetMapping("/login")
-    public String getLoginPage(@RequestParam(value = "error", required = false) String error,
-                               @RequestParam(value = "logout", required = false) String logout,
-                               @RequestParam(value = "registered", required = false) String registered,
-                               Model model) {
-        if (error != null) {
-            model.addAttribute("error", "Invalid email or password");
-        }
-        if (logout != null) {
-            model.addAttribute("message", "You have been logged out successfully");
-        }
-        if (registered != null) {
-            model.addAttribute("message", "Registration successful! Please login.");
-        }
-        return "login";
-    }
-
-
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/MenuController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/MenuController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,41 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.model.Menu;
-import mk.ukim.finki.easyfood.model.Restaurant;
-import mk.ukim.finki.easyfood.service.ItemService;
-import mk.ukim.finki.easyfood.service.MenuService;
-import mk.ukim.finki.easyfood.service.RestaurantService;
-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.RequestMapping;
-
-import java.util.List;
-
-@Controller
-@RequestMapping("/menu")
-public class MenuController {
-    private final ItemService itemService;
-    private final RestaurantService restaurantService;
-    private final MenuService menuService;
-
-    public MenuController(ItemService itemService, RestaurantService restaurantService, MenuService menuService) {
-        this.itemService = itemService;
-        this.restaurantService = restaurantService;
-        this.menuService = menuService;
-
-    }
-
-    @GetMapping("/{id}")
-    public String showMenu(@PathVariable Long id, Model model) {
-        Restaurant restaurant= restaurantService.findRestaurantById(id);
-        Menu menu=menuService.getMenuByRestaurantId(id);
-        List<Item> items = itemService.getItemsByMenuId(menu.getId());
-
-        model.addAttribute("restaurant", restaurant);
-        model.addAttribute("items", items);
-        return "restaurant_menu";
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/OrderController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/OrderController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,281 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.*;
-import mk.ukim.finki.easyfood.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.*;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-@Controller
-@RequestMapping("/order")
-public class OrderController {
-
-    private final UserService userService;
-    private final AddressService addressService;
-    private final OrderService orderService;
-    private final ShoppingCartService cartService;
-    private final RestaurantService restaurantService;
-    private final MenuItemService menuItemService;
-
-    public OrderController(UserService userService, AddressService addressService,
-                           OrderService orderService, ShoppingCartService cartService,
-                           RestaurantService restaurantService, MenuItemService menuItemService) {
-        this.userService = userService;
-        this.addressService = addressService;
-        this.orderService = orderService;
-        this.cartService = cartService;
-        this.restaurantService = restaurantService;
-        this.menuItemService = menuItemService;
-    }
-
-    @GetMapping("/checkout")
-    public String showCheckout(Model model, RedirectAttributes redirectAttributes) {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-        if (authentication != null && authentication.isAuthenticated()
-                && !authentication.getName().equals("anonymousUser")) {
-
-            String email = authentication.getName();
-            Optional<Customer> customerOptional = userService.findByEmail(email);
-
-            if (customerOptional.isPresent()) {
-                Customer customer = customerOptional.get();
-
-                List<CartItems> cartItems = cartService.getCartItems(customer.getId());
-
-                if (cartItems.isEmpty()) {
-                    redirectAttributes.addFlashAttribute("errorMessage", "Your cart is empty!");
-                    return "redirect:/cart";
-                }
-
-                // Calculate total amount
-                BigDecimal totalAmount = cartItems.stream()
-                        .map(item -> item.getItem().getPrice().multiply(BigDecimal.valueOf(item.getQuantity())))
-                        .reduce(BigDecimal.ZERO, BigDecimal::add);
-
-                // Get customer addresses
-                List<Address> addresses = customer.getAddresses();
-
-                // Get restaurant (assuming all cart items are from same restaurant)
-                Restaurant restaurant = null;
-                if (!cartItems.isEmpty()) {
-                    Optional<Restaurant> restaurantOpt = menuItemService.getRestaurantByItem(cartItems.get(0).getItem());
-                    restaurant = restaurantOpt.orElse(null);
-                }
-
-                Map<Long, BigDecimal> itemTotals = cartItems.stream()
-                        .collect(Collectors.toMap(
-                                item -> item.getItem().getId(),
-                                item -> item.getItem().getPrice().multiply(BigDecimal.valueOf(item.getQuantity()))
-                        ));
-                model.addAttribute("itemTotals", itemTotals);
-                model.addAttribute("customer", customer);
-                model.addAttribute("addresses", addresses);
-                model.addAttribute("cartItems", cartItems);
-                model.addAttribute("totalAmount", totalAmount);
-                model.addAttribute("restaurant", restaurant);
-
-                return "checkout";
-            }
-        }
-
-        return "redirect:/login";
-    }
-
-    @PostMapping("/place")
-    public String placeOrder(@RequestParam(required = false) Long addressId,
-                             @RequestParam(required = false) String newStreet,
-                             @RequestParam(required = false) String newCity,
-                             @RequestParam(required = false) String newPostalCode,
-                             @RequestParam(required = false) String paymentMethod,
-                             @RequestParam(required = false) String comment,
-                             RedirectAttributes redirectAttributes) {
-
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-        if (authentication != null && authentication.isAuthenticated()
-                && !authentication.getName().equals("anonymousUser")) {
-
-            String email = authentication.getName();
-            Optional<Customer> customerOptional = userService.findByEmail(email);
-
-            if (customerOptional.isPresent()) {
-                Customer customer = customerOptional.get();
-
-                try {
-                    // Get cart items
-                    List<CartItems> cartItems = cartService.getCartItems(customer.getId());
-
-                    if (cartItems.isEmpty()) {
-                        redirectAttributes.addFlashAttribute("errorMessage", "Your cart is empty!");
-                        return "redirect:/cart";
-                    }
-
-                    Address orderAddress;
-                    if (addressId != null) {
-                        Optional<Address> existingAddress = Optional.ofNullable(addressService.findById(addressId));
-                        if (existingAddress.isPresent() && customer.getAddresses().contains(existingAddress.get())) {
-                            orderAddress = existingAddress.get();
-                        } else {
-                            redirectAttributes.addFlashAttribute("errorMessage", "Invalid address selected!");
-                            return "redirect:/order/checkout";
-                        }
-                    } else {
-                        // Create new address
-                        if (newStreet == null || newCity == null || newPostalCode == null ||
-                                newStreet.trim().isEmpty() || newCity.trim().isEmpty() || newPostalCode.trim().isEmpty()) {
-                            redirectAttributes.addFlashAttribute("errorMessage", "Please provide complete address information!");
-                            return "redirect:/order/checkout";
-                        }
-
-                        Address newAddress = new Address();
-                        newAddress.setStreet(newStreet);
-                        newAddress.setCity(newCity);
-                        newAddress.setPostalCode(newPostalCode);
-
-                        // Save the address and add it to customer - assuming this returns the saved address
-                        orderAddress = addressService.addAddressToUser(customer, newAddress);
-                    }
-
-                    BigDecimal totalAmount = cartItems.stream()
-                            .map(item -> item.getItem().getPrice().multiply(BigDecimal.valueOf(item.getQuantity())))
-                            .reduce(BigDecimal.ZERO, BigDecimal::add);
-
-                    // Get restaurant from the first item
-                    Restaurant restaurant = null;
-                    if (!cartItems.isEmpty()) {
-                        Optional<Restaurant> restaurantOpt = menuItemService.getRestaurantByItem(cartItems.get(0).getItem());
-                        restaurant = restaurantOpt.orElse(null);
-                    }
-
-                    Order order = new Order();
-                    order.setCustomer(customer);
-                    order.setAddress(orderAddress);
-                    order.setRestaurant(restaurant);
-                    order.setOrderDate(LocalDateTime.now());
-                    order.setComment(comment);
-                    order.setOrderStatus("PENDING");
-                    order.setTotalAmount(totalAmount);
-
-                    Order savedOrder = orderService.createOrderWithItems(order, cartItems);
-
-                    boolean paymentSuccessful = processPayment(paymentMethod, totalAmount);
-
-                    if (paymentSuccessful) {
-                        redirectAttributes.addFlashAttribute("successMessage",
-                                "Order placed successfully! Order ID: " + savedOrder.getId());
-                        return "redirect:/order/confirmation/" + savedOrder.getId();
-                    } else {
-                        savedOrder.setOrderStatus("PAYMENT_FAILED");
-                        orderService.save(savedOrder);
-
-                        redirectAttributes.addFlashAttribute("errorMessage",
-                                "Payment failed! Please try again.");
-                        return "redirect:/order/checkout";
-                    }
-
-                } catch (Exception e) {
-                    redirectAttributes.addFlashAttribute("errorMessage",
-                            "Failed to place order. Please try again.");
-                    return "redirect:/order/checkout";
-                }
-            }
-        }
-
-        return "redirect:/login";
-    }
-
-    @GetMapping("/confirmation/{orderId}")
-    public String showOrderConfirmation(@PathVariable Long orderId, Model model) {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-        if (authentication != null && authentication.isAuthenticated()
-                && !authentication.getName().equals("anonymousUser")) {
-
-            String email = authentication.getName();
-            Optional<Customer> customerOptional = userService.findByEmail(email);
-
-            if (customerOptional.isPresent()) {
-                Customer customer = customerOptional.get();
-
-                Optional<Order> orderOptional = orderService.findById(orderId);
-
-                if (orderOptional.isPresent() &&
-                        orderOptional.get().getCustomer().getId().equals(customer.getId())) {
-
-                    Order order = orderOptional.get();
-                    List<OrderItems> orderItems = orderService.getOrderItems(orderId);
-
-                    model.addAttribute("order", order);
-                    model.addAttribute("orderItems", orderItems);
-
-                    return "order_confirmation";
-                }
-            }
-        }
-
-        return "redirect:/login";
-    }
-
-    @PostMapping("/address/add-during-checkout")
-    public String addAddressDuringCheckout(@RequestParam String street,
-                                           @RequestParam String city,
-                                           @RequestParam String postalCode,
-                                           RedirectAttributes redirectAttributes) {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-        if (authentication != null && authentication.isAuthenticated()
-                && !authentication.getName().equals("anonymousUser")) {
-
-            String email = authentication.getName();
-            Optional<Customer> customerOptional = userService.findByEmail(email);
-
-            if (customerOptional.isPresent()) {
-                Customer customer = customerOptional.get();
-
-                try {
-                    Address address = new Address();
-                    address.setStreet(street);
-                    address.setCity(city);
-                    address.setPostalCode(postalCode);
-
-                    addressService.addAddressToUser(customer, address);
-
-                    redirectAttributes.addFlashAttribute("successMessage",
-                            "Address added successfully!");
-                } catch (Exception e) {
-                    redirectAttributes.addFlashAttribute("errorMessage",
-                            "Failed to add address. Please try again.");
-                }
-            }
-        }
-
-        return "redirect:/order/checkout";
-    }
-
-    // Simulate payment processing
-    private boolean processPayment(String paymentMethod, BigDecimal amount) {
-        // In a real application, this would integrate with a payment gateway
-        // For now, we'll simulate successful payment
-        try {
-            Thread.sleep(1000); // Simulate processing time
-
-            // Simulate payment success/failure (90% success rate)
-            return Math.random() > 0.1;
-
-        } catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-            return false;
-        }
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/PostLoginController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/PostLoginController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,45 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.DeliveryMan; // You need to import this
-import mk.ukim.finki.easyfood.service.UserService;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-
-import java.util.Collection;
-
-@Controller
-public class PostLoginController {
-
-    private final UserService userService;
-
-    public PostLoginController(UserService userService) {
-        this.userService = userService;
-    }
-
-    @GetMapping("/post-login")
-    public String postLoginRedirect(Authentication authentication) {
-        Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
-        UserDetails userDetails = (UserDetails) authentication.getPrincipal();
-
-        if (authorities.stream().anyMatch(a -> a.getAuthority().equals("ROLE_ADMIN"))) {
-            // Your logic for admin
-            return "redirect:/admin";
-        } else if (authorities.stream().anyMatch(a -> a.getAuthority().equals("ROLE_DELIVERY_MAN"))) {
-            // Use the specific findByEmail for DeliveryMan
-            DeliveryMan deliveryMan = userService.findDeliveryManByEmail(userDetails.getUsername())
-                    .orElseThrow(() -> new UsernameNotFoundException("Delivery man not found."));
-            Long userId = deliveryMan.getId();
-            return "redirect:/DeliveryMan/" + userId;
-        } else {
-            // Your logic for other roles or regular users
-            AppUser user = userService.findByEmail(userDetails.getUsername())
-                    .orElseThrow(() -> new UsernameNotFoundException("User not found."));
-            return "redirect:/home";
-        }
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/ProfileController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/ProfileController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,181 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.Address;
-import mk.ukim.finki.easyfood.model.Order;
-import mk.ukim.finki.easyfood.model.OrderItems;
-import mk.ukim.finki.easyfood.service.UserService;
-import mk.ukim.finki.easyfood.service.AddressService;
-import mk.ukim.finki.easyfood.service.OrderService;
-import mk.ukim.finki.easyfood.repository.OrderItemsRepository;
-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.annotation.RequestParam;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
-import java.util.List;
-import java.util.Optional;
-
-@Controller
-@RequestMapping("/profile")
-public class ProfileController {
-
-    private final UserService userService;
-    private final AddressService addressService;
-    private final OrderService orderService;
-    private final OrderItemsRepository orderItemsRepository;
-
-    public ProfileController(UserService userService, AddressService addressService,
-                             OrderService orderService, OrderItemsRepository orderItemsRepository) {
-        this.userService = userService;
-        this.addressService = addressService;
-        this.orderService = orderService;
-        this.orderItemsRepository = orderItemsRepository;
-    }
-
-    @GetMapping
-    public String getProfileDashboard(Model model) {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-        if (authentication != null && authentication.isAuthenticated()
-                && !authentication.getName().equals("anonymousUser")) {
-
-            String email = authentication.getName();
-
-            Optional<Customer> customerOptional = userService.findByEmail(email);
-
-            if (customerOptional.isPresent()) {
-                Customer customer = customerOptional.get();
-
-                // Get orders for the user
-                List<Order> orders = orderService.findAllByUserId(customer.getId());
-
-                // Load order items for each order (including deleted items)
-                for (Order order : orders) {
-                    List<OrderItems> orderItems = orderItemsRepository.findByOrderId(order.getId());
-                    order.setOrderItems(orderItems);
-                }
-
-                List<Address> addresses = customer.getAddresses();
-                model.addAttribute("user", customer);
-                model.addAttribute("addresses", addresses);
-                model.addAttribute("orders", orders);
-                return "profile";
-            }
-        }
-
-        return "redirect:/login";
-    }
-
-    @PostMapping("/address/add")
-    public String addAddress(@RequestParam String street,
-                             @RequestParam String city,
-                             @RequestParam String postalCode,
-                             RedirectAttributes redirectAttributes) {
-
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-        if (authentication != null && authentication.isAuthenticated()
-                && !authentication.getName().equals("anonymousUser")) {
-
-            String email = authentication.getName();
-            Optional<Customer> customerOptional = userService.findByEmail(email);
-
-            if (customerOptional.isPresent()) {
-                Customer customer = customerOptional.get();
-
-                try {
-                    Address address = new Address();
-                    address.setStreet(street);
-                    address.setCity(city);
-                    address.setPostalCode(postalCode);
-
-                    addressService.addAddressToUser(customer, address);
-
-                    redirectAttributes.addFlashAttribute("successMessage",
-                            "Address added successfully!");
-                } catch (Exception e) {
-                    redirectAttributes.addFlashAttribute("errorMessage",
-                            "Failed to add address. Please try again.");
-                }
-
-                return "redirect:/profile#addresses";
-            }
-        }
-
-        return "redirect:/login";
-    }
-
-    @PostMapping("/address/delete")
-    public String deleteAddress(@RequestParam Long addressId,
-                                RedirectAttributes redirectAttributes) {
-
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-        if (authentication != null && authentication.isAuthenticated()
-                && !authentication.getName().equals("anonymousUser")) {
-
-            String email = authentication.getName();
-            Optional<Customer> customerOptional = userService.findByEmail(email);
-
-            if (customerOptional.isPresent()) {
-                Customer customer = customerOptional.get();
-
-                try {
-                    addressService.removeAddressFromUser(customer, addressId);
-                    redirectAttributes.addFlashAttribute("successMessage",
-                            "Address deleted successfully!");
-                } catch (Exception e) {
-                    redirectAttributes.addFlashAttribute("errorMessage",
-                            "Failed to delete address. Please try again.");
-                }
-
-                return "redirect:/profile#addresses";
-            }
-        }
-
-        return "redirect:/login";
-    }
-
-    @PostMapping("/update")
-    public String updateUserDetails(@RequestParam String firstName,
-                                    @RequestParam String lastName,
-                                    @RequestParam String email,
-                                    @RequestParam String phone,
-                                    RedirectAttributes redirectAttributes) {
-
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
-        if (authentication != null && authentication.isAuthenticated()
-                && !authentication.getName().equals("anonymousUser")) {
-
-            String currentEmail = authentication.getName();
-            Optional<Customer> customerOptional = userService.findByEmail(currentEmail);
-
-            if (customerOptional.isPresent()) {
-                Customer customer = customerOptional.get();
-                try {
-                    customer.setFirstName(firstName);
-                    customer.setLastName(lastName);
-                    customer.setEmail(email);
-                    customer.setPhone(phone);
-
-                    userService.save(customer);
-
-                    redirectAttributes.addFlashAttribute("successMessage",
-                            "Profile updated successfully!");
-                } catch (Exception e) {
-                    redirectAttributes.addFlashAttribute("errorMessage",
-                            "Failed to update profile. Please try again.");
-                }
-                return "redirect:/profile#details";
-            }
-        }
-        return "redirect:/login";
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/RegisterController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/RegisterController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,45 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.service.UserService;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-
-@Controller
-@RequestMapping("/register")
-public class RegisterController {
-    private final UserService userService;
-
-    public RegisterController(UserService userService) {
-        this.userService = userService;
-    }
-
-    @GetMapping
-    public String getRegisterPage(@RequestParam(value = "error", required = false) String error, Model model) {
-        if (error != null) {
-            model.addAttribute("error", error);
-        }
-        return "register_customer";
-    }
-
-    @PostMapping
-    public String register(@RequestParam String fullName,
-                           @RequestParam String email,
-                           @RequestParam String phoneNumber,
-                           @RequestParam String password,
-                           @RequestParam String repeatedPassword) {
-        try {
-            this.userService.register(fullName, email, phoneNumber, password, repeatedPassword);
-            return "redirect:/login?registered";
-        } catch (RuntimeException ex) {
-            String errorMsg = URLEncoder.encode(ex.getMessage(), StandardCharsets.UTF_8);
-            return "redirect:/register?error=" + errorMsg;
-        }
-    }
-}
Index: c/main/java/mk/ukim/finki/easyfood/web/controller/ShoppingCartController.java
===================================================================
--- src/main/java/mk/ukim/finki/easyfood/web/controller/ShoppingCartController.java	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,117 +1,0 @@
-package mk.ukim.finki.easyfood.web.controller;
-
-import mk.ukim.finki.easyfood.model.AppUser;
-import mk.ukim.finki.easyfood.model.Customer;
-import mk.ukim.finki.easyfood.model.CartItems;
-import mk.ukim.finki.easyfood.model.Item;
-import mk.ukim.finki.easyfood.service.ItemService;
-import mk.ukim.finki.easyfood.service.ShoppingCartService;
-import mk.ukim.finki.easyfood.service.UserService;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.security.core.Authentication;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Optional;
-
-@Controller
-@RequestMapping("/cart")
-public class ShoppingCartController {
-
-    private final ShoppingCartService shoppingCartService;
-    private final UserService userService;
-    private final ItemService itemService;
-
-    public ShoppingCartController(ShoppingCartService shoppingCartService,
-                                  UserService userService,
-                                  ItemService itemService) {
-        this.shoppingCartService = shoppingCartService;
-        this.userService = userService;
-        this.itemService = itemService;
-    }
-
-    @GetMapping
-    public String showCart(Model model, Authentication authentication) {
-        if (authentication == null || !authentication.isAuthenticated()) {
-            return "redirect:/login";
-        }
-
-        String userEmail = authentication.getName();
-        Optional<Customer> customerOptional = userService.findByEmail(userEmail);
-
-        if (customerOptional.isEmpty()) {
-            return "redirect:/login";
-        }
-
-        Customer customer = customerOptional.get();
-        List<CartItems> items = shoppingCartService.getItemsInCartByCustomerId(customer.getId());
-        BigDecimal total = shoppingCartService.totalItemsPrice(customer.getId());
-
-        model.addAttribute("cartItems", items);
-        model.addAttribute("total", total);
-
-        return "shopping_cart";
-    }
-
-    @PostMapping("/add")
-    public String addToCart(@RequestParam Long itemId, Authentication authentication) {
-        if (authentication == null || !authentication.isAuthenticated()) {
-            return "redirect:/login";
-        }
-
-        String userEmail = authentication.getName();
-        AppUser appUser = userService.findByEmail(userEmail)
-                .orElseThrow(() -> new RuntimeException("User not found"));
-
-        if (!(appUser instanceof Customer customer)) {
-            throw new RuntimeException("Only customers can add items to cart.");
-        }
-
-        Item item = itemService.findById(itemId);
-        shoppingCartService.addItemToCart(customer, item, 1);
-
-        return "redirect:/cart";
-    }
-
-    @PostMapping("/remove")
-    public String removeFromCart(@RequestParam Long itemId, Authentication authentication) {
-        if (authentication == null || !authentication.isAuthenticated()) {
-            return "redirect:/login";
-        }
-
-        String userEmail = authentication.getName();
-        AppUser appUser = userService.findByEmail(userEmail)
-                .orElseThrow(() -> new RuntimeException("User not found"));
-
-        if (!(appUser instanceof Customer customer)) {
-            throw new RuntimeException("Only customers can remove items from cart.");
-        }
-
-        Item item = itemService.findById(itemId);
-        shoppingCartService.removeItemFromCart(customer, item);
-
-        return "redirect:/cart";
-    }
-
-    @PostMapping("/update")
-    public String updateCart(@RequestParam Long itemId, @RequestParam int quantity, Authentication authentication) {
-        if (authentication == null || !authentication.isAuthenticated()) {
-            return "redirect:/login";
-        }
-
-        String userEmail = authentication.getName();
-        AppUser appUser = userService.findByEmail(userEmail)
-                .orElseThrow(() -> new RuntimeException("User not found"));
-
-        if (!(appUser instanceof Customer customer)) {
-            throw new RuntimeException("Only customers can update cart items.");
-        }
-
-        Item item = itemService.findById(itemId);
-        shoppingCartService.updateItemQuantity(customer, item, quantity);
-
-        return "redirect:/cart";
-    }
-}
Index: src/main/resources/application.properties
===================================================================
--- src/main/resources/application.properties	(revision 09b63e81ec991605e64a859b841de94e18103044)
+++ src/main/resources/application.properties	(revision 09b63e81ec991605e64a859b841de94e18103044)
@@ -0,0 +1,1 @@
+spring.application.name=easyFood
Index: c/main/resources/templates/admin_edit_item.html
===================================================================
--- src/main/resources/templates/admin_edit_item.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,137 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Items Management - Admin</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <div class="navbar-nav ms-auto">
-            <a class="nav-link" href="/admin">
-                <i class="fas fa-home me-1"></i>Dashboard
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <div class="row">
-        <div class="col-12">
-            <!-- Header -->
-            <div class="d-flex justify-content-between align-items-center mb-4">
-                <h2><i class="fas fa-hamburger me-2"></i>Items Management</h2>
-            </div>
-
-            <!-- Success/Error Messages -->
-            <div th:if="${param.success}" class="alert alert-success alert-dismissible fade show" role="alert">
-                <span th:text="${param.success[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-            <div th:if="${param.error}" class="alert alert-danger alert-dismissible fade show" role="alert">
-                <span th:text="${param.error[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-
-            <!-- Items Table -->
-            <div class="card">
-                <div class="card-header">
-                    <h5 class="card-title mb-0">All Menu Items</h5>
-                </div>
-                <div class="card-body">
-                    <div class="table-responsive">
-                        <table class="table table-striped table-hover">
-                            <thead class="table-dark">
-                            <tr>
-                                <th>ID</th>
-                                <th>Image</th>
-                                <th>Name</th>
-                                <th>Price</th>
-                                <th>Description</th>
-                                <th>Actions</th>
-                            </tr>
-                            </thead>
-                            <tbody>
-                            <tr th:if="${#lists.isEmpty(items)}">
-                                <td colspan="6" class="text-center text-muted py-4">
-                                    No items found
-                                </td>
-                            </tr>
-                            <tr th:each="item : ${items}">
-                                <td th:text="${item.id}"></td>
-                                <td>
-                                    <img th:if="${item.imageUrl != null and !#strings.isEmpty(item.imageUrl)}"
-                                         th:src="${item.imageUrl}"
-                                         alt="Item Image"
-                                         class="img-thumbnail"
-                                         style="width: 60px; height: 60px; object-fit: cover;">
-                                    <div th:if="${item.imageUrl == null or #strings.isEmpty(item.imageUrl)}"
-                                         class="d-flex align-items-center justify-content-center bg-light border rounded"
-                                         style="width: 60px; height: 60px;">
-                                        <i class="fas fa-image text-muted"></i>
-                                    </div>
-                                </td>
-                                <td>
-                                    <strong th:text="${item.name}"></strong>
-                                </td>
-                                <td>
-                                    <span class="badge bg-success fs-6" th:text="'$' + ${item.price}"></span>
-                                </td>
-                                <td>
-                                            <span th:text="${#strings.abbreviate(item.description, 50)}"
-                                                  class="text-muted"></span>
-                                </td>
-                                <td>
-                                    <div class="btn-group" role="group">
-                                        <a th:href="@{/admin/items/edit/{id}(id=${item.id})}"
-                                           class="btn btn-sm btn-outline-primary">
-                                            <i class="fas fa-edit"></i> Edit
-                                        </a>
-                                        <button type="button" class="btn btn-sm btn-outline-danger"
-                                                data-bs-toggle="modal"
-                                                th:data-bs-target="'#deleteModal' + ${item.id}">
-                                            <i class="fas fa-trash"></i> Delete
-                                        </button>
-                                    </div>
-
-                                    <!-- Delete Confirmation Modal -->
-                                    <div class="modal fade" th:id="'deleteModal' + ${item.id}" tabindex="-1">
-                                        <div class="modal-dialog">
-                                            <div class="modal-content">
-                                                <div class="modal-header">
-                                                    <h5 class="modal-title">Confirm Deletion</h5>
-                                                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
-                                                </div>
-                                                <div class="modal-body">
-                                                    Are you sure you want to delete item <strong th:text="${item.name}"></strong>?
-                                                </div>
-                                                <div class="modal-footer">
-                                                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
-                                                    <form th:action="@{/admin/items/delete/{id}(id=${item.id})}" method="post" style="display: inline;">
-                                                        <button type="submit" class="btn btn-danger">Delete</button>
-                                                    </form>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </td>
-                            </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/admin_edit_menu.html
===================================================================
--- src/main/resources/templates/admin_edit_menu.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,98 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Edit Menu - Admin</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <div class="navbar-nav ms-auto">
-            <a class="nav-link" href="/admin/menus">
-                <i class="fas fa-arrow-left me-1"></i>Back to Menus
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <div class="row justify-content-center">
-        <div class="col-md-8">
-            <div class="card">
-                <div class="card-header">
-                    <h4 class="card-title mb-0">
-                        <i class="fas fa-book-open me-2"></i>Edit Menu
-                    </h4>
-                </div>
-                <div class="card-body">
-                    <form th:action="@{/admin/menus/update}" method="post">
-                        <input type="hidden" name="id" th:value="${menu.id}">
-
-                        <div class="mb-3">
-                            <label for="name" class="form-label">Menu Name <span class="text-danger">*</span></label>
-                            <input type="text" class="form-control" id="name" name="name"
-                                   th:value="${menu.name}" required
-                                   placeholder="Enter menu name">
-                        </div>
-
-                        <div class="mb-3">
-                            <label for="restaurantId" class="form-label">Restaurant <span
-                                    class="text-danger">*</span></label>
-                            <select class="form-select" id="restaurantId" name="restaurantId" required>
-                                <option value="">Select Restaurant</option>
-                                <option th:each="restaurant : ${restaurants}"
-                                        th:value="${restaurant.id}"
-                                        th:text="${restaurant.name}"
-                                        th:selected="${menu.restaurant != null && menu.restaurant.id == restaurant.id}">
-                                </option>
-                            </select>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-md-6">
-                                <div class="mb-3">
-                                    <label class="form-label">Created At</label>
-                                    <input type="text" class="form-control" readonly
-                                           th:value="${menu.createdAt != null ? #temporals.format(menu.createdAt, 'yyyy-MM-dd HH:mm:ss') : 'N/A'}">
-                                </div>
-                            </div>
-                            <div class="col-md-6">
-                                <div class="mb-3">
-                                    <label class="form-label">Last Updated</label>
-                                    <input type="text" class="form-control" readonly
-                                           th:value="${menu.updatedAt != null ? #temporals.format(menu.updatedAt, 'yyyy-MM-dd HH:mm:ss') : 'N/A'}">
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="alert alert-info">
-                            <i class="fas fa-info-circle me-2"></i>
-                            <strong>Note:</strong> The "Last Updated" time will be automatically set to the current time
-                            when you save changes.
-                        </div>
-
-                        <div class="d-flex gap-2">
-                            <button type="submit" class="btn btn-primary">
-                                <i class="fas fa-save me-2"></i>Update Menu
-                            </button>
-                            <a href="/admin/menus" class="btn btn-secondary">
-                                <i class="fas fa-times me-2"></i>Cancel
-                            </a>
-                        </div>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/admin_edit_restaurant.html
===================================================================
--- src/main/resources/templates/admin_edit_restaurant.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,82 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Edit Restaurant - Admin</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <div class="navbar-nav ms-auto">
-            <a class="nav-link" href="/admin/restaurants">
-                <i class="fas fa-arrow-left me-1"></i>Back to Restaurants
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <div class="row justify-content-center">
-        <div class="col-md-8">
-            <div class="card">
-                <div class="card-header">
-                    <h4 class="card-title mb-0">
-                        <i class="fas fa-store me-2"></i>Edit Restaurant
-                    </h4>
-                </div>
-                <div class="card-body">
-                    <form th:action="@{/admin/restaurants/update}" method="post">
-                        <input type="hidden" name="id" th:value="${restaurant.id}">
-
-                        <div class="mb-3">
-                            <label for="name" class="form-label">Restaurant Name <span
-                                    class="text-danger">*</span></label>
-                            <input type="text" class="form-control" id="name" name="name"
-                                   th:value="${restaurant.name}" required
-                                   placeholder="Enter restaurant name">
-                        </div>
-
-                        <div class="mb-3">
-                            <label for="address" class="form-label">Website</label>
-                            <textarea class="form-control" id="address" name="address"
-                                      rows="2" th:text="${restaurant.websiteUrl}"
-                                      placeholder="Enter restaurant website"></textarea>
-                        </div>
-
-                        <div class="mb-3">
-                            <label for="phoneNumber" class="form-label">Phone Number</label>
-                            <input type="tel" class="form-control" id="phoneNumber" name="phoneNumber"
-                                   th:value="${restaurant.phoneNumber}"
-                                   placeholder="Enter phone number">
-                            <div class="form-text">Format: 02-123-456 or 070-123-456</div>
-                        </div>
-
-                        <div class="alert alert-info">
-                            <i class="fas fa-info-circle me-2"></i>
-                            <strong>Note:</strong> Changes to restaurant information will be visible to all customers.
-                            Make sure all details are accurate.
-                        </div>
-
-                        <div class="d-flex gap-2">
-                            <button type="submit" class="btn btn-primary">
-                                <i class="fas fa-save me-2"></i>Update Restaurant
-                            </button>
-                            <a href="/admin/restaurants" class="btn btn-secondary">
-                                <i class="fas fa-times me-2"></i>Cancel
-                            </a>
-                        </div>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js">
Index: c/main/resources/templates/admin_edit_user.html
===================================================================
--- src/main/resources/templates/admin_edit_user.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,85 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Edit User - Admin</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <div class="navbar-nav ms-auto">
-            <a class="nav-link" href="/admin/users">
-                <i class="fas fa-arrow-left me-1"></i>Back to Users
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <div class="row justify-content-center">
-        <div class="col-md-8">
-            <div class="card">
-                <div class="card-header">
-                    <h4 class="card-title mb-0">
-                        <i class="fas fa-user-edit me-2"></i>Edit User
-                    </h4>
-                </div>
-                <div class="card-body">
-                    <form th:action="@{/admin/users/update}" method="post">
-                        <input type="hidden" name="id" th:value="${user.id}">
-
-                        <div class="row">
-                            <div class="col-md-6">
-                                <div class="mb-3">
-                                    <label for="firstName" class="form-label">First Name <span class="text-danger">*</span></label>
-                                    <input type="text" class="form-control" id="firstName" name="firstName"
-                                           th:value="${user.firstName}" required>
-                                </div>
-                            </div>
-                            <div class="col-md-6">
-                                <div class="mb-3">
-                                    <label for="lastName" class="form-label">Last Name <span class="text-danger">*</span></label>
-                                    <input type="text" class="form-control" id="lastName" name="lastName"
-                                           th:value="${user.lastName}" required>
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="mb-3">
-                            <label for="email" class="form-label">Email <span class="text-danger">*</span></label>
-                            <input type="email" class="form-control" id="email" name="email"
-                                   th:value="${user.email}" required>
-                        </div>
-
-                        <div class="mb-3">
-                            <label for="phone" class="form-label">Phone</label>
-                            <input type="tel" class="form-control" id="phone" name="phone"
-                                   th:value="${user.phone}">
-                        </div>
-
-
-                        <div class="d-flex gap-2">
-                            <button type="submit" class="btn btn-primary">
-                                <i class="fas fa-save me-2"></i>Update User
-                            </button>
-                            <a href="/admin/users" class="btn btn-secondary">
-                                <i class="fas fa-times me-2"></i>Cancel
-                            </a>
-                        </div>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/admin_home.html
===================================================================
--- src/main/resources/templates/admin_home.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,175 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Admin Dashboard - EasyFood</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
-            <span class="navbar-toggler-icon"></span>
-        </button>
-        <div class="collapse navbar-collapse" id="navbarNav">
-            <ul class="navbar-nav ms-auto">
-                <li class="nav-item">
-                    <a class="nav-link" href="/admin/register">
-                        <i class="fas fa-user-plus me-1"></i>Register User
-                    </a>
-                </li>
-                <li class="nav-item">
-                    <a class="nav-link" href="/logout">
-                        <i class="fas fa-sign-out-alt me-1"></i>Logout
-                    </a>
-                </li>
-            </ul>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <!-- Dashboard Header -->
-    <div class="row mb-4">
-        <div class="col-12">
-            <h1 class="mb-0">Admin Dashboard</h1>
-            <p class="text-muted">Manage your EasyFood platform</p>
-        </div>
-    </div>
-
-    <!-- Statistics Cards -->
-    <div class="row mb-5">
-        <div class="col-md-3 mb-3">
-            <div class="card bg-primary text-white h-100">
-                <div class="card-body">
-                    <div class="d-flex justify-content-between">
-                        <div>
-                            <h4 class="card-title" th:text="${totalUsers}">0</h4>
-                            <p class="card-text">Total Users</p>
-                        </div>
-                        <div class="align-self-center">
-                            <i class="fas fa-users fa-2x"></i>
-                        </div>
-                    </div>
-                </div>
-                <div class="card-footer">
-                    <a href="/admin/users" class="text-white text-decoration-none">
-                        View all users <i class="fas fa-arrow-right"></i>
-                    </a>
-                </div>
-            </div>
-        </div>
-
-        <div class="col-md-3 mb-3">
-            <div class="card bg-success text-white h-100">
-                <div class="card-body">
-                    <div class="d-flex justify-content-between">
-                        <div>
-                            <h4 class="card-title" th:text="${totalRestaurants}">0</h4>
-                            <p class="card-text">Restaurants</p>
-                        </div>
-                        <div class="align-self-center">
-                            <i class="fas fa-store fa-2x"></i>
-                        </div>
-                    </div>
-                </div>
-                <div class="card-footer">
-                    <a href="/admin/restaurants" class="text-white text-decoration-none">
-                        View all restaurants <i class="fas fa-arrow-right"></i>
-                    </a>
-                </div>
-            </div>
-        </div>
-
-        <div class="col-md-3 mb-3">
-            <div class="card bg-warning text-white h-100">
-                <div class="card-body">
-                    <div class="d-flex justify-content-between">
-                        <div>
-                            <h4 class="card-title" th:text="${totalMenus}">0</h4>
-                            <p class="card-text">Menus</p>
-                        </div>
-                        <div class="align-self-center">
-                            <i class="fas fa-book fa-2x"></i>
-                        </div>
-                    </div>
-                </div>
-                <div class="card-footer">
-                    <a href="/admin/menus" class="text-white text-decoration-none">
-                        View all menus <i class="fas fa-arrow-right"></i>
-                    </a>
-                </div>
-            </div>
-        </div>
-
-        <div class="col-md-3 mb-3">
-            <div class="card bg-info text-white h-100">
-                <div class="card-body">
-                    <div class="d-flex justify-content-between">
-                        <div>
-                            <h4 class="card-title" th:text="${totalItems}">0</h4>
-                            <p class="card-text">Menu Items</p>
-                        </div>
-                        <div class="align-self-center">
-                            <i class="fas fa-hamburger fa-2x"></i>
-                        </div>
-                    </div>
-                </div>
-                <div class="card-footer">
-                    <a href="/admin/items" class="text-white text-decoration-none">
-                        View all items <i class="fas fa-arrow-right"></i>
-                    </a>
-                </div>
-            </div>
-        </div>
-    </div>
-
-    <!-- Quick Actions -->
-    <div class="row">
-        <div class="col-12">
-            <div class="card">
-                <div class="card-header">
-                    <h5 class="card-title mb-0">Quick Actions</h5>
-                </div>
-                <div class="card-body">
-                    <div class="row">
-                        <div class="col-md-6 col-lg-3 mb-3">
-                            <a href="/admin/users" class="btn btn-outline-primary w-100 py-3">
-                                <i class="fas fa-users fa-2x d-block mb-2"></i>
-                                Manage Users
-                            </a>
-                        </div>
-                        <div class="col-md-6 col-lg-3 mb-3">
-                            <a href="/admin/restaurants" class="btn btn-outline-success w-100 py-3">
-                                <i class="fas fa-store fa-2x d-block mb-2"></i>
-                                Manage Restaurants
-                            </a>
-                        </div>
-                        <div class="col-md-6 col-lg-3 mb-3">
-                            <a href="/admin/menus" class="btn btn-outline-warning w-100 py-3">
-                                <i class="fas fa-book fa-2x d-block mb-2"></i>
-                                Manage Menus
-                            </a>
-                        </div>
-                        <div class="col-md-6 col-lg-3 mb-3">
-                            <a href="/admin/items" class="btn btn-outline-info w-100 py-3">
-                                <i class="fas fa-hamburger fa-2x d-block mb-2"></i>
-                                Manage Items
-                            </a>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/admin_items.html
===================================================================
--- src/main/resources/templates/admin_items.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,137 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Items Management - Admin</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <div class="navbar-nav ms-auto">
-            <a class="nav-link" href="/admin">
-                <i class="fas fa-home me-1"></i>Dashboard
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <div class="row">
-        <div class="col-12">
-            <!-- Header -->
-            <div class="d-flex justify-content-between align-items-center mb-4">
-                <h2><i class="fas fa-hamburger me-2"></i>Items Management</h2>
-            </div>
-
-            <!-- Success/Error Messages -->
-            <div th:if="${param.success}" class="alert alert-success alert-dismissible fade show" role="alert">
-                <span th:text="${param.success[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-            <div th:if="${param.error}" class="alert alert-danger alert-dismissible fade show" role="alert">
-                <span th:text="${param.error[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-
-            <!-- Items Table -->
-            <div class="card">
-                <div class="card-header">
-                    <h5 class="card-title mb-0">All Menu Items</h5>
-                </div>
-                <div class="card-body">
-                    <div class="table-responsive">
-                        <table class="table table-striped table-hover">
-                            <thead class="table-dark">
-                            <tr>
-                                <th>ID</th>
-                                <th>Image</th>
-                                <th>Name</th>
-                                <th>Price</th>
-                                <th>Description</th>
-                                <th>Actions</th>
-                            </tr>
-                            </thead>
-                            <tbody>
-                            <tr th:if="${#lists.isEmpty(items)}">
-                                <td colspan="6" class="text-center text-muted py-4">
-                                    No items found
-                                </td>
-                            </tr>
-                            <tr th:each="item : ${items}">
-                                <td th:text="${item.id}"></td>
-                                <td>
-                                    <img th:if="${item.imageUrl != null and !#strings.isEmpty(item.imageUrl)}"
-                                         th:src="${item.imageUrl}"
-                                         alt="Item Image"
-                                         class="img-thumbnail"
-                                         style="width: 60px; height: 60px; object-fit: cover;">
-                                    <div th:if="${item.imageUrl == null or #strings.isEmpty(item.imageUrl)}"
-                                         class="d-flex align-items-center justify-content-center bg-light border rounded"
-                                         style="width: 60px; height: 60px;">
-                                        <i class="fas fa-image text-muted"></i>
-                                    </div>
-                                </td>
-                                <td>
-                                    <strong th:text="${item.name}"></strong>
-                                </td>
-                                <td>
-                                    <span class="badge bg-success fs-6" th:text="'$' + ${item.price}"></span>
-                                </td>
-                                <td>
-                                            <span th:text="${#strings.abbreviate(item.description, 50)}"
-                                                  class="text-muted"></span>
-                                </td>
-                                <td>
-                                    <div class="btn-group" role="group">
-                                        <a th:href="@{/admin/items/edit/{id}(id=${item.id})}"
-                                           class="btn btn-sm btn-outline-primary">
-                                            <i class="fas fa-edit"></i> Edit
-                                        </a>
-                                        <button type="button" class="btn btn-sm btn-outline-danger"
-                                                data-bs-toggle="modal"
-                                                th:data-bs-target="'#deleteModal' + ${item.id}">
-                                            <i class="fas fa-trash"></i> Delete
-                                        </button>
-                                    </div>
-
-                                    <!-- Delete Confirmation Modal -->
-                                    <div class="modal fade" th:id="'deleteModal' + ${item.id}" tabindex="-1">
-                                        <div class="modal-dialog">
-                                            <div class="modal-content">
-                                                <div class="modal-header">
-                                                    <h5 class="modal-title">Confirm Deletion</h5>
-                                                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
-                                                </div>
-                                                <div class="modal-body">
-                                                    Are you sure you want to delete item <strong th:text="${item.name}"></strong>?
-                                                </div>
-                                                <div class="modal-footer">
-                                                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
-                                                    <form th:action="@{/admin/items/delete/{id}(id=${item.id})}" method="post" style="display: inline;">
-                                                        <button type="submit" class="btn btn-danger">Delete</button>
-                                                    </form>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </td>
-                            </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/admin_menus.html
===================================================================
--- src/main/resources/templates/admin_menus.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,133 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Menus Management - Admin</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <div class="navbar-nav ms-auto">
-            <a class="nav-link" href="/admin">
-                <i class="fas fa-home me-1"></i>Dashboard
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <div class="row">
-        <div class="col-12">
-            <!-- Header -->
-            <div class="d-flex justify-content-between align-items-center mb-4">
-                <h2><i class="fas fa-book me-2"></i>Menus Management</h2>
-            </div>
-
-            <!-- Success/Error Messages -->
-            <div th:if="${param.success}" class="alert alert-success alert-dismissible fade show" role="alert">
-                <span th:text="${param.success[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-            <div th:if="${param.error}" class="alert alert-danger alert-dismissible fade show" role="alert">
-                <span th:text="${param.error[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-
-            <!-- Menus Table -->
-            <div class="card">
-                <div class="card-header">
-                    <h5 class="card-title mb-0">All Menus</h5>
-                </div>
-                <div class="card-body">
-                    <div class="table-responsive">
-                        <table class="table table-striped table-hover">
-                            <thead class="table-dark">
-                            <tr>
-                                <th>ID</th>
-                                <th>Menu Name</th>
-                                <th>Restaurant</th>
-                                <th>Created At</th>
-                                <th>Updated At</th>
-                                <th>Actions</th>
-                            </tr>
-                            </thead>
-                            <tbody>
-                            <tr th:if="${#lists.isEmpty(menus)}">
-                                <td colspan="6" class="text-center text-muted py-4">
-                                    No menus found
-                                </td>
-                            </tr>
-                            <tr th:each="menu : ${menus}">
-                                <td th:text="${menu.id}"></td>
-                                <td th:text="${menu.name}"></td>
-                                <td>
-                                            <span th:if="${menu.restaurant != null}"
-                                                  th:text="${menu.restaurant.name}"
-                                                  class="badge bg-success">
-                                            </span>
-                                    <span th:if="${menu.restaurant == null}"
-                                          class="badge bg-warning text-dark">
-                                                No Restaurant
-                                            </span>
-                                </td>
-                                <td th:text="${menu.createdAt != null ? #temporals.format(menu.createdAt, 'yyyy-MM-dd HH:mm') : 'N/A'}"></td>
-                                <td th:text="${menu.updatedAt != null ? #temporals.format(menu.updatedAt, 'yyyy-MM-dd HH:mm') : 'N/A'}"></td>
-                                <td>
-                                    <div class="btn-group" role="group">
-                                        <a th:href="@{/admin/menus/edit/{id}(id=${menu.id})}"
-                                           class="btn btn-sm btn-outline-primary">
-                                            <i class="fas fa-edit"></i> Edit
-                                        </a>
-                                        <button type="button" class="btn btn-sm btn-outline-danger"
-                                                data-bs-toggle="modal"
-                                                th:data-bs-target="'#deleteModal' + ${menu.id}">
-                                            <i class="fas fa-trash"></i> Delete
-                                        </button>
-                                    </div>
-
-                                    <!-- Delete Confirmation Modal -->
-                                    <div class="modal fade" th:id="'deleteModal' + ${menu.id}" tabindex="-1">
-                                        <div class="modal-dialog">
-                                            <div class="modal-content">
-                                                <div class="modal-header">
-                                                    <h5 class="modal-title">Confirm Deletion</h5>
-                                                    <button type="button" class="btn-close"
-                                                            data-bs-dismiss="modal"></button>
-                                                </div>
-                                                <div class="modal-body">
-                                                    Are you sure you want to delete menu <strong
-                                                        th:text="${menu.name}"></strong>?
-                                                </div>
-                                                <div class="modal-footer">
-                                                    <button type="button" class="btn btn-secondary"
-                                                            data-bs-dismiss="modal">Cancel
-                                                    </button>
-                                                    <form th:action="@{/admin/menus/delete/{id}(id=${menu.id})}"
-                                                          method="post" style="display: inline;">
-                                                        <button type="submit" class="btn btn-danger">Delete</button>
-                                                    </form>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </td>
-                            </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/admin_register.html
===================================================================
--- src/main/resources/templates/admin_register.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,91 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Admin - Register User</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<div class="container mt-5">
-    <div class="row justify-content-center">
-        <div class="col-md-6">
-            <div class="card shadow">
-                <div class="card-header bg-primary text-white text-center">
-                    <h3>Admin - Register New User</h3>
-                </div>
-                <div class="card-body">
-                    <!-- Success Message -->
-                    <div th:if="${success}" class="alert alert-success" role="alert">
-                        <span th:text="${success}"></span>
-                    </div>
-
-                    <!-- Error Message -->
-                    <div th:if="${error}" class="alert alert-danger" role="alert">
-                        <span th:text="${error}"></span>
-                    </div>
-
-                    <form th:action="@{/admin/register}" method="post">
-                        <div class="mb-3">
-                            <label for="fullName" class="form-label">Full Name <span class="text-danger">*</span></label>
-                            <input type="text" class="form-control" id="fullName" name="fullName"
-                                   placeholder="Enter full name" required>
-                        </div>
-
-                        <div class="mb-3">
-                            <label for="email" class="form-label">Email <span class="text-danger">*</span></label>
-                            <input type="email" class="form-control" id="email" name="email"
-                                   placeholder="Enter email address" required>
-                        </div>
-
-                        <div class="mb-3">
-                            <label for="phoneNumber" class="form-label">Phone Number <span class="text-danger">*</span></label>
-                            <input type="tel" class="form-control" id="phoneNumber" name="phoneNumber"
-                                   placeholder="Enter phone number" required>
-                        </div>
-
-                        <div class="mb-3">
-                            <label for="role" class="form-label">Role <span class="text-danger">*</span></label>
-                            <select class="form-select" id="role" name="role" required>
-                                <option value="">Select Role</option>
-                                <option th:each="role : ${roles}"
-                                        th:value="${role.getName()}"
-                                        th:text="${role.getName()}">
-                                </option>
-                            </select>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-md-6">
-                                <div class="mb-3">
-                                    <label for="password" class="form-label">Password <span class="text-danger">*</span></label>
-                                    <input type="password" class="form-control" id="password" name="password"
-                                           placeholder="Enter password" required>
-                                </div>
-                            </div>
-                            <div class="col-md-6">
-                                <div class="mb-3">
-                                    <label for="repeatedPassword" class="form-label">Confirm Password <span class="text-danger">*</span></label>
-                                    <input type="password" class="form-control" id="repeatedPassword" name="repeatedPassword"
-                                           placeholder="Confirm password" required>
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="d-grid gap-2">
-                            <button type="submit" class="btn btn-primary btn-lg">Register User</button>
-                        </div>
-                    </form>
-
-                    <div class="text-center mt-3">
-                        <a href="/admin" class="btn btn-secondary">Back to Admin Panel</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/admin_restaurants.html
===================================================================
--- src/main/resources/templates/admin_restaurants.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,117 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Restaurants Management - Admin</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <div class="navbar-nav ms-auto">
-            <a class="nav-link" href="/admin">
-                <i class="fas fa-home me-1"></i>Dashboard
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <div class="row">
-        <div class="col-12">
-            <!-- Header -->
-            <div class="d-flex justify-content-between align-items-center mb-4">
-                <h2><i class="fas fa-store me-2"></i>Restaurants Management</h2>
-            </div>
-
-            <!-- Success/Error Messages -->
-            <div th:if="${param.success}" class="alert alert-success alert-dismissible fade show" role="alert">
-                <span th:text="${param.success[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-            <div th:if="${param.error}" class="alert alert-danger alert-dismissible fade show" role="alert">
-                <span th:text="${param.error[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-
-            <!-- Restaurants Table -->
-            <div class="card">
-                <div class="card-header">
-                    <h5 class="card-title mb-0">All Restaurants</h5>
-                </div>
-                <div class="card-body">
-                    <div class="table-responsive">
-                        <table class="table table-striped table-hover">
-                            <thead class="table-dark">
-                            <tr>
-                                <th>ID</th>
-                                <th>Name</th>
-                                <th>Address</th>
-                                <th>Phone</th>
-                                <th>Actions</th>
-                            </tr>
-                            </thead>
-                            <tbody>
-                            <tr th:if="${#lists.isEmpty(restaurants)}">
-                                <td colspan="5" class="text-center text-muted py-4">
-                                    No restaurants found
-                                </td>
-                            </tr>
-                            <tr th:each="restaurant : ${restaurants}">
-                                <td th:text="${restaurant.id}"></td>
-                                <td th:text="${restaurant.name}"></td>
-                                <td th:text="${restaurant.address}"></td>
-                                <td th:text="${restaurant.phoneNumber}"></td>
-                                <td>
-                                    <div class="btn-group" role="group">
-                                        <a th:href="@{/admin/restaurants/edit/{id}(id=${restaurant.id})}"
-                                           class="btn btn-sm btn-outline-primary">
-                                            <i class="fas fa-edit"></i> Edit
-                                        </a>
-                                        <button type="button" class="btn btn-sm btn-outline-danger"
-                                                data-bs-toggle="modal"
-                                                th:data-bs-target="'#deleteModal' + ${restaurant.id}">
-                                            <i class="fas fa-trash"></i> Delete
-                                        </button>
-                                    </div>
-
-                                    <!-- Delete Confirmation Modal -->
-                                    <div class="modal fade" th:id="'deleteModal' + ${restaurant.id}" tabindex="-1">
-                                        <div class="modal-dialog">
-                                            <div class="modal-content">
-                                                <div class="modal-header">
-                                                    <h5 class="modal-title">Confirm Deletion</h5>
-                                                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
-                                                </div>
-                                                <div class="modal-body">
-                                                    Are you sure you want to delete restaurant <strong th:text="${restaurant.name}"></strong>?
-                                                </div>
-                                                <div class="modal-footer">
-                                                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
-                                                    <form th:action="@{/admin/restaurants/delete/{id}(id=${restaurant.id})}" method="post" style="display: inline;">
-                                                        <button type="submit" class="btn btn-danger">Delete</button>
-                                                    </form>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </td>
-                            </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/admin_users.html
===================================================================
--- src/main/resources/templates/admin_users.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,101 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Users Management - Admin</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-</head>
-<body class="bg-light">
-<!-- Navigation -->
-<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container">
-        <a class="navbar-brand" href="/admin">
-            <i class="fas fa-utensils me-2"></i>EasyFood Admin
-        </a>
-        <div class="navbar-nav ms-auto">
-            <a class="nav-link" href="/admin">
-                <i class="fas fa-home me-1"></i>Dashboard
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container mt-4">
-    <div class="row">
-        <div class="col-12">
-            <!-- Header -->
-            <div class="d-flex justify-content-between align-items-center mb-4">
-                <h2>Users Management</h2>
-                <a href="/admin/register" class="btn btn-primary">
-                    <i class="fas fa-plus me-2"></i>Add New User
-                </a>
-            </div>
-
-            <!-- Success/Error Messages -->
-            <div th:if="${param.success}" class="alert alert-success alert-dismissible fade show" role="alert">
-                <span th:text="${param.success[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-            <div th:if="${param.error}" class="alert alert-danger alert-dismissible fade show" role="alert">
-                <span th:text="${param.error[0]}"></span>
-                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-            </div>
-
-            <!-- Users Table -->
-            <div class="card">
-                <div class="card-header">
-                    <h5 class="card-title mb-0">All Users</h5>
-                </div>
-                <div class="card-body">
-                    <div class="table-responsive">
-                        <table class="table table-striped table-hover">
-                            <thead class="table-dark">
-                            <tr>
-                                <th>ID</th>
-                                <th>Name</th>
-                                <th>Email</th>
-                                <th>Phone</th>
-                                <th>Role</th>
-                                <th>Actions</th>
-                            </tr>
-                            </thead>
-                            <tbody>
-                            <tr th:if="${#lists.isEmpty(users)}">
-                                <td colspan="6" class="text-center text-muted py-4">
-                                    No users found
-                                </td>
-                            </tr>
-                            <tr th:each="user : ${users}">
-                                <td th:text="${user.id}"></td>
-                                <td th:text="${user.firstName + ' ' + user.lastName}"></td>
-                                <td th:text="${user.email}"></td>
-                                <td th:text="${user.phone}"></td>
-                                <td>
-                                <span class="badge bg-info"
-                                      th:text="${user.role != null ? user.role.name() : 'No Role'}">
-                                </span>
-                                </td>
-                                <td>
-                                    <div class="btn-group" role="group">
-                                        <a th:href="@{/admin/users/edit/{id}(id=${user.id})}"
-                                           class="btn btn-sm btn-outline-primary">
-                                            <i class="fas fa-edit"></i> Edit
-                                        </a>
-
-                                    </div>
-                                </td>
-                            </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</body>
-</html>
Index: c/main/resources/templates/checkout.html
===================================================================
--- src/main/resources/templates/checkout.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,250 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Checkout - EasyFood</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-          crossorigin="anonymous">
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-            crossorigin="anonymous"></script>
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-    <style>
-        .checkout-container {
-            background-color: #fff;
-            border-radius: 12px;
-            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-            max-width: 1000px;
-            margin: 2rem auto;
-            padding: 2rem;
-        }
-
-        .form-section, .order-summary {
-            background-color: #f8f9fa;
-            border-radius: 12px;
-            padding: 1.5rem;
-            margin-bottom: 1.5rem;
-        }
-
-        .step-indicator {
-            display: none;
-        }
-
-        .address-card, .payment-option {
-            border: 2px solid #e9ecef;
-            border-radius: 10px;
-            padding: 1rem;
-            margin: 0.5rem 0;
-            transition: all 0.3s ease;
-            cursor: pointer;
-        }
-
-        .address-card.selected, .payment-option.selected {
-            border-color: #ffc107;
-            background: rgba(255, 193, 7, 0.1);
-        }
-
-        .order-item {
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-            padding: 0.75rem 0;
-            border-bottom: 1px solid #dee2e6;
-        }
-
-        .order-item:last-of-type {
-            border-bottom: none;
-        }
-
-        .total-row {
-            padding: 1rem 0;
-        }
-    </style>
-</head>
-<body class="bg-light">
-
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <a class="navbar-brand d-flex align-items-center" href="/home">
-            <img src="/images/logo.JPG" alt="Logo" height="90" class="d-inline-block align-text-top">
-        </a>
-    </div>
-</nav>
-
-<div class="container-fluid mt-4">
-    <div class="checkout-container">
-        <div class="text-center mb-4">
-            <h1 class="fw-bold"><i class="fas fa-shopping-cart me-3"></i>Checkout</h1>
-            <p class="text-muted">Complete your order
-                <span th:if="${restaurant != null}">from <strong th:text="${restaurant.getName()}"></strong></span>
-            </p>        </div>
-
-        <div class="row">
-            <div class="col-md-8">
-                <form th:action="@{/order/place}" method="post" id="checkoutForm">
-
-                    <div class="form-section">
-                        <h4 class="mb-3"><i class="fas fa-map-marker-alt me-2"></i>Delivery Address</h4>
-
-                        <div th:if="${not #lists.isEmpty(addresses)}">
-                            <p class="text-muted">Choose from saved addresses:</p>
-                            <div th:each="address : ${addresses}">
-                                <div class="address-card" onclick="selectAddress(this, [[${address.id}]])">
-                                    <div class="form-check">
-                                        <input class="form-check-input" type="radio" name="addressId"
-                                               th:value="${address.id}" th:id="'address-' + ${address.id}">
-                                        <label class="form-check-label" th:for="'address-' + ${address.id}">
-                                            <strong th:text="${address.street}"></strong><br>
-                                            <small class="text-muted"
-                                                   th:text="${address.city} + ', ' + ${address.postalCode}"></small>
-                                        </label>
-                                    </div>
-                                </div>
-                            </div>
-                            <hr class="my-3">
-                        </div>
-
-                        <div class="address-card" onclick="toggleNewAddressForm(event)">
-                            <div class="form-check">
-                                <input class="form-check-input" type="radio" name="addressOption" value="new"
-                                       id="newAddress">
-                                <label class="form-check-label" for="newAddress">
-                                    <i class="fas fa-plus-circle me-2"></i><strong>Add New Address</strong>
-                                </label>
-                            </div>
-                        </div>
-
-                        <div class="new-address-form" id="newAddressForm" style="display: none;">
-                            <h6 class="mt-3"><i class="fas fa-home me-2"></i>New Address Details</h6>
-                            <div class="row">
-                                <div class="col-md-12 mb-3">
-                                    <label for="newStreet" class="form-label">Street Address</label>
-                                    <input type="text" class="form-control" id="newStreet" name="newStreet"
-                                           placeholder="Enter street address">
-                                </div>
-                                <div class="col-md-6 mb-3">
-                                    <label for="newCity" class="form-label">City</label>
-                                    <input type="text" class="form-control" id="newCity" name="newCity"
-                                           placeholder="Enter city">
-                                </div>
-                                <div class="col-md-6 mb-3">
-                                    <label for="newPostalCode" class="form-label">Postal Code</label>
-                                    <input type="text" class="form-control" id="newPostalCode" name="newPostalCode"
-                                           placeholder="Enter postal code">
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="form-section">
-                        <h4 class="mb-3"><i class="fas fa-credit-card me-2"></i>Payment Method</h4>
-                        <div class="payment-option" onclick="selectPayment(this, 'card')">
-                            <div class="form-check">
-                                <input class="form-check-input" type="radio" name="paymentMethod" value="card"
-                                       id="paymentCard">
-                                <label class="form-check-label" for="paymentCard">
-                                    <i class="fas fa-credit-card icon-payment text-primary"></i>
-                                    <strong>Credit/Debit Card</strong>
-                                </label>
-                            </div>
-                        </div>
-
-                        <div class="payment-option" onclick="selectPayment(this, 'cash')">
-                            <div class="form-check">
-                                <input class="form-check-input" type="radio" name="paymentMethod" value="cash"
-                                       id="paymentCash">
-                                <label class="form-check-label" for="paymentCash">
-                                    <i class="fas fa-money-bill-wave icon-payment text-success"></i>
-                                    <strong>Cash on Delivery</strong>
-                                </label>
-                            </div>
-                        </div>
-
-                        <div class="payment-option" onclick="selectPayment(this, 'paypal')">
-                            <div class="form-check">
-                                <input class="form-check-input" type="radio" name="paymentMethod" value="paypal"
-                                       id="paymentPaypal">
-                                <label class="form-check-label" for="paymentPaypal">
-                                    <i class="fab fa-paypal icon-payment text-info"></i>
-                                    <strong>PayPal</strong>
-                                </label>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div class="form-section">
-                        <h4 class="mb-3"><i class="fas fa-sticky-note me-2"></i>Order Notes</h4>
-                        <textarea class="form-control" name="comment" rows="3"
-                                  placeholder="Any special instructions for your order? (Optional)"></textarea>
-                    </div>
-                </form>
-            </div>
-
-            <div class="col-md-4">
-                <div class="order-summary sticky-top" style="top: 2rem;">
-                    <h4 class="mb-3"><i class="fas fa-receipt me-2"></i>Order Summary</h4>
-
-                    <div th:each="item : ${cartItems}" class="order-item">
-                        <div>
-                            <strong th:text="${item.item.name}"></strong>
-                            <small class="text-muted">x<span th:text="${item.quantity}"></span></small>
-                        </div>
-                        <span th:text="'$' + ${itemTotals[item.getItem().getId()]}"></span>
-                    </div>
-
-                    <div class="d-flex justify-content-between total-row">
-                        <strong>Total:</strong>
-                        <strong class="text-warning" th:text="'$' + ${totalAmount}"></strong>
-                    </div>
-
-                    <button type="submit" form="checkoutForm" class="btn btn-warning w-100 mt-3">
-                        <i class="fas fa-check-circle me-2"></i>Place Order
-                    </button>
-
-                    <div class="text-center mt-3">
-                        <a href="/cart" class="btn btn-outline-secondary">
-                            <i class="fas fa-arrow-left me-2"></i>Back to Cart
-                        </a>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-
-    <div th:if="${successMessage}" class="alert alert-success alert-dismissible fade show position-fixed"
-         style="top: 20px; right: 20px; z-index: 1050;">
-        <span th:text="${successMessage}"></span>
-        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-    </div>
-
-    <div th:if="${errorMessage}" class="alert alert-danger alert-dismissible fade show position-fixed"
-         style="top: 20px; right: 20px; z-index: 1050;">
-        <span th:text="${errorMessage}"></span>
-        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-    </div>
-
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
-    <script>
-        function selectAddress(element) {
-            document.querySelectorAll('.address-card').forEach(card => card.classList.remove('selected'));
-            element.classList.add('selected');
-            element.querySelector('input[type="radio"]').checked = true;
-            document.getElementById('newAddressForm').style.display = 'none';
-        }
-
-        function toggleNewAddressForm(event) {
-            document.querySelectorAll('.address-card').forEach(card => card.classList.remove('selected'));
-            event.currentTarget.classList.add('selected');
-            document.getElementById('newAddressForm').style.display = 'block';
-            document.querySelectorAll('input[name="addressId"]').forEach(radio => radio.checked = false);
-        }
-
-        function selectPayment(element) {
-            document.querySelectorAll('.payment-option').forEach(option => option.classList.remove('selected'));
-            element.classList.add('selected');
-            element.querySelector('input[type="radio"]').checked = true;
-        }
-    </script>
-
-</body>
-</html>
Index: c/main/resources/templates/coment_page.html
===================================================================
--- src/main/resources/templates/coment_page.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,68 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Leave a Review</title>
-  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-        crossorigin="anonymous">
-  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-          crossorigin="anonymous"></script>
-  <style>
-    .star-rating {
-      direction: rtl;
-      font-size: 2rem;
-      unicode-bidi: bidi-override;
-      display: inline-flex;
-    }
-    .star-rating input {
-      display: none;
-    }
-    .star-rating label {
-      color: #ccc;
-      cursor: pointer;
-    }
-    .star-rating input:checked ~ label,
-    .star-rating label:hover,
-    .star-rating label:hover ~ label {
-      color: #f5b301;
-    }
-  </style>
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-  <div class="container-fluid">
-    <a class="navbar-brand d-flex align-items-center" href="home.html">
-      <img src="media/easyfood.png" alt="Logo" height="40" class="d-inline-block align-text-top">
-    </a>
-    <span class="fw-semibold fs-5 mx-auto">Leave a Review</span>
-    <div class="d-flex align-items-center gap-2">
-      <a href="cart.html" class="btn btn-outline-secondary rounded-circle p-2 position-relative">
-        <img src="https://cdn-icons-png.flaticon.com/512/1170/1170678.png" alt="Cart" width="22" height="22">
-      </a>
-      <a href="profile.html" class="btn btn-outline-secondary rounded-circle p-2">
-        <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png" alt="Profile" width="22" height="22">
-      </a>
-    </div>
-  </div>
-</nav>
-
-<!-- Review Form -->
-<div class="container my-5">
-  <div class="card shadow-sm p-4">
-    <h4 class="mb-3">Your Comment for <span class="text-primary">Domino’s Pizza</span></h4>
-
-    <!-- Comment Box -->
-    <div class="mb-3">
-      <label for="reviewText" class="form-label"></label>
-      <textarea class="form-control" id="reviewText" rows="4" placeholder="Share your experience..."></textarea>
-    </div>
-
-    <!-- Submit -->
-    <button class="btn btn-primary w-100">Submit Review</button>
-  </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/deliveryman_dash.html
===================================================================
--- src/main/resources/templates/deliveryman_dash.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,67 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Delivery Dashboard</title>
-  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-  <div class="container-fluid">
-    <a class="navbar-brand fw-bold" href="#">Delivery Dashboard</a>
-    <a href="profile.html" class="btn btn-outline-secondary rounded-circle p-2">
-      <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png" alt="Profile" width="22" height="22">
-    </a>
-  </div>
-</nav>
-
-<div class="container my-4">
-
-  <!-- Available Deliveries -->
-  <h3 class="fw-bold mb-3">Available Deliveries</h3>
-  <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 #<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">
-        <form th:action="@{'/DeliveryMan/accept/' + ${orders.id}}" method="post">
-          <button class="btn btn-success">Mark as being delivered</button>
-        </form>
-
-      </div>
-    </div>
-  </div>
-
-  <!-- Active Delivery (after accepted) -->
-  <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-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 -->
-      <div class="ratio ratio-16x9 my-3">
-        <iframe
-                src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3023.742383132246!2d-74.006015!3d40.712776!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2zNDDCsDQyJzQ2LjAiTiA3NMKwMDAnMjEuNyJX!5e0!3m2!1sen!2sus!4v1632357890123!5m2!1sen!2sus"
-                style="border:0;" allowfullscreen="" loading="lazy">
-        </iframe>
-      </div>
-
-      <!-- Update Status -->
-      <form th:action="@{'/DeliveryMan/deliver/' + ${orders.id}}" method="post">
-        <button type="submit" class="btn btn-primary">Mark as Delivered</button>
-      </form>
-    </div>
-  </div>
-
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/edit_menu.html
===================================================================
--- src/main/resources/templates/edit_menu.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,141 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Domino’s Pizza - Manage Menu</title>
-  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-        crossorigin="anonymous">
-  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-          crossorigin="anonymous"></script>
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-  <div class="container-fluid">
-    <a class="navbar-brand d-flex align-items-center" href="home.html">
-      <img src="media/easyfood.png" alt="Logo" height="40" class="d-inline-block align-text-top">
-    </a>
-
-    <span class="fw-semibold fs-5 mx-auto">Manage Menu</span>
-
-    <div class="d-flex align-items-center gap-2">
-      <!-- Profile -->
-      <a href="profile.html" class="btn btn-outline-secondary rounded-circle p-2">
-        <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png" alt="Profile" width="22" height="22">
-      </a>
-    </div>
-  </div>
-</nav>
-
-<!-- Restaurant Header -->
-<div class="container my-4">
-  <div class="card shadow-sm border-0">
-    <div class="card-body d-flex flex-column flex-md-row align-items-center">
-      <img src="media/dominos.png" alt="Domino’s Logo" class="rounded me-md-4 mb-3 mb-md-0" style="width:100px; height:100px; object-fit:contain;">
-      <div>
-        <h2 class="fw-bold mb-1">Domino’s Pizza</h2>
-        <p class="text-secondary small mb-0">Manage your menu items below: add, edit or remove.</p>
-      </div>
-    </div>
-  </div>
-</div>
-
-<!-- Add New Item Button -->
-<div class="container mb-4 text-end">
-  <button class="btn btn-success fw-semibold" data-bs-toggle="modal" data-bs-target="#addItemModal">
-    + Add New Item
-  </button>
-</div>
-
-<!-- Menu List -->
-<div id="menu" class="container-fluid my-4">
-  <h4 class="mb-3">Current Menu</h4>
-
-  <!-- Example Item -->
-  <div class="card shadow-sm border-0 w-100 mb-3">
-    <div class="row g-0">
-      <!-- Image -->
-      <div class="col-md-3 col-4">
-        <img src="media/pizza.png"
-             class="w-100 object-fit-cover rounded-start"
-             alt="Pizza"
-             style="height:150px;">
-      </div>
-
-      <!-- Content -->
-      <div class="col-md-9 col-8 d-flex flex-column justify-content-between p-3" style="height:150px;">
-        <div>
-          <h5 class="card-title mb-1">Pepperoni Pizza</h5>
-          <p class="card-text text-muted fs-6 fw-semibold mb-2">15.49$</p>
-        </div>
-        <div class="d-flex gap-2">
-          <button class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#editItemModal">Edit</button>
-          <button class="btn btn-danger btn-sm">Delete</button>
-        </div>
-      </div>
-    </div>
-  </div>
-
-</div>
-
-<!-- Add Item Modal -->
-<div class="modal fade" id="addItemModal" tabindex="-1" aria-hidden="true">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-header">
-        <h5 class="modal-title">Add New Item</h5>
-        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
-      </div>
-      <div class="modal-body">
-        <form>
-          <div class="mb-3">
-            <label class="form-label">Item Name</label>
-            <input type="text" class="form-control" placeholder="Enter name">
-          </div>
-          <div class="mb-3">
-            <label class="form-label">Price ($)</label>
-            <input type="number" class="form-control" placeholder="Enter price">
-          </div>
-          <div class="mb-3">
-            <label class="form-label">Image URL</label>
-            <input type="text" class="form-control" placeholder="Enter image URL">
-          </div>
-          <button type="submit" class="btn btn-success w-100">Add Item</button>
-        </form>
-      </div>
-    </div>
-  </div>
-</div>
-
-<!-- Edit Item Modal -->
-<div class="modal fade" id="editItemModal" tabindex="-1" aria-hidden="true">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-header">
-        <h5 class="modal-title">Edit Item</h5>
-        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
-      </div>
-      <div class="modal-body">
-        <form>
-          <div class="mb-3">
-            <label class="form-label">Item Name</label>
-            <input type="text" class="form-control" value="Pepperoni Pizza">
-          </div>
-          <div class="mb-3">
-            <label class="form-label">Price ($)</label>
-            <input type="number" class="form-control" value="15.49">
-          </div>
-          <div class="mb-3">
-            <label class="form-label">Image URL</label>
-            <input type="text" class="form-control" value="media/pizza.png">
-          </div>
-          <button type="submit" class="btn btn-primary w-100">Save Changes</button>
-        </form>
-      </div>
-    </div>
-  </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/item_detail.html
===================================================================
--- src/main/resources/templates/item_detail.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,110 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Item Details - EasyFood</title>
-  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-        crossorigin="anonymous">
-  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-          crossorigin="anonymous"></script>
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-  <div class="container-fluid">
-    <a class="navbar-brand d-flex align-items-center" href="home.html">
-      <img src="media/easyfood.png" alt="Logo" height="40" class="d-inline-block align-text-top">
-    </a>
-
-    <span class="fw-semibold fs-5 mx-auto">Item Details</span>
-
-    <div class="d-flex align-items-center gap-2">
-      <!-- Cart -->
-      <a href="cart.html" class="btn btn-outline-secondary rounded-circle p-2 position-relative">
-        <img src="https://cdn-icons-png.flaticon.com/512/1170/1170678.png"
-             alt="Cart" width="22" height="22">
-        <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-warning text-dark">
-                    2
-                </span>
-      </a>
-      <!-- Profile -->
-      <a href="profile.html" class="btn btn-outline-secondary rounded-circle p-2">
-        <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png"
-             alt="Profile" width="22" height="22">
-      </a>
-    </div>
-  </div>
-</nav>
-
-<!-- Item Details -->
-<div class="container my-5">
-  <div class="row g-4">
-    <!-- Image -->
-    <div class="col-md-5 text-center">
-      <img src="media/pizza.png"
-           class="w-100 rounded shadow-sm"
-           alt="Pepperoni Pizza"
-           style="max-height:400px; object-fit:cover;">
-    </div>
-
-    <!-- Info -->
-    <div class="col-md-7 d-flex flex-column justify-content-between">
-      <div>
-        <h2 class="fw-bold">Pepperoni Pizza</h2>
-        <p class="text-muted fs-5 fw-semibold">$15.49</p>
-        <p class="text-secondary">
-          A classic Pepperoni Pizza made with fresh mozzarella, tangy tomato sauce,
-          and crispy pepperoni slices. Perfectly baked for a delicious meal.
-        </p>
-      </div>
-
-      <div class="d-flex flex-column flex-sm-row gap-3 mt-4">
-        <button class="btn btn-warning btn-lg fw-semibold flex-fill">Add to Cart</button>
-      </div>
-    </div>
-  </div>
-
-  <!-- Recommended Section -->
-  <div class="mt-5">
-    <h4 class="mb-3">You may also like</h4>
-    <div class="row g-3">
-      <!-- Item Card -->
-      <div class="col-md-4 col-sm-6">
-        <div class="card shadow-sm border-0 h-100">
-          <img src="media/burger.png" class="card-img-top object-fit-cover" style="height:200px;" alt="Burger">
-          <div class="card-body d-flex flex-column">
-            <h5 class="card-title">Cheese Burger</h5>
-            <p class="card-text text-muted">$12.99</p>
-            <a href="item.html" class="btn btn-sm btn-warning mt-auto">View Details</a>
-          </div>
-        </div>
-      </div>
-      <!-- Item Card -->
-      <div class="col-md-4 col-sm-6">
-        <div class="card shadow-sm border-0 h-100">
-          <img src="media/salad.png" class="card-img-top object-fit-cover" style="height:200px;" alt="Salad">
-          <div class="card-body d-flex flex-column">
-            <h5 class="card-title">Fresh Salad</h5>
-            <p class="card-text text-muted">$9.49</p>
-            <a href="item.html" class="btn btn-sm btn-warning mt-auto">View Details</a>
-          </div>
-        </div>
-      </div>
-      <!-- Item Card -->
-      <div class="col-md-4 col-sm-6">
-        <div class="card shadow-sm border-0 h-100">
-          <img src="media/sandwich.png" class="card-img-top object-fit-cover" style="height:200px;" alt="Sandwich">
-          <div class="card-body d-flex flex-column">
-            <h5 class="card-title">Club Sandwich</h5>
-            <p class="card-text text-muted">$8.99</p>
-            <a href="item.html" class="btn btn-sm btn-warning mt-auto">View Details</a>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/login.html
===================================================================
--- src/main/resources/templates/login.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,99 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>EasyFood - Login</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <!-- Logo -->
-        <a class="navbar-brand d-flex align-items-center" href="index.html">
-            <img src="/images/logo.JPG" alt="Logo" height="80">
-        </a>
-        <div class="d-flex align-items-center"></div>
-    </div>
-</nav>
-
-<!-- Centering div -->
-<div class="mt-5 d-flex justify-content-center"></div>
-
-<!-- Login Form -->
-<div class="container my-5">
-    <div class="row justify-content-center">
-        <div class="col-md-8 col-lg-6">
-            <div class="card shadow-sm border-0 rounded-3">
-                <div class="card-body p-4">
-                    <!-- Title -->
-                    <h3 class="mb-4 text-center">Login</h3>
-
-                    <!-- Error Messages -->
-                    <div th:if="${param.error}" class="alert alert-danger text-center mb-3">
-                        <i class="bi bi-exclamation-triangle-fill me-2"></i>
-                        Invalid email or password. Please try again.
-                    </div>
-
-                    <!-- Success Messages -->
-                    <div th:if="${param.logout}" class="alert alert-success text-center mb-3">
-                        <i class="bi bi-check-circle-fill me-2"></i>
-                        You have been logged out successfully.
-                    </div>
-
-                    <!-- Registration Success Message -->
-                    <div th:if="${param.registered}" class="alert alert-success text-center mb-3">
-                        <i class="bi bi-check-circle-fill me-2"></i>
-                        Registration successful! Please login with your credentials.
-                    </div>
-
-                    <!-- Profile Icon -->
-                    <div class="text-center mb-4">
-                        <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png"
-                             class="rounded-circle border shadow-sm"
-                             alt="Profile" width="100" height="100">
-                    </div>
-
-                    <!-- Form - Spring Security will process this -->
-                    <form class="form-signin mt-xl-5" method="post" th:action="@{/login}">
-                        <div class="mb-3">
-                            <label class="form-label fw-semibold">Email</label>
-                            <input type="email" name="email" class="form-control" placeholder="Enter your email"
-                                   required autofocus>
-                        </div>
-
-                        <div class="mb-3">
-                            <label class="form-label fw-semibold">Password</label>
-                            <input type="password" name="password" class="form-control"
-                                   placeholder="Enter your password" required>
-                        </div>
-
-                        <!-- Remember Me Option -->
-                        <div class="mb-3 form-check">
-                            <input type="checkbox" name="remember-me" class="form-check-input" id="rememberMe">
-                            <label class="form-check-label" for="rememberMe">
-                                Remember me
-                            </label>
-                        </div>
-
-                        <div class="d-flex justify-content-center">
-                            <button type="submit" class="btn btn-warning fw-semibold px-4">
-                                <i class="bi bi-box-arrow-in-right me-2"></i>Login
-                            </button>
-                        </div>
-
-                        <div class="text-center mt-3">
-                            <small>Don't have an account? <a href="/register" class="text-decoration-none">Register here</a></small>
-                        </div>
-                    </form>
-
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/main_pg.html
===================================================================
--- src/main/resources/templates/main_pg.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,203 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>EasyFood</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-          crossorigin="anonymous">
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-            crossorigin="anonymous"></script>
-    <style>
-        #cuisine {
-            display: flex;
-            overflow-x: auto;
-            gap: 1rem;
-            padding: 1rem;
-            scroll-behavior: smooth;
-        }
-
-        #cuisine .card {
-            flex: 0 0 auto;
-            width: 7rem;
-            height: 3rem;
-            border-radius: 12px;
-            cursor: pointer;
-            transition: transform 0.2s;
-        }
-
-        #cuisine .card:hover {
-            transform: scale(1.05);
-        }
-
-        /* Scrollbar */
-        #cuisine::-webkit-scrollbar {
-            height: 6px;
-        }
-
-        #cuisine::-webkit-scrollbar-track {
-            background: #f1f1f1;
-            border-radius: 10px;
-        }
-
-        #cuisine::-webkit-scrollbar-thumb {
-            background: #f0ad4e;
-            border-radius: 10px;
-        }
-
-        #cuisine::-webkit-scrollbar-thumb:hover {
-            background: #d9902e;
-        }
-
-        #cuisine {
-            scrollbar-width: thin;
-            scrollbar-color: #f0ad4e #f1f1f1;
-        }
-
-        /* This CSS is for the items-container now */
-        .items-container .card,
-        .recommended-scroll .card,
-        .recommended-scroll-items .card {
-            flex: 0 0 auto;
-            width: 14rem;
-            border-radius: 12px;
-            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-            transition: transform 0.2s;
-        }
-
-        .items-container .card:hover,
-        .recommended-scroll .card:hover,
-        .recommended-scroll-items .card:hover {
-            transform: scale(1.05);
-        }
-
-        .items-container img,
-        .recommended-scroll img,
-        .recommended-scroll-items img {
-            height: 140px;
-            object-fit: cover;
-            border-top-left-radius: 12px;
-            border-top-right-radius: 12px;
-        }
-
-        /* Cart badge styling */
-        .cart-badge {
-            position: absolute;
-            top: -8px;
-            right: -8px;
-            min-width: 18px;
-            height: 18px;
-            border-radius: 50%;
-            font-size: 11px;
-            font-weight: bold;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            line-height: 1;
-        }
-
-        /* Hide badge when count is 0 */
-        .cart-badge.d-none {
-            display: none !important;
-        }
-
-        .recommended-scroll-items,
-        .recommended-scroll,
-        .items-scroll {
-            display: flex;
-            gap: 1rem;
-            overflow-x: auto;
-            padding-bottom: 1rem;
-            scroll-behavior: smooth;
-        }
-    </style>
-</head>
-<body class="bg-light">
-
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <a class="navbar-brand d-flex align-items-center" href="/home">
-            <img src="/images/logo.JPG" alt="Logo" height="90" class="d-inline-block align-text-top">
-        </a>
-        <form th:action="@{/home}" method="get" class="d-flex mx-auto w-50" role="search">
-            <input class="form-control me-2" type="search" name="searchTerm" th:value="${searchTerm}"
-                   placeholder="Search for food..." aria-label="Search">
-            <button class="btn btn-warning" type="submit">Search</button>
-        </form>
-        <div class="d-flex align-items-center gap-2">
-            <a href="/cart" class="btn btn-outline-secondary rounded-circle p-2 position-relative">
-                <img src="https://cdn-icons-png.flaticon.com/512/1170/1170678.png" alt="Cart" width="22" height="22">
-                <span class="cart-badge bg-warning text-dark"
-                      th:classappend="${numberOfItems == 0} ? 'd-none' : ''"
-                      th:text="${numberOfItems}">0</span>
-            </a>
-            <a href="/profile" class="btn btn-outline-secondary rounded-circle p-2">
-                <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png" alt="Profile" width="22" height="22">
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="text-center my-3">
-    <blockquote class="blockquote">
-        <p class="fs-5">"Fresh flavors delivered to your door."</p>
-    </blockquote>
-</div>
-
-<div id="cuisine" class="container-fluid" th:if="${categories != null}">
-    <a th:each="category : ${categories}"
-       th:href="@{/home(categoryId=${category.id})}"
-       class="card bg-warning d-flex justify-content-center align-items-center text-decoration-none text-dark">
-        <h6 class="mb-0" th:text="${category.name}">Category Name</h6>
-    </a>
-</div>
-
-<div th:if="${categories == null}">
-    <p>No categories available.</p>
-</div>
-
-<div class="container-fluid my-4">
-    <div class="items-container">
-        <h4 th:if="${searchTerm} != null">Search Results for: <span th:text="${searchTerm}"></span></h4>
-        <h4 th:unless="${searchTerm} != null">Featured Items</h4>
-
-        <div class="recommended-scroll">
-            <div class="card" th:each="item : ${items}">
-                <img th:src="@{'/images/media/' + ${item.imageUrl}}" class="card-img-top" th:alt="${item.name}">
-                <div class="card-body">
-                    <h5 class="card-title" th:text="${item.name}">Item Name</h5>
-                    <p class="card-text text-muted" th:text="${item.price} + '$'">Price</p>
-
-                    <form th:action="@{/cart/add}" method="post">
-                        <input type="hidden" name="itemId" th:value="${item.id}"/>
-                        <button type="submit" class="btn btn-warning w-100">Add to cart</button>
-                    </form>
-                </div>
-            </div>
-            <div th:if="${items.isEmpty()}">
-                <p>No results found.</p>
-            </div>
-        </div>
-    </div>
-</div>
-
-<div id="RecommendedItems" class="container-fluid my-4"
-     th:if="${recommendedItems != null and !recommendedItems.isEmpty()}">
-    <h4 class="mb-3">Recommended for You</h4>
-    <div class="recommended-scroll-items">
-        <div class="card" th:each="item : ${recommendedItems}">
-            <img th:src="@{'/images/media/' + ${item.imageUrl}}" class="card-img-top" th:alt="${item.name}">
-            <div class="card-body">
-                <h5 class="card-title" th:text="${item.name}">Item Name</h5>
-                <p class="card-text text-muted" th:text="${item.price} + '$'">Price</p>
-
-                <form th:action="@{/cart/add}" method="post">
-                    <input type="hidden" name="itemId" th:value="${item.id}"/>
-                    <button type="submit" class="btn btn-warning w-100">Add to cart</button>
-                </form>
-            </div>
-        </div>
-    </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/order_confirmation.html
===================================================================
--- src/main/resources/templates/order_confirmation.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,213 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Order Confirmation - EasyFood</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-          crossorigin="anonymous">
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-            crossorigin="anonymous"></script>
-    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
-    <style>
-        .confirmation-container {
-            background-color: #fff;
-            border-radius: 12px;
-            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-            max-width: 800px;
-            margin: 2rem auto;
-            padding: 2rem;
-        }
-
-        .success-header {
-            text-align: center;
-            padding-bottom: 1rem;
-            border-bottom: 1px solid #dee2e6;
-            margin-bottom: 2rem;
-        }
-
-        .success-icon {
-            font-size: 4rem;
-            color: #28a745;
-            margin-bottom: 1rem;
-        }
-
-        .order-info-card, .delivery-timeline {
-            background-color: #f8f9fa;
-            border-radius: 12px;
-            padding: 1.5rem;
-            margin-bottom: 1.5rem;
-        }
-
-        .status-badge {
-            background-color: #ffc107;
-            color: #212529;
-            padding: 0.5rem 1rem;
-            border-radius: 50px;
-            font-weight: bold;
-            font-size: 0.9rem;
-        }
-
-        .order-item {
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-            padding: 0.75rem 0;
-            border-bottom: 1px solid #dee2e6;
-        }
-
-        .order-item:last-child {
-            border-bottom: none;
-        }
-
-        .timeline-step {
-            display: flex;
-            align-items: center;
-            margin: 0.5rem 0;
-        }
-
-        .timeline-icon {
-            width: 40px;
-            height: 40px;
-            border-radius: 50%;
-            background-color: #6c757d;
-            color: white;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            margin-right: 1rem;
-        }
-
-        .timeline-step.completed .timeline-icon {
-            background-color: #28a745;
-        }
-
-        .timeline-step.active .timeline-icon {
-            background-color: #0d6efd;
-        }
-
-        .action-buttons {
-            display: flex;
-            gap: 1rem;
-            justify-content: center;
-            margin-top: 2rem;
-        }
-
-    </style>
-</head>
-<body class="bg-light">
-
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <a class="navbar-brand d-flex align-items-center" href="/home">
-            <img src="/images/logo.JPG" alt="Logo" height="90" class="d-inline-block align-text-top">
-        </a>
-    </div>
-</nav>
-
-<div class="container-fluid mt-4">
-    <div class="confirmation-container">
-        <div class="success-header">
-            <div class="success-icon">
-                <i class="fas fa-check-circle"></i>
-            </div>
-            <h1>Order Confirmed!</h1>
-            <p class="text-muted mb-0">Thank you for your order. We're preparing it now!</p>
-        </div>
-
-        <div class="order-details">
-            <div class="order-info-card">
-                <h4><i class="fas fa-receipt me-2"></i>Order Information</h4>
-                <div class="row">
-                    <div class="col-md-6">
-                        <p><strong>Order ID:</strong> #<span th:text="${order.id}"></span></p>
-                        <p><strong>Order Date:</strong>
-                            <span th:text="${#temporals.format(order.orderDate, 'MMM dd, yyyy HH:mm')}"></span>
-                        </p>
-                        <p><strong>Status:</strong>
-                            <span class="status-badge" th:text="${order.orderStatus}"></span>
-                        </p>
-                    </div>
-                    <div class="col-md-6">
-                        <p><strong>Total Amount:</strong>
-                            <span class="text-success fw-bold" th:text="${order.totalAmount}"></span>
-                        </p>
-                        <p><strong>Delivery Address:</strong></p>
-                        <small>
-                            <span th:text="${order.address.street}"></span><br>
-                            <span th:text="${order.address.city} + ', ' + ${order.address.postalCode}"></span>
-                        </small>
-                    </div>
-                </div>
-                <div th:if="${order.comment}" class="mt-3">
-                    <p><strong>Notes:</strong> <span th:text="${order.comment}"></span></p>
-                </div>
-            </div>
-
-            <div class="order-info-card">
-                <h4><i class="fas fa-utensils me-2"></i>Order Items</h4>
-                <div th:each="orderItem : ${orderItems}" class="order-item">
-                    <div>
-                        <strong th:text="${orderItem.item.name}"></strong>
-                        <small class="text-muted">x<span th:text="${orderItem.quantity}"></span></small>
-                    </div>
-                    <span th:text="${orderItem.totalPrice}"></span>
-                </div>
-            </div>
-
-            <div class="delivery-timeline">
-                <h4><i class="fas fa-truck me-2"></i>Delivery Status</h4>
-
-                <div class="timeline-step completed">
-                    <div class="timeline-icon"><i class="fas fa-check"></i></div>
-                    <div>
-                        <strong>Order Confirmed</strong>
-                        <small class="text-muted d-block">Your order has been received and confirmed</small>
-                    </div>
-                </div>
-
-                <div class="timeline-step active">
-                    <div class="timeline-icon"><i class="fas fa-utensils"></i></div>
-                    <div>
-                        <strong>Preparing</strong>
-                        <small class="text-muted d-block">Restaurant is preparing your order</small>
-                    </div>
-                </div>
-
-                <div class="timeline-step">
-                    <div class="timeline-icon"><i class="fas fa-motorcycle"></i></div>
-                    <div>
-                        <strong>Out for Delivery</strong>
-                        <small class="text-muted d-block">Your order is on the way</small>
-                    </div>
-                </div>
-
-                <div class="timeline-step">
-                    <div class="timeline-icon"><i class="fas fa-home"></i></div>
-                    <div>
-                        <strong>Delivered</strong>
-                        <small class="text-muted d-block">Order delivered successfully</small>
-                    </div>
-                </div>
-            </div>
-
-            <div class="action-buttons">
-                <a href="/profile" class="btn btn-warning btn-custom">
-                    <i class="fas fa-user me-2"></i>View Profile
-                </a>
-                <a href="/orders" class="btn btn-outline-warning btn-custom">
-                    <i class="fas fa-history me-2"></i>Order History
-                </a>
-            </div>
-        </div>
-    </div>
-</div>
-
-<div th:if="${successMessage}" class="alert alert-success alert-dismissible fade show position-fixed"
-     style="top: 20px; right: 20px; z-index: 1050;">
-    <span th:text="${successMessage}"></span>
-    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/orders.html
===================================================================
--- src/main/resources/templates/orders.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,100 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>My Orders</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-          crossorigin="anonymous">
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-            crossorigin="anonymous"></script>
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <a class="navbar-brand d-flex align-items-center" href="home.html">
-            <img src="media/easyfood.png" alt="Logo" height="40" class="d-inline-block align-text-top">
-        </a>
-
-        <span class="fw-semibold fs-5 mx-auto">My Orders</span>
-
-        <div class="d-flex align-items-center gap-2">
-            <!-- Cart -->
-            <a href="cart.html" class="btn btn-outline-secondary rounded-circle p-2 position-relative">
-                <img src="https://cdn-icons-png.flaticon.com/512/1170/1170678.png" alt="Cart" width="22" height="22">
-            </a>
-            <!-- Profile -->
-            <a href="profile.html" class="btn btn-outline-secondary rounded-circle p-2">
-                <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png" alt="Profile" width="22" height="22">
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container my-4">
-
-    <!-- Active Orders -->
-    <h3 class="mb-3">Active Orders</h3>
-    <div class="card shadow-sm mb-3">
-        <div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-center">
-            <div>
-                <h5 class="fw-bold mb-1">Domino’s Pizza</h5>
-                <p class="text-muted small mb-1">Order #10234 • Placed on Aug 25, 2025</p>
-                <p class="mb-0">Items: 1x Pepperoni Pizza, 1x Coke</p>
-            </div>
-            <div class="text-md-end mt-3 mt-md-0">
-                <span class="badge bg-warning text-dark mb-2">On the way</span><br>
-                <a href="order-tracking.html" class="btn btn-sm btn-outline-secondary">Track Order</a>
-            </div>
-        </div>
-    </div>
-
-    <div class="card shadow-sm mb-3">
-        <div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-center">
-            <div>
-                <h5 class="fw-bold mb-1">McDonald’s</h5>
-                <p class="text-muted small mb-1">Order #10233 • Placed on Aug 25, 2025</p>
-                <p class="mb-0">Items: 2x Big Mac, 2x Fries</p>
-            </div>
-            <div class="text-md-end mt-3 mt-md-0">
-                <span class="badge bg-info text-dark mb-2">Preparing</span><br>
-                <a href="order-tracking.html" class="btn btn-sm btn-outline-secondary">Track Order</a>
-            </div>
-        </div>
-    </div>
-
-    <!-- Past Orders -->
-    <h3 class="mt-5 mb-3">Past Orders</h3>
-    <div class="card shadow-sm mb-3">
-        <div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-center">
-            <div>
-                <h5 class="fw-bold mb-1">Starbucks</h5>
-                <p class="text-muted small mb-1">Order #10230 • Aug 22, 2025</p>
-                <p class="mb-0">Items: 1x Latte, 1x Croissant</p>
-            </div>
-            <div class="text-md-end mt-3 mt-md-0">
-                <span class="badge bg-success mb-2">Delivered</span><br>
-                <a href="order-details.html" class="btn btn-sm btn-outline-secondary">View Details</a>
-            </div>
-        </div>
-    </div>
-
-    <div class="card shadow-sm mb-3">
-        <div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-center">
-            <div>
-                <h5 class="fw-bold mb-1">KFC</h5>
-                <p class="text-muted small mb-1">Order #10228 • Aug 20, 2025</p>
-                <p class="mb-0">Items: 1x Zinger Burger, 1x Fries</p>
-            </div>
-            <div class="text-md-end mt-3 mt-md-0">
-                <span class="badge bg-success mb-2">Delivered</span><br>
-                <a href="order-details.html" class="btn btn-sm btn-outline-secondary">View Details</a>
-            </div>
-        </div>
-    </div>
-
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/orders_rest_side.html
===================================================================
--- src/main/resources/templates/orders_rest_side.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,75 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Orders Management</title>
-  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
-  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-  <div class="container-fluid">
-    <a class="navbar-brand d-flex align-items-center" href="home.html">
-      <img src="media/easyfood.png" alt="Logo" height="40" class="d-inline-block align-text-top">
-    </a>
-    <span class="fw-semibold fs-5 mx-auto">Orders Management</span>
-    <a href="profile.html" class="btn btn-outline-secondary rounded-circle p-2">
-      <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png" alt="Profile" width="22" height="22">
-    </a>
-  </div>
-</nav>
-
-<div class="container my-4">
-  <h3 class="fw-bold mb-3">Orders Received</h3>
-
-  <!-- Order Card -->
-  <div class="card shadow-sm border-0 mb-3">
-    <div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-md-center">
-      <div>
-        <h5 class="mb-1">Order #101</h5>
-        <p class="text-muted mb-1">Customer: John Doe</p>
-        <p class="text-muted small mb-1">Items: 1x Pepperoni Pizza, 2x Coke</p>
-        <p class="fw-semibold text-dark mb-0">Total: $25.50</p>
-      </div>
-      <div class="mt-3 mt-md-0">
-        <!-- If order is new -->
-        <button class="btn btn-success me-2">Accept</button>
-        <button class="btn btn-danger">Reject</button>
-
-        <!-- If order is accepted -->
-        <!--
-        <select class="form-select d-inline-block w-auto ms-2">
-          <option>Prepared</option>
-          <option>Delivered</option>
-        </select>
-        -->
-      </div>
-    </div>
-  </div>
-
-  <!-- Example of accepted order with status update -->
-  <div class="card shadow-sm border-0 mb-3">
-    <div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-md-center">
-      <div>
-        <h5 class="mb-1">Order #102</h5>
-        <p class="text-muted mb-1">Customer: Sarah Lee</p>
-        <p class="text-muted small mb-1">Items: 2x Sushi Set</p>
-        <p class="fw-semibold text-dark mb-0">Total: $36.00</p>
-      </div>
-      <div class="mt-3 mt-md-0">
-        <!-- Status dropdown -->
-        <select class="form-select w-auto">
-          <option>Prepared</option>
-          <option selected>Delivered</option>
-        </select>
-      </div>
-    </div>
-  </div>
-
-</div>
-
-</body>
-</html>
-l>
Index: c/main/resources/templates/profile.html
===================================================================
--- src/main/resources/templates/profile.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,323 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>User Profile Dashboard</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-          crossorigin="anonymous">
-
-    <script>
-        document.addEventListener('DOMContentLoaded', function () {
-            const editDetailsBtn = document.getElementById('editDetailsBtn');
-            const cancelEditBtn = document.getElementById('cancelEditBtn');
-            const detailsDisplay = document.getElementById('detailsDisplay');
-            const detailsForm = document.getElementById('detailsForm');
-
-            editDetailsBtn.addEventListener('click', function () {
-                detailsDisplay.style.display = 'none';
-                detailsForm.style.display = 'block';
-                editDetailsBtn.style.display = 'none';
-            });
-
-            cancelEditBtn.addEventListener('click', function () {
-                detailsDisplay.style.display = 'block';
-                detailsForm.style.display = 'none';
-                editDetailsBtn.style.display = 'block';
-            });
-        });
-    </script>
-    <style>
-        body {
-            background-color: #f8f9fa;
-        }
-
-        .profile-container {
-            max-width: 800px;
-            margin-top: 50px;
-            padding: 30px;
-            background-color: #ffffff;
-            border-radius: 12px;
-            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
-        }
-
-        .profile-header {
-            text-align: center;
-            margin-bottom: 30px;
-        }
-
-        .profile-nav a {
-            color: #d9902e;
-            text-decoration: none;
-            font-weight: bold;
-            transition: color 0.2s;
-        }
-
-        .profile-nav a:hover {
-            color: #f0ad4e;
-        }
-
-        .card-header {
-            background-color: #f0ad4e;
-            color: white;
-            border-bottom: 2px solid #d9902e;
-            border-top-left-radius: 12px;
-            border-top-right-radius: 12px;
-        }
-
-        .list-group-item strong {
-            color: #333;
-        }
-
-        .add-address-btn {
-            background-color: #d9902e;
-            border-color: #d9902e;
-        }
-
-        .add-address-btn:hover {
-            background-color: #f0ad4e;
-            border-color: #f0ad4e;
-        }
-    </style>
-</head>
-<body class="bg-light">
-
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <a class="navbar-brand d-flex align-items-center" href="/">
-            <img src="/images/logo.JPG" alt="Logo" height="90" class="d-inline-block align-text-top">
-        </a>
-        <form class="d-flex mx-auto w-50" role="search">
-            <input class="form-control me-2" type="search" placeholder="Search for food..." aria-label="Search">
-            <button class="btn btn-warning" type="submit">Search</button>
-        </form>
-        <div class="d-flex align-items-center gap-2">
-            <a href="/cart" class="btn btn-outline-secondary rounded-circle p-2 position-relative">
-                <img src="https://cdn-icons-png.flaticon.com/512/1170/1170678.png" alt="Cart" width="22" height="22">
-                <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-warning text-dark">0</span>
-            </a>
-            <a href="/profile" class="btn btn-outline-secondary rounded-circle p-2">
-                <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png" alt="Profile" width="22" height="22">
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container profile-container">
-    <div class="profile-header">
-        <h1 class="display-4">Welcome, <span th:text="${user.firstName}"></span>!</h1>
-        <hr>
-        <nav class="profile-nav d-flex justify-content-center gap-4">
-            <a href="#details" class="fs-5">View my details</a>
-            <a href="#addresses" class="fs-5">View my addresses</a>
-            <a href="#orders" class="fs-5">View my orders</a>
-        </nav>
-    </div>
-
-    <div id="details" class="card my-4 border-0 shadow">
-        <div class="card-header d-flex justify-content-between align-items-center">
-            <h2 class="h4 mb-0">My Details</h2>
-            <button id="editDetailsBtn" class="btn btn-light btn-sm add-address-btn">Edit</button>
-        </div>
-        <div class="card-body">
-            <div id="detailsDisplay">
-                <ul class="list-group list-group-flush">
-                    <li class="list-group-item"><strong>Full Name:</strong> <span id="fullNameDisplay"
-                                                                                  th:text="${user.firstName} + ' ' + ${user.lastName}"></span>
-                    </li>
-                    <li class="list-group-item"><strong>Email:</strong> <span id="emailDisplay"
-                                                                              th:text="${user.email}"></span>
-                    </li>
-                    <li class="list-group-item"><strong>Phone Number:</strong> <span id="phoneDisplay"
-                                                                                     th:text="${user.getPhone()}"></span>
-                    </li>
-                </ul>
-            </div>
-            <form id="detailsForm" th:action="@{/profile/update}" method="post" style="display:none;">
-                <ul class="list-group list-group-flush">
-                    <li class="list-group-item">
-                        <label for="firstNameInput" class="form-label mb-0"><strong>First Name:</strong></label>
-                        <input type="text" id="firstNameInput" name="firstName" class="form-control"
-                               th:value="${user.firstName}">
-                    </li>
-                    <li class="list-group-item">
-                        <label for="lastNameInput" class="form-label mb-0"><strong>Last Name:</strong></label>
-                        <input type="text" id="lastNameInput" name="lastName" class="form-control"
-                               th:value="${user.lastName}">
-                    </li>
-                    <li class="list-group-item">
-                        <label for="emailInput" class="form-label mb-0"><strong>Email:</strong></label>
-                        <input type="email" id="emailInput" name="email" class="form-control" th:value="${user.email}">
-                    </li>
-                    <li class="list-group-item">
-                        <label for="phoneInput" class="form-label mb-0"><strong>Phone Number:</strong></label>
-                        <input type="text" id="phoneInput" name="phone" class="form-control"
-                               th:value="${user.getPhone()}">
-                    </li>
-                </ul>
-                <div class="d-flex justify-content-end mt-3 gap-2">
-                    <button type="button" id="cancelEditBtn" class="btn btn-secondary">Cancel</button>
-                    <button type="submit" class="btn btn-warning">Save Changes</button>
-                </div>
-            </form>
-        </div>
-    </div>
-
-    <div id="addresses" class="card my-4 border-0 shadow">
-        <div class="card-header d-flex justify-content-between align-items-center">
-            <h2 class="h4 mb-0">My Addresses</h2>
-            <button type="button" class="btn btn-light btn-sm add-address-btn" data-bs-toggle="modal"
-                    data-bs-target="#addAddressModal">
-                <i class="bi bi-plus-circle me-1"></i> Add New Address
-            </button>
-        </div>
-        <div class="card-body">
-            <div th:if="${not #lists.isEmpty(addresses)}">
-                <ul class="list-group list-group-flush">
-                    <li class="list-group-item d-flex justify-content-between align-items-center"
-                        th:each="address : ${addresses}">
-                        <div>
-                            <p class="mb-0"
-                               th:text="${address.street + ', ' + address.city + ', ' + address.getPostalCode()}"></p>
-                        </div>
-                        <form th:action="@{/profile/address/delete}" method="post" style="display: inline;">
-                            <input type="hidden" name="addressId" th:value="${address.id}"/>
-                            <button type="submit" class="btn btn-outline-danger btn-sm"
-                                    onclick="return confirm('Are you sure you want to delete this address?')">
-                                Delete
-                            </button>
-                        </form>
-                    </li>
-                </ul>
-            </div>
-            <div th:unless="${not #lists.isEmpty(addresses)}">
-                <p class="text-muted text-center py-3">You have no saved addresses.</p>
-                <div class="text-center">
-                    <button type="button" class="btn btn-warning" data-bs-toggle="modal"
-                            data-bs-target="#addAddressModal">
-                        Add Your First Address
-                    </button>
-                </div>
-            </div>
-        </div>
-    </div>
-
-    <!--    <div id="orders" class="card my-4 border-0 shadow">-->
-    <!--        <div class="card-header">-->
-    <!--            <h2 class="h4 mb-0">My Orders</h2>-->
-    <!--        </div>-->
-    <!--        <div class="card-body">-->
-    <!--            <div th:if="${not #lists.isEmpty(orders)}">-->
-    <!--                <ul class="list-group list-group-flush">-->
-    <!--                    <li class="list-group-item" th:each="order : ${orders}">-->
-    <!--                        <p class="mb-1"><strong>Order ID:</strong> <span th:text="${order.id}"></span></p>-->
-    <!--                        <p class="mb-0"><strong>Order Date:</strong> <span th:text="${order.getOrderDate()}"></span></p>-->
-    <!--                    </li>-->
-    <!--                </ul>-->
-    <!--            </div>-->
-    <!--            <div th:unless="${not #lists.isEmpty(orders)}">-->
-    <!--                <p class="text-muted text-center py-3">You have no past orders.</p>-->
-    <!--            </div>-->
-    <!--        </div>-->
-    <!--    </div>-->
-    <div id="orders" class="card my-4 border-0 shadow">
-        <div class="card-header">
-            <h2 class="h4 mb-0">My Orders</h2>
-        </div>
-        <div class="card-body">
-            <div th:if="${not #lists.isEmpty(orders)}">
-                <ul class="list-group list-group-flush">
-                    <li class="list-group-item" th:each="order : ${orders}">
-                        <div class="row">
-                            <div class="col-md-6">
-                                <p class="mb-1">
-                                    <strong>Order ID:</strong> <span th:text="${order.getId()}"></span>
-                                </p>
-                                <p class="mb-1">
-                                    <strong>Order Date:</strong>
-                                    <span th:text="${order.getOrderDate()}"></span>
-                                </p>
-                                <p class="mb-1">
-                                    <strong>Order Total:</strong>
-                                    <span th:text="${order.getTotalAmount()}"></span>
-                                </p>
-                                <p class="mb-1">
-                                    <strong>Restaurant:</strong>
-                                    <span th:if="${order.getRestaurant() != null}" th:text="${order.getRestaurantName()}"></span>
-                                    <span th:unless="${order.getRestaurant() != null}" class="text-muted fst-italic">[Restaurant no longer available]</span>
-                                </p>
-                                <p class="mb-0">
-                                    <strong>Status:</strong>
-                                    <span class="badge"
-                                          th:classappend="${order.orderStatus == 'completed' ? 'bg-success' : (order.orderStatus == 'pending' ? 'bg-warning text-dark' : 'bg-primary')}"
-                                          th:text="${order.getOrderStatus()}"></span>
-                                </p>
-                            </div>
-                            <div class="col-md-6">
-                                <p class="mb-1"><strong>Items:</strong></p>
-                                <div th:if="${order.orderItems != null and not #lists.isEmpty(order.orderItems)}">
-                                    <ul class="list-unstyled ms-3">
-                                        <li th:each="orderItem : ${order.orderItems}" class="small mb-1">
-                                        <span th:if="${orderItem.item != null}"
-                                              th:text="${orderItem.item.name} + ' x' + ${orderItem.quantity}"></span>
-                                            <span th:unless="${orderItem.item != null}"
-                                                  class="text-muted fst-italic">[Deleted item] x<span th:text="${orderItem.quantity}"></span></span>
-                                            <span class="text-muted ms-2"
-                                                  th:text="'($' + ${#numbers.formatDecimal(orderItem.totalPrice, 0, 'POINT', 2, 'COMMA')} + ')'"></span>
-                                        </li>
-                                    </ul>
-                                </div>
-                                <div th:unless="${order.orderItems != null and not #lists.isEmpty(order.orderItems)}">
-                                    <p class="small text-muted ms-3">No items found</p>
-                                </div>
-                            </div>
-                        </div>
-                    </li>
-                </ul>
-            </div>
-            <div th:unless="${not #lists.isEmpty(orders)}">
-                <p class="text-muted text-center py-3">You have no past orders.</p>
-            </div>
-        </div>
-    </div>
-
-    <!-- Add Address Modal -->
-    <div class="modal fade" id="addAddressModal" tabindex="-1" aria-labelledby="addAddressModalLabel"
-         aria-hidden="true">
-        <div class="modal-dialog">
-            <div class="modal-content">
-                <div class="modal-header">
-                    <h5 class="modal-title" id="addAddressModalLabel">Add New Address</h5>
-                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-                </div>
-                <form th:action="@{/profile/address/add}" method="post">
-                    <div class="modal-body">
-                        <div class="mb-3">
-                            <label for="street" class="form-label">Street Address</label>
-                            <input type="text" class="form-control" id="street" name="street" required
-                                   placeholder="123 Main Street, Apt 4B">
-                        </div>
-                        <div class="mb-3">
-                            <label for="city" class="form-label">City</label>
-                            <input type="text" class="form-control" id="city" name="city" required
-                                   placeholder="Skopje">
-                        </div>
-                        <div class="mb-3">
-                            <label for="postalCode" class="form-label">Postal Code</label>
-                            <input type="text" class="form-control" id="postalCode" name="postalCode" required
-                                   placeholder="1000">
-                        </div>
-                    </div>
-                    <div class="modal-footer">
-                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
-                        <button type="submit" class="btn btn-warning">Add Address</button>
-                    </div>
-                </form>
-            </div>
-        </div>
-    </div>
-
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-            crossorigin="anonymous"></script>
-</div>
-</body>
-</html>
Index: c/main/resources/templates/profille_settings.html
===================================================================
--- src/main/resources/templates/profille_settings.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,79 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>EasyFood - profile settings</title>
-  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
-  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-  <div class="container-fluid">
-    <!-- Logo -->
-    <a class="navbar-brand d-flex align-items-center" href="index.html">
-      <img src="media/easyfood.png" alt="Logo" height="40">
-    </a>
-
-
-
-    <!-- Profile Icon -->
-    <div class="d-flex align-items-center">
-
-    </div>
-  </div>
-</nav>
-
-<!-- Profile Settings -->
-<div class="container my-5">
-  <div class="row justify-content-center">
-    <div class="col-md-8 col-lg-6">
-      <div class="card shadow-sm border-0 rounded-3">
-        <div class="card-body p-4">
-          <!-- Title -->
-          <h3 class="mb-4 text-center">Profile settings</h3>
-
-          <!-- Profile Picture -->
-          <div class="text-center mb-4">
-            <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png"
-                 class="rounded-circle border shadow-sm"
-                 alt="Profile" width="100" height="100">
-
-          </div>
-
-          <!-- Form -->
-          <form>
-            <div class="mb-3">
-              <label class="form-label fw-semibold">Full Name</label>
-              <input type="text" class="form-control" value="John Doe">
-            </div>
-
-            <div class="mb-3">
-              <label class="form-label fw-semibold">Email</label>
-              <input type="email" class="form-control" value="john@example.com">
-            </div>
-
-            <div class="mb-3">
-              <label class="form-label fw-semibold">Phone Number</label>
-              <input type="tel" class="form-control" value="+1 234 567 890">
-            </div>
-
-            <div class="mb-3">
-              <label class="form-label fw-semibold">Password</label>
-              <input type="password" class="form-control" placeholder="********">
-            </div>
-
-            <div class="d-flex justify-content-center">
-              <button type="submit" class="btn btn-warning fw-semibold">login</button>
-            </div>
-          </form>
-
-        </div>
-      </div>
-    </div>
-  </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/register_customer.html
===================================================================
--- src/main/resources/templates/register_customer.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,97 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>EasyFood - Register</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <!-- Logo -->
-        <a class="navbar-brand d-flex align-items-center" href="index.html">
-            <img src="/images/logo.JPG" alt="Logo" height="40">
-        </a>
-
-
-        <!-- Profile Icon -->
-        <div class="d-flex align-items-center">
-
-        </div>
-    </div>
-</nav>
-<div class=" mt-5 d-flex justify-content-center">
-</div>
-
-<!-- Profile Settings -->
-<div class="container my-5">
-    <div class="row justify-content-center">
-        <div class="col-md-8 col-lg-6">
-            <div class="card shadow-sm border-0 rounded-3">
-                <div class="card-body p-4">
-                    <!-- Title -->
-                    <h3 class="mb-4 text-center">Register as customer</h3>
-
-                    <!-- Profile Picture -->
-                    <div class="text-center mb-4">
-                        <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png"
-                             class="rounded-circle border shadow-sm"
-                             alt="Profile" width="100" height="100">
-
-                    </div>
-
-                    <div xmlns:th="http://www.thymeleaf.org">
-                        <!-- Form -->
-                        <form class="form-signin mt-xl-5" method="post" action="/register">
-                            <!-- Add CSRF token -->
-                            <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
-
-                            <div class="mb-3">
-                                <label class="form-label fw-semibold">Full Name</label>
-                                <input type="text" name="fullName" class="form-control" value="" required>
-                            </div>
-
-                            <div class="mb-3">
-                                <label class="form-label fw-semibold">Email</label>
-                                <input type="email" name="email" class="form-control" value="" required>
-                            </div>
-
-                            <div class="mb-3">
-                                <label class="form-label fw-semibold">Phone Number</label>
-                                <input type="tel" name="phoneNumber" class="form-control" value="" required>
-                            </div>
-
-                            <div class="mb-3">
-                                <label class="form-label fw-semibold">Password</label>
-                                <input type="password" name="password" class="form-control" placeholder="" required>
-                            </div>
-
-                            <div class="mb-3">
-                                <label class="form-label fw-semibold">Repeat Password</label>
-                                <input type="password" name="repeatedPassword" class="form-control" placeholder=""
-                                       required>
-                            </div>
-
-                            <!-- Display error message if any -->
-                            <div th:if="${error}" class="alert alert-danger" role="alert">
-                                <span th:text="${error}"></span>
-                            </div>
-
-                            <div class="d-flex justify-content-center">
-                                <button type="submit" class="btn btn-warning fw-semibold">Register</button>
-                            </div>
-                        </form>
-
-                    </div>
-
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/restaurant_menu.html
===================================================================
--- src/main/resources/templates/restaurant_menu.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,113 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Domino’s Pizza - Menu</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-          crossorigin="anonymous">
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-            crossorigin="anonymous"></script>
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <a class="navbar-brand d-flex align-items-center" href="home.html">
-            <img src="media/easyfood.png" alt="Logo" height="40" class="d-inline-block align-text-top">
-        </a>
-
-        <span class="fw-semibold fs-5 mx-auto">Restaurant Menu</span>
-
-        <div class="d-flex align-items-center gap-2">
-            <!-- Cart -->
-            <a href="cart.html" class="btn btn-outline-secondary rounded-circle p-2 position-relative">
-                <img src="https://cdn-icons-png.flaticon.com/512/1170/1170678.png" alt="Cart" width="22" height="22">
-                <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-warning text-dark">
-          2
-        </span>
-            </a>
-            <!-- Profile -->
-            <a href="profile.html" class="btn btn-outline-secondary rounded-circle p-2">
-                <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png" alt="Profile" width="22" height="22">
-            </a>
-        </div>
-    </div>
-</nav>
-
-<!-- Restaurant Header -->
-<div class="container my-4">
-    <div class="card shadow-sm border-0">
-        <div class="card-body d-flex flex-column flex-md-row align-items-center">
-            <img src="media/dominos.png" alt="Domino’s Logo" class="rounded me-md-4 mb-3 mb-md-0" style="width:100px; height:100px; object-fit:contain;">
-            <div>
-                <h2 class="fw-bold mb-1">Domino’s Pizza</h2>
-                <p class="text-secondary small mb-0">Delicious pizzas, sides, and desserts delivered hot and fresh.</p>
-            </div>
-        </div>
-    </div>
-</div>
-
-<div id="menu" class="container-fluid my-4">
-    <h4 class="mb-3">Menu</h4>
-
-    <div class="card shadow-sm border-0 w-100 mb-3">
-        <div class="row g-0">
-            <!-- Image -->
-            <div class="col-md-3 col-4">
-                <img src="media/burger.png"
-                     class="w-100 object-fit-cover rounded-start"
-                     alt="Burger"
-                     style="height:150px;">
-            </div>
-
-            <!-- Content -->
-            <div class="col-md-9 col-8 d-flex flex-column justify-content-between p-3" style="height:150px;">
-                <div>
-                    <h5 class="card-title mb-1">Cheese Burger</h5>
-                    <p class="card-text text-muted fs-6 fw-semibold mb-2">25.85$</p>
-                </div>
-                <button class="btn btn-warning fw-semibold align-self-start">Add to cart</button>
-            </div>
-        </div>
-    </div>
-
-    <div class="card shadow-sm border-0 w-100 mb-3">
-        <div class="row g-0">
-            <div class="col-md-3 col-4">
-                <img src="media/pizza.png"
-                     class="w-100 object-fit-cover rounded-start"
-                     alt="Pizza"
-                     style="height:150px;">
-            </div>
-            <div class="col-md-9 col-8 d-flex flex-column justify-content-between p-3" style="height:150px;">
-                <div>
-                    <h5 class="card-title mb-1">Pepperoni Pizza</h5>
-                    <p class="card-text text-muted fs-6 fw-semibold mb-2">15.49$</p>
-                </div>
-                <button class="btn btn-warning fw-semibold align-self-start">Add to cart</button>
-            </div>
-        </div>
-    </div>
-
-    <div class="card shadow-sm border-0 w-100 mb-3">
-        <div class="row g-0">
-            <div class="col-md-3 col-4">
-                <img src="media/buger.png"
-                     class="w-100 object-fit-cover rounded-start"
-                     alt="Sushi"
-                     style="height:150px;">
-            </div>
-            <div class="col-md-9 col-8 d-flex flex-column justify-content-between p-3" style="height:150px;">
-                <div>
-                    <h5 class="card-title mb-1">Sushi Set</h5>
-                    <p class="card-text text-muted fs-6 fw-semibold mb-2">18.00$</p>
-                </div>
-                <button class="btn btn-warning fw-semibold align-self-start">Add to cart</button>
-            </div>
-        </div>
-    </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/restaurant_owner_dashboard.html
===================================================================
--- src/main/resources/templates/restaurant_owner_dashboard.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,10 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-</head>
-<body>
-
-</body>
-</html>
Index: c/main/resources/templates/restaurant_owner_login.html
===================================================================
--- src/main/resources/templates/restaurant_owner_login.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,60 +1,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>EasyFood - Login</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
-</head>
-<body class="bg-light">
-
-<!-- Navbar -->
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <!-- Logo -->
-        <a class="navbar-brand d-flex align-items-center" href="index.html">
-            <img src="/images/logo.JPG" alt="Logo" height="80">
-        </a>
-    </div>
-</nav>
-
-<!-- Login Form -->
-<div class="container my-5">
-    <div class="row justify-content-center">
-        <div class="col-md-6 col-lg-4">
-            <div class="card shadow-sm border-0 rounded-3">
-                <div class="card-body p-4">
-                    <h3 class="mb-4 text-center">Login</h3>
-
-                    <form>
-                        <!-- Email -->
-                        <div class="mb-3">
-                            <label class="form-label fw-semibold">Email</label>
-                            <input type="email" class="form-control" placeholder="Enter your email" required>
-                        </div>
-
-                        <!-- Password -->
-                        <div class="mb-3">
-                            <label class="form-label fw-semibold">Password</label>
-                            <input type="password" class="form-control" placeholder="Enter your password" required>
-                        </div>
-
-                        <!-- Submit Button -->
-                        <div class="d-flex justify-content-center">
-                            <button type="submit" class="btn btn-warning fw-semibold">Login</button>
-                        </div>
-
-                        <!-- Optional: link to registration -->
-                        <div class="text-center mt-3">
-                            <small>Don't have an account? <a href="register.html">Register here</a></small>
-                        </div>
-                    </form>
-
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-</body>
-</html>
Index: c/main/resources/templates/shopping_cart.html
===================================================================
--- src/main/resources/templates/shopping_cart.html	(revision 52af00c340f80b264edff12391e360f518423180)
+++ 	(revision )
@@ -1,83 +1,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <meta charset="UTF-8">
-    <title>My Cart - EasyFood</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
-          crossorigin="anonymous">
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"
-            crossorigin="anonymous"></script>
-</head>
-<body class="bg-light">
-
-<nav class="navbar bg-body-tertiary shadow-sm">
-    <div class="container-fluid">
-        <a class="navbar-brand d-flex align-items-center" href="/home">
-            <img src="/images/logo.JPG" alt="Logo" height="90" class="d-inline-block align-text-top">
-        </a>
-
-        <span class="fw-semibold fs-5 mx-auto">My Shopping Cart</span>
-
-        <div class="d-flex align-items-center gap-2">
-            <a href="/profile" class="btn btn-outline-secondary rounded-circle p-2">
-                <img src="https://cdn-icons-png.flaticon.com/512/847/847969.png"
-                     alt="Profile" width="22" height="22">
-            </a>
-        </div>
-    </div>
-</nav>
-
-<div class="container my-4">
-    <h4 class="mb-3">Your Items</h4>
-
-    <div th:if="${cartItems != null and not #lists.isEmpty(cartItems)}">
-        <div th:each="cartItem : ${cartItems}" class="card shadow-sm border-0 w-100 mb-3">
-            <div class="row g-0">
-                <div class="col-md-3 col-4">
-                    <img th:src="@{'/media/' + ${cartItem.item.imageUrl}}"
-                         class="w-100 object-fit-cover rounded-start"
-                         th:alt="${cartItem.item.name}"
-                         style="height:150px;">
-                </div>
-                <div class="col-md-9 col-8 d-flex flex-column justify-content-between p-3" style="height:150px;">
-                    <div>
-                        <h5 class="card-title mb-1" th:text="${cartItem.item.name}">Item Name</h5>
-                        <p class="card-text text-muted fs-6 fw-semibold mb-2"
-                           th:text="${#numbers.formatDecimal(cartItem.item.price, 0, 'POINT', 2, 'COMMA')} + '$'">
-                            Price</p>
-                    </div>
-                    <div class="d-flex align-items-center gap-2">
-                        <form th:action="@{/cart/update}" method="post" class="d-flex align-items-center gap-2">
-                            <input type="hidden" name="itemId" th:value="${cartItem.item.id}"/>
-                            <input type="number" name="quantity" class="form-control w-25"
-                                   th:value="${cartItem.quantity}" min="1">
-                            <button type="submit" class="btn btn-primary btn-sm">Update</button>
-                        </form>
-                        <form th:action="@{/cart/remove}" method="post">
-                            <input type="hidden" name="itemId" th:value="${cartItem.item.id}"/>
-                            <button class="btn btn-danger btn-sm">Remove</button>
-                        </form>
-                    </div>
-                </div>
-            </div>
-        </div>
-
-        <div class="card shadow-sm border-0 p-3 mt-4">
-            <div class="d-flex justify-content-between align-items-center">
-                <h5>Total: <span class="text-warning"
-                                 th:text="${#numbers.formatDecimal(total, 0, 'POINT', 2, 'COMMA')} + '$'">43.97$</span>
-                </h5>
-                <a th:href="@{/order/checkout}" class="btn btn-warning fw-semibold">Proceed to Checkout</a></div>
-        </div>
-    </div>
-
-    <div th:unless="${cartItems != null and not #lists.isEmpty(cartItems)}" class="text-center">
-        <div class="alert alert-info mt-5" role="alert">
-            <p class="mb-0">Your cart is empty.</p>
-            <p>Go back to <a href="/home" class="alert-link">the home page</a> to add some items!</p>
-        </div>
-    </div>
-</div>
-
-</body>
-</html>
