Index: ReserveNGo-backend/pom.xml
===================================================================
--- ReserveNGo-backend/pom.xml	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/pom.xml	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -6,5 +6,5 @@
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.4.1</version>
+        <version>3.4.3</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
@@ -31,8 +31,10 @@
     </properties>
     <dependencies>
+
+        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.30</version>
+            <version>1.18.36</version>
             <scope>provided</scope>
         </dependency>
@@ -105,4 +107,5 @@
                             <groupId>org.projectlombok</groupId>
                             <artifactId>lombok</artifactId>
+                            <version>1.18.36</version>
                         </path>
                     </annotationProcessorPaths>
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebConfig.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebConfig.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebConfig.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -0,0 +1,15 @@
+package mk.ukim.finki.it.reservengo.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("/uploads/**")
+                .addResourceLocations("file:uploads/");
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -38,10 +38,11 @@
                         .frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin))
                 .authorizeHttpRequests((requests) -> requests
-                        .requestMatchers(HttpMethod.OPTIONS,"/**").permitAll()
+                        .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                         .requestMatchers(
                                 "/api/auth/**",
                                 "/h2/**",
                                 "/favicon.ico",
-                                "/api/locals/**")
+                                "/api/locals/**",
+                                "/uploads/**")
                         .permitAll()
                         .requestMatchers("/api/customer/**").hasRole("CUSTOMER")
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationRequestDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationRequestDTO.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationRequestDTO.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -1,3 +1,8 @@
 package mk.ukim.finki.it.reservengo.dto.jwtDTO;
+
+import mk.ukim.finki.it.reservengo.model.domain.Customer;
+import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
+import mk.ukim.finki.it.reservengo.model.domain.LocalWorker;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 
 public record JWTAuthenticationRequestDTO(
@@ -8,3 +13,37 @@
         String phoneNumber
 ) {
+
+
+    public Customer toCustomer(String encodedPassword) {
+        return new Customer(
+                firstName,
+                lastName,
+                email,
+                encodedPassword,
+                phoneNumber,
+                Role.ROLE_CUSTOMER
+        );
+    }
+
+    public LocalWorker toLocalWorker(String encodedPassword) {
+        return new LocalWorker(
+                firstName,
+                lastName,
+                email,
+                encodedPassword,
+                phoneNumber,
+                Role.ROLE_LOCAL_WORKER
+        );
+    }
+
+    public LocalManager toLocalManager(String encodedPassword) {
+        return new LocalManager(
+                firstName,
+                lastName,
+                email,
+                encodedPassword,
+                phoneNumber,
+                Role.ROLE_LOCAL_MANAGER
+        );
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -1,5 +1,8 @@
 package mk.ukim.finki.it.reservengo.dto.jwtDTO;
 
-import mk.ukim.finki.it.reservengo.model.domain.JWTAuthentication;
+import mk.ukim.finki.it.reservengo.model.domain.Customer;
+import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
+import mk.ukim.finki.it.reservengo.model.domain.LocalWorker;
+import mk.ukim.finki.it.reservengo.model.domain.User;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 
@@ -14,13 +17,50 @@
         String token
 ) {
-    public static JWTAuthenticationResponseDTO from(JWTAuthentication jwtAuthentication) {
+
+    public static JWTAuthenticationResponseDTO toCustomer(Customer customer, String jwt) {
         return new JWTAuthenticationResponseDTO(
-                jwtAuthentication.getId(),
-                jwtAuthentication.getFirstName(),
-                jwtAuthentication.getLastName(),
-                jwtAuthentication.getEmail(),
-                jwtAuthentication.getPhoneNumber(),
-                jwtAuthentication.getRole(),
-                jwtAuthentication.getToken()
+                customer.getId(),
+                customer.getFirstName(),
+                customer.getLastName(),
+                customer.getEmail(),
+                customer.getPhoneNumber(),
+                Role.ROLE_CUSTOMER,
+                jwt
+        );
+    }
+
+    public static JWTAuthenticationResponseDTO toLocalWorker(LocalWorker localWorker, String jwt) {
+        return new JWTAuthenticationResponseDTO(
+                localWorker.getId(),
+                localWorker.getFirstName(),
+                localWorker.getLastName(),
+                localWorker.getEmail(),
+                localWorker.getPhoneNumber(),
+                Role.ROLE_LOCAL_WORKER,
+                jwt
+        );
+    }
+
+    public static JWTAuthenticationResponseDTO toLocalManager(LocalManager localManager, String jwt) {
+        return new JWTAuthenticationResponseDTO(
+                localManager.getId(),
+                localManager.getFirstName(),
+                localManager.getLastName(),
+                localManager.getEmail(),
+                localManager.getPhoneNumber(),
+                Role.ROLE_LOCAL_MANAGER,
+                jwt
+        );
+    }
+
+    public static JWTAuthenticationResponseDTO toUser(User user, String jwt) {
+        return new JWTAuthenticationResponseDTO(
+                user.getId(),
+                user.getFirstName(),
+                user.getLastName(),
+                user.getEmail(),
+                user.getPhoneNumber(),
+                user.getUserRole(),
+                jwt
         );
     }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Admin.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Admin.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Admin.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -2,9 +2,13 @@
 
 import jakarta.persistence.Entity;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 
 @EqualsAndHashCode(callSuper = true)
 @Entity
+@NoArgsConstructor
+@Data
 public class Admin extends User {
     public Admin(String email, String password, Role userRole) {
@@ -12,5 +16,3 @@
     }
 
-    public Admin() {
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -5,4 +5,5 @@
 import jakarta.persistence.Embeddable;
 import jakarta.persistence.MapKeyColumn;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -11,5 +12,5 @@
 
 @Data
-//@AllArgsConstructor
+@AllArgsConstructor
 @NoArgsConstructor
 @Embeddable
@@ -18,36 +19,7 @@
     private String email;
     @ElementCollection
-    @MapKeyColumn(name = "soical_app_name")
+    @MapKeyColumn(name = "social_app_name")
     @Column(name = "social_app_link")
     private Map<String, String> socialLinks;
 
-    public Contact(String phone, String email, Map<String, String> socialLinks) {
-        this.phone = phone;
-        this.email = email;
-        this.socialLinks = socialLinks;
-    }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public Map<String, String> getSocialLinks() {
-        return socialLinks;
-    }
-
-    public void setSocialLinks(Map<String, String> socialLinks) {
-        this.socialLinks = socialLinks;
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -2,5 +2,5 @@
 
 import jakarta.persistence.*;
-import lombok.EqualsAndHashCode;
+import lombok.*;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 
@@ -9,11 +9,10 @@
 @EqualsAndHashCode(callSuper = true)
 @Entity
-
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
 public class Customer extends User {
     public Customer(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
         super(firstName, lastName, email, password, phoneNumber, userRole);
-    }
-
-    public Customer() {
     }
 
@@ -24,11 +23,3 @@
     private List<Local> favouriteLocals;
 
-    public List<Reservation> getReservations() {
-        return reservations;
-    }
-
-    public List<Local> getFavouriteLocals() {
-        return favouriteLocals;
-    }
-
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Event.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Event.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Event.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -2,7 +2,5 @@
 
 import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
 import mk.ukim.finki.it.reservengo.model.enumerations.EventStatus;
 
@@ -14,12 +12,4 @@
 @NoArgsConstructor
 public class Event {
-    public Event(String name, String description, LocalDateTime eventStart, LocalDateTime eventEnd, Local local, EventStatus status) {
-        this.name = name;
-        this.description = description;
-        this.eventStart = eventStart;
-        this.eventEnd = eventEnd;
-        this.local = local;
-        this.status = status;
-    }
 
     @Id
@@ -41,58 +31,3 @@
     private EventStatus status;
 
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    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 LocalDateTime getEventStart() {
-        return eventStart;
-    }
-
-    public void setEventStart(LocalDateTime eventStart) {
-        this.eventStart = eventStart;
-    }
-
-    public LocalDateTime getEventEnd() {
-        return eventEnd;
-    }
-
-    public void setEventEnd(LocalDateTime eventEnd) {
-        this.eventEnd = eventEnd;
-    }
-
-    public Local getLocal() {
-        return local;
-    }
-
-    public void setLocal(Local local) {
-        this.local = local;
-    }
-
-    public EventStatus getStatus() {
-        return status;
-    }
-
-    public void setStatus(EventStatus status) {
-        this.status = status;
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/JWTAuthentication.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/JWTAuthentication.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/JWTAuthentication.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -1,8 +1,13 @@
 package mk.ukim.finki.it.reservengo.model.domain;
 
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class JWTAuthentication {
-
     private Long id;
     private String firstName;
@@ -14,42 +19,3 @@
     private String token;
 
-
-    public JWTAuthentication() {
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public String getLastName() {
-        return lastName;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public String getPhoneNumber() {
-        return phoneNumber;
-    }
-
-    public Role getRole() {
-        return role;
-    }
-
-    public String getToken() {
-        return token;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -2,4 +2,7 @@
 
 import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 import mk.ukim.finki.it.reservengo.model.enumerations.Service;
 
@@ -10,4 +13,7 @@
 @Entity
 @Table(name = "local_")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class Local {
     public Local(String name, String description, String address, String workingHours, List<Service> availableServices, Map<Long, Integer> ratings, List<Event> events, List<String> localPhotos, String menuPhoto, String menuLink, Contact contact, List<Reservation> reservations, List<LocalWorker> workers) {
@@ -31,7 +37,4 @@
     }
 
-
-    public Local() {
-    }
 
     @Id
@@ -63,4 +66,5 @@
     private String menuPhoto;
 
+
     private String menuLink;
 
@@ -87,67 +91,3 @@
     }
 
-
-    public Long getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public String getAddress() {
-        return address;
-    }
-
-    public String getWorkingHours() {
-        return workingHours;
-    }
-
-    public List<Service> getAvailableServices() {
-        return availableServices;
-    }
-
-    public Map<Long, Integer> getRatings() {
-        return ratings;
-    }
-
-    public List<Event> getEvents() {
-        return events;
-    }
-
-    public List<String> getLocalPhotos() {
-        return localPhotos;
-    }
-
-    public String getMenuPhoto() {
-        return menuPhoto;
-    }
-
-    public String getMenuLink() {
-        return menuLink;
-    }
-
-    public Contact getContact() {
-        return contact;
-    }
-
-    public List<Reservation> getReservations() {
-        return reservations;
-    }
-
-    public List<LocalWorker> getWorkers() {
-        return workers;
-    }
-
-    public String getLogoUrl() {
-        return logoUrl;
-    }
-
-    public void setLogoUrl(String logoUrl) {
-        this.logoUrl = logoUrl;
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalManager.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalManager.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalManager.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -2,10 +2,13 @@
 
 import jakarta.persistence.Entity;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
-import mk.ukim.finki.it.reservengo.model.enumerations.Position;
+import lombok.NoArgsConstructor;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 
 @EqualsAndHashCode(callSuper = true)
 @Entity
+@NoArgsConstructor
+@Data
 public class LocalManager extends LocalWorker {
     public LocalManager(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
@@ -13,9 +16,3 @@
     }
 
-    public LocalManager(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole, Position position, Local local) {
-        super(firstName, lastName, email, password, phoneNumber, userRole, position, local);
-    }
-
-    public LocalManager() {
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalWorker.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalWorker.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalWorker.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -5,5 +5,8 @@
 import jakarta.persistence.Enumerated;
 import jakarta.persistence.ManyToOne;
+import lombok.AllArgsConstructor;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import mk.ukim.finki.it.reservengo.model.enumerations.Position;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
@@ -11,18 +14,8 @@
 @EqualsAndHashCode(callSuper = true)
 @Entity
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
 public class LocalWorker extends User {
-    public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
-        super(firstName, lastName, email, password, phoneNumber, userRole);
-    }
-
-    public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole, Position position, Local local) {
-        super(firstName, lastName, email, password, phoneNumber, userRole);
-        this.position = position;
-        this.local = local;
-    }
-
-    public LocalWorker() {
-    }
-
     @ManyToOne
     private Local local;
@@ -31,10 +24,7 @@
     private Position position;
 
-    public Local getLocal() {
-        return local;
+    public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
+        super(firstName, lastName, email, password, phoneNumber, userRole);
     }
 
-    public Position getPosition() {
-        return position;
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -2,7 +2,5 @@
 
 import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
 import mk.ukim.finki.it.reservengo.model.enumerations.ReservationStatus;
 
@@ -15,12 +13,4 @@
 @NoArgsConstructor
 public class Reservation {
-    public Reservation(Customer customer, Local local, LocalDateTime timeOfRes, Map<Integer, Integer> reservedTables, ReservationStatus status) {
-        this.customer = customer;
-        this.local = local;
-        this.timeOfRes = timeOfRes;
-        this.reservedTables = reservedTables;
-        this.status = status;
-    }
-
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -43,50 +33,3 @@
     private ReservationStatus status;
 
-    public void setStatus(ReservationStatus status) {
-        this.status = status;
-    }
-
-    public ReservationStatus getStatus() {
-        return status;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Customer getCustomer() {
-        return customer;
-    }
-
-    public void setCustomer(Customer customer) {
-        this.customer = customer;
-    }
-
-    public Local getLocal() {
-        return local;
-    }
-
-    public void setLocal(Local local) {
-        this.local = local;
-    }
-
-    public LocalDateTime getTimeOfRes() {
-        return timeOfRes;
-    }
-
-    public void setTimeOfRes(LocalDateTime timeOfRes) {
-        this.timeOfRes = timeOfRes;
-    }
-
-    public Map<Integer, Integer> getReservedTables() {
-        return reservedTables;
-    }
-
-    public void setReservedTables(Map<Integer, Integer> reservedTables) {
-        this.reservedTables = reservedTables;
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -3,4 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 import org.springframework.security.core.GrantedAuthority;
@@ -14,4 +17,7 @@
 @Inheritance(strategy = InheritanceType.JOINED)
 @Table(name = "app_user")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class User implements UserDetails {
     public User(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
@@ -22,7 +28,4 @@
         this.phoneNumber = phoneNumber;
         this.userRole = userRole;
-    }
-
-    public User() {
     }
 
@@ -80,55 +83,3 @@
         return true;
     }
-
-    public Long getId() {
-        return id;
-    }
-
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public String getLastName() {
-        return lastName;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public String getPhoneNumber() {
-        return phoneNumber;
-    }
-
-    public Role getUserRole() {
-        return userRole;
-    }
-
-    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 setPhoneNumber(String phoneNumber) {
-        this.phoneNumber = phoneNumber;
-    }
-
-    public void setUserRole(Role userRole) {
-        this.userRole = userRole;
-    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -43,71 +43,30 @@
     @Override
     public JWTAuthenticationResponseDTO registerCustomer(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
-
-        Customer customer = new Customer(
-                jwtAuthenticationRequestDTO.firstName(),
-                jwtAuthenticationRequestDTO.lastName(),
-                jwtAuthenticationRequestDTO.email(),
-                passwordEncoder.encode(jwtAuthenticationRequestDTO.password()),
-                jwtAuthenticationRequestDTO.phoneNumber(),
-                Role.ROLE_CUSTOMER
-        );
+        Customer customer = jwtAuthenticationRequestDTO.toCustomer(passwordEncoder.encode(jwtAuthenticationRequestDTO.password()));
 
         customerRepository.save(customer);
         String jwt = jwtService.generateToken(customer);
 
-        return new JWTAuthenticationResponseDTO(
-                customer.getId(),
-                customer.getFirstName(),
-                customer.getLastName(),
-                customer.getEmail(),
-                customer.getPhoneNumber(),
-                Role.ROLE_CUSTOMER,
-                jwt);
+        return JWTAuthenticationResponseDTO.toCustomer(customer, jwt);
     }
 
     @Override
     public JWTAuthenticationResponseDTO registerLocalWorker(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
-        LocalWorker localWorker = new LocalWorker(
-                jwtAuthenticationRequestDTO.firstName(),
-                jwtAuthenticationRequestDTO.lastName(),
-                jwtAuthenticationRequestDTO.email(),
-                passwordEncoder.encode(jwtAuthenticationRequestDTO.password()),
-                jwtAuthenticationRequestDTO.phoneNumber(),
-                Role.ROLE_LOCAL_WORKER
-        );
+        LocalWorker localWorker = jwtAuthenticationRequestDTO.toLocalWorker(passwordEncoder.encode(jwtAuthenticationRequestDTO.password()));
+
         localWorkerRepository.save(localWorker);
         String jwt = jwtService.generateToken(localWorker);
 
-        return new JWTAuthenticationResponseDTO(
-                localWorker.getId(),
-                localWorker.getFirstName(),
-                localWorker.getLastName(),
-                localWorker.getEmail(),
-                localWorker.getPhoneNumber(),
-                Role.ROLE_LOCAL_WORKER,
-                jwt);
+        return JWTAuthenticationResponseDTO.toLocalWorker(localWorker, jwt);
     }
 
     @Override
     public JWTAuthenticationResponseDTO registerLocalManager(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
-        LocalManager localManager = new LocalManager(
-                jwtAuthenticationRequestDTO.firstName(),
-                jwtAuthenticationRequestDTO.lastName(),
-                jwtAuthenticationRequestDTO.email(),
-                passwordEncoder.encode(jwtAuthenticationRequestDTO.password()),
-                jwtAuthenticationRequestDTO.phoneNumber(),
-                Role.ROLE_LOCAL_MANAGER
-        );
+        LocalManager localManager = jwtAuthenticationRequestDTO.toLocalManager(passwordEncoder.encode(jwtAuthenticationRequestDTO.password()));
+
         localManagerRepository.save(localManager);
         String jwt = jwtService.generateToken(localManager);
 
-        return new JWTAuthenticationResponseDTO(
-                localManager.getId(),
-                localManager.getFirstName(),
-                localManager.getLastName(),
-                localManager.getEmail(),
-                localManager.getPhoneNumber(),
-                Role.ROLE_LOCAL_MANAGER,
-                jwt);
+        return JWTAuthenticationResponseDTO.toLocalManager(localManager, jwt);
     }
 
@@ -115,15 +74,9 @@
     public JWTAuthenticationResponseDTO login(JWTLoginDTO jwtLoginDTO) {
         authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(jwtLoginDTO.email(), jwtLoginDTO.password()));
+
         User user = userRepository.findByEmail(jwtLoginDTO.email()).orElseThrow(() -> new EmailNotFoundException(jwtLoginDTO.email()));
         String jwt = jwtService.generateToken(user);
 
-        return new JWTAuthenticationResponseDTO(
-                user.getId(),
-                user.getFirstName(),
-                user.getLastName(),
-                user.getEmail(),
-                user.getPhoneNumber(),
-                user.getUserRole(),
-                jwt);
+        return JWTAuthenticationResponseDTO.toUser(user, jwt);
     }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -8,4 +8,3 @@
 
     User editUserInfo(Long userId, CreateUserDTO createUserDTO);
-
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalManagerController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalManagerController.java	(revision 7d8eeabb470b8aa00b55514a947fb74ac6b8a96c)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalManagerController.java	(revision 349551d7d42f23a4339ba379525c62a41d7546ad)
@@ -22,4 +22,10 @@
         return ResponseEntity.ok().build();
     }
+    //TODO implement delete logo
+    @PostMapping("/{localId}/upload-photos")
+    //TODO implement this next
+    public ResponseEntity<?> uploadPhotos(@PathVariable Long localId) {
+        return ResponseEntity.ok().build();
+    }
 
 }
