Index: pom.xml
===================================================================
--- pom.xml	(revision de70cd4fbb548837239a11395f292094a60fa5b9)
+++ pom.xml	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -6,5 +6,5 @@
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.0.2</version>
+        <version>2.7.4</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
@@ -15,5 +15,6 @@
     <description>Eventrra</description>
     <properties>
-        <java.version>17</java.version>
+        <java.version>17.0.5</java.version>
+<!--        <spring-security.version>5.6.1</spring-security.version>-->
     </properties>
     <dependencies>
@@ -23,6 +24,6 @@
         </dependency>
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-security</artifactId>
+            <groupId>org.thymeleaf.extras</groupId>
+            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
         </dependency>
         <dependency>
@@ -35,8 +36,9 @@
         </dependency>
         <dependency>
-            <groupId>org.thymeleaf.extras</groupId>
-            <artifactId>thymeleaf-extras-springsecurity6</artifactId>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>4.0.1</version>
+            <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>org.postgresql</groupId>
@@ -47,4 +49,6 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
+            <version>1.18.24</version>
+            <scope>provided</scope>
             <optional>true</optional>
         </dependency>
@@ -54,10 +58,10 @@
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-test</artifactId>
-            <scope>test</scope>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.boot</groupId>-->
+<!--            <artifactId>spring-boot-starter-security</artifactId>-->
+<!--        </dependency>-->
     </dependencies>
+
 
     <build>
@@ -75,4 +79,13 @@
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>com.google.cloud.tools</groupId>
+                <artifactId>appengine-maven-plugin</artifactId>
+                <version>2.2.0</version>
+                <configuration>
+                    <version>1</version>
+                    <projectId>GCLOUD_CONFIG</projectId>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
Index: src/main/java/com/example/EventrraApplication.java
===================================================================
--- src/main/java/com/example/EventrraApplication.java	(revision de70cd4fbb548837239a11395f292094a60fa5b9)
+++ src/main/java/com/example/EventrraApplication.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -3,4 +3,5 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+
 
 @SpringBootApplication
@@ -10,4 +11,3 @@
         SpringApplication.run(EventrraApplication.class, args);
     }
-
 }
Index: src/main/java/com/example/exceptions/InvalidArgumentsException.java
===================================================================
--- src/main/java/com/example/exceptions/InvalidArgumentsException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/exceptions/InvalidArgumentsException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,8 @@
+package com.example.exceptions;
+
+public class InvalidArgumentsException extends RuntimeException {
+
+    public InvalidArgumentsException() {
+        super("Invalid arguments exception");
+    }
+}
Index: src/main/java/com/example/exceptions/InvalidUserCredentialsException.java
===================================================================
--- src/main/java/com/example/exceptions/InvalidUserCredentialsException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/exceptions/InvalidUserCredentialsException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,12 @@
+package com.example.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(code = HttpStatus.NOT_FOUND)
+public class InvalidUserCredentialsException extends RuntimeException {
+
+    public InvalidUserCredentialsException() {
+        super("Invalid user credentials exception");
+    }
+}
Index: src/main/java/com/example/exceptions/InvalidUsernameOrPasswordException.java
===================================================================
--- src/main/java/com/example/exceptions/InvalidUsernameOrPasswordException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/exceptions/InvalidUsernameOrPasswordException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,12 @@
+package com.example.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(code = HttpStatus.NOT_FOUND)
+public class InvalidUsernameOrPasswordException extends RuntimeException {
+
+    public InvalidUsernameOrPasswordException(){
+        super("Invalid username or password");
+    }
+}
Index: src/main/java/com/example/exceptions/NoSuchAddressException.java
===================================================================
--- src/main/java/com/example/exceptions/NoSuchAddressException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/exceptions/NoSuchAddressException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,13 @@
+package com.example.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(code = HttpStatus.NOT_FOUND)
+public class NoSuchAddressException extends RuntimeException{
+
+    public NoSuchAddressException(String address) {
+        super(String.format("Address %s doesn't exists", address));
+    }
+
+}
Index: src/main/java/com/example/exceptions/NoSuchIDException.java
===================================================================
--- src/main/java/com/example/exceptions/NoSuchIDException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/exceptions/NoSuchIDException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,11 @@
+package com.example.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(code = HttpStatus.NOT_FOUND)
+public class NoSuchIDException extends RuntimeException{
+    public NoSuchIDException(Integer id) {
+        super(String.format("There is no user with id %d", id));
+    }
+}
Index: src/main/java/com/example/exceptions/NoSuchUsernameException.java
===================================================================
--- src/main/java/com/example/exceptions/NoSuchUsernameException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/exceptions/NoSuchUsernameException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,13 @@
+package com.example.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(code = HttpStatus.NOT_FOUND)
+public class NoSuchUsernameException extends RuntimeException{
+
+    public NoSuchUsernameException() {
+        super("No such username.");
+    }
+
+}
Index: src/main/java/com/example/exceptions/PasswordsDoNotMatchException.java
===================================================================
--- src/main/java/com/example/exceptions/PasswordsDoNotMatchException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/exceptions/PasswordsDoNotMatchException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,13 @@
+package com.example.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(code = HttpStatus.NOT_FOUND)
+public class PasswordsDoNotMatchException extends RuntimeException{
+
+    public PasswordsDoNotMatchException() {
+        super("Passwords do not match exception.");
+    }
+
+}
Index: src/main/java/com/example/exceptions/UsernameAlreadyExistsException.java
===================================================================
--- src/main/java/com/example/exceptions/UsernameAlreadyExistsException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/exceptions/UsernameAlreadyExistsException.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,11 @@
+package com.example.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(code = HttpStatus.NOT_FOUND)
+public class UsernameAlreadyExistsException extends RuntimeException{
+    public UsernameAlreadyExistsException(String username) {
+        super(String.format("User with username: %s already exists", username));
+    }
+}
Index: src/main/java/com/example/model/Admin.java
===================================================================
--- src/main/java/com/example/model/Admin.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Admin.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,61 @@
+package com.example.model;
+
+import com.example.model.Enumerations.Role;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.Hibernate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import java.util.List;
+import java.util.Objects;
+
+@Getter
+@Setter
+@Entity
+@Table(name = "admini")
+public class Admin extends User{
+
+    @Column(name = "br_organizirani_nastani")
+    Integer number_events;
+
+    @OneToMany(mappedBy = "admin")
+    List<Event> events;
+
+    public Admin(String name, String username, String number, String password, Role role) {
+        super(name, username, number, password, role);
+        this.number_events = 0;
+    }
+
+    public Admin() {
+    }
+
+//    @Override
+//    public Collection<? extends GrantedAuthority> getAuthorities() {
+//        return Collections.singletonList(Role.ROLE_ADMIN);
+//    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
+        Admin that = (Admin) o;
+        return id != null && Objects.equals(id, that.id);
+    }
+
+    @Override
+    public String toString() {
+        return "Admin{" +
+                "number_events=" + number_events +
+                ", events=" + events.toString() +
+                ", id=" + id +
+                ", date=" + date +
+                ", name='" + name + '\'' +
+                ", username='" + username + '\'' +
+                ", password='" + password + '\'' +
+                ", number='" + number + '\'' +
+                '}';
+    }
+}
Index: src/main/java/com/example/model/Band.java
===================================================================
--- src/main/java/com/example/model/Band.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Band.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,44 @@
+package com.example.model;
+
+import com.example.model.Enumerations.Role;
+import lombok.Data;
+import org.hibernate.Hibernate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ManyToMany;
+import javax.persistence.Table;
+import java.util.List;
+import java.util.Objects;
+
+@Data
+@Entity
+@Table(name = "bendovi")
+public class Band extends User {
+
+    @Column(name = "cena")
+    Integer price;
+
+    public Band(String name, String username, String number, String password, Integer price, Role role) {
+        super(name, username, number, password, role);
+        this.price = price;
+    }
+
+    @ManyToMany(mappedBy = "bandList")
+    List<Event> eventList;
+    public Band() {
+    }
+
+//    @Override
+//    public Collection<? extends GrantedAuthority> getAuthorities() {
+//        return Collections.singletonList(Role.ROLE_BAND);
+//    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
+        Band that = (Band) o;
+        return id != null && Objects.equals(id, that.id);
+    }
+}
Index: src/main/java/com/example/model/Catering.java
===================================================================
--- src/main/java/com/example/model/Catering.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Catering.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,60 @@
+package com.example.model;
+
+import com.example.model.Enumerations.Role;
+import lombok.Data;
+import org.hibernate.Hibernate;
+
+import javax.persistence.*;
+import java.util.List;
+import java.util.Objects;
+
+@Data
+@Entity
+@Table(name = "keterinzi")
+public class Catering extends User {
+
+    @Column(name = "cena")
+    Integer price;
+
+    @Column(name = "adresa")
+    String address;
+
+    @OneToMany(mappedBy = "catering_id")
+    List<Client> clients;
+
+    @OneToMany(mappedBy = "catering")
+    List<Waiter> waiters;
+
+    @ManyToMany
+    @JoinTable(name = "ketering_nudi_produkt",
+            joinColumns = @JoinColumn(name = "korisnik_id"),
+            inverseJoinColumns = @JoinColumn(name = "produkt_id"))
+//    @ToString.Exclude
+    List<Product> productList;
+
+    @ManyToMany(mappedBy = "cateringList")
+    List<Event> eventList;
+
+    public Catering(String name, String username, String number, String password,
+                    Integer price, String address, Role role) {
+        super(name, username, number, password, role);
+        this.price = price;
+        this.address = address;
+    }
+
+    public Catering() {
+    }
+
+//    @Override
+//    public Collection<? extends GrantedAuthority> getAuthorities() {
+//        return Collections.singletonList(Role.ROLE_CATERING);
+//    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
+        Catering that = (Catering) o;
+        return id != null && Objects.equals(id, that.id);
+    }
+}
Index: src/main/java/com/example/model/Client.java
===================================================================
--- src/main/java/com/example/model/Client.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Client.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,57 @@
+package com.example.model;
+
+import com.example.model.Enumerations.Role;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Getter
+@Setter
+@Entity
+@Table(name = "klienti")
+public class Client extends User {
+    @Column(name = "br_organizirani_nastani")
+    Integer number_events;
+
+    @OneToMany(mappedBy = "client")
+    List<Event> event;
+
+    @ManyToOne
+    @JoinColumn(name = "korisnik_id_keterinzi")
+    Catering catering_id;
+
+//    @OneToMany(mappedBy = "client")
+//    List<Event> events;
+
+
+    public Client(String name, String username, String number, String password, Role role) {
+        super(name, username, number, password, role);
+        this.number_events = 0;
+    }
+
+    public Client() {
+
+    }
+
+    //    @Override
+//    public Collection<? extends GrantedAuthority> getAuthorities() {
+//        return Collections.singletonList(Role.ROLE_CLIENT);
+//    }
+
+    @Override
+    public String toString() {
+        return "Client{" +
+                "number_events=" + number_events +
+                ", event=" + event.toString() +
+                ", catering_id=" + catering_id +
+                ", id=" + id +
+                ", date=" + date +
+                ", name='" + name + '\'' +
+                ", username='" + username + '\'' +
+                ", password='" + password + '\'' +
+                ", number='" + number + '\'' +
+                '}';
+    }
+}
Index: src/main/java/com/example/model/Drink.java
===================================================================
--- src/main/java/com/example/model/Drink.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Drink.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,26 @@
+package com.example.model;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+@Data
+@Entity
+@Table(name = "pijaloci")
+public class Drink extends Product{
+
+    @Column(name = "dali_alkoholen")
+    Boolean if_alcoholic;
+
+    @Column(name = "procenti_alkohol")
+    Integer percentage_alcohol;
+
+    public Drink(Integer product_id, String name) {
+        super(product_id, name);
+    }
+
+    public Drink() {
+    }
+}
Index: src/main/java/com/example/model/Enumerations/Role.java
===================================================================
--- src/main/java/com/example/model/Enumerations/Role.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Enumerations/Role.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,19 @@
+package com.example.model.Enumerations;
+
+public enum Role{
+
+    ROLE_USER("user"),
+    ROLE_BAND("band"),
+    ROLE_CLIENT("client"),
+    ROLE_ADMIN("admin"),
+    ROLE_PHOTOGRAPHER("photographer"),
+    ROLE_WAITER("waiter"),
+    ROLE_CATERING("catering");
+
+    private String name;
+
+    Role(String s) {
+        this.name=s;
+    }
+}
+
Index: src/main/java/com/example/model/Enumerations/Status.java
===================================================================
--- src/main/java/com/example/model/Enumerations/Status.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Enumerations/Status.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,20 @@
+package com.example.model.Enumerations;
+
+public enum Status {
+    CREATED("Created"),
+    APPROVED("Approved"),
+    REJECTED("Rejected"),
+    PROCESSED("Processed");
+    private String name;
+    Status(String status) {
+        this.name=status;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public String toString() {
+        return name;
+    }
+}
Index: src/main/java/com/example/model/Event.java
===================================================================
--- src/main/java/com/example/model/Event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,117 @@
+package com.example.model;
+
+import com.example.model.Enumerations.Status;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.*;
+import java.time.LocalDate;
+import java.util.List;
+
+@Getter
+@Setter
+@Entity
+@Table(name = "nastani")
+public class Event {
+
+    @Id
+    @Column(name = "nastan_id")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    Integer id;
+
+    @Enumerated(EnumType.STRING)
+    Status status;
+
+    @Column(name = "vreme")
+    String time;
+    @Column(name = "tip")
+    String type;
+
+    @Column(name = "datum")
+    LocalDate date;
+
+    @Column(name = "opis")
+    String description;
+
+    @ManyToOne
+    @JoinColumn(name = "adresa")
+    Location location;
+
+    @ManyToOne
+    @JoinColumn(name = "korisnik_id_admini")
+    Admin admin;
+
+    @ManyToOne
+    @JoinColumn(name = "korisnik_id_klienti")
+    Client client;
+
+    @ManyToMany
+    @JoinTable(name = "bend_sviri_nastan",
+            joinColumns = @JoinColumn(name = "nastan_id"),
+            inverseJoinColumns = @JoinColumn(name = "korisnik_id"))
+//    @ToString.Exclude
+    List<Band> bandList;
+
+    @ManyToMany
+    @JoinTable(name = "fotograf_slika_nastan",
+            joinColumns = @JoinColumn(name = "nastan_id"),
+            inverseJoinColumns = @JoinColumn(name = "korisnik_id"))
+//    @ToString.Exclude
+    List<Photographer> photographerList;
+
+    @ManyToMany
+    @JoinTable(name = "kelner_raboti_na_nastan",
+            joinColumns = @JoinColumn(name = "nastan_id"),
+            inverseJoinColumns = @JoinColumn(name = "korisnik_id"))
+//    @ToString.Exclude
+    List<Waiter> waiterList;
+
+    @ManyToMany
+    @JoinTable(name = "ketering_rezervira_nastan",
+            joinColumns = @JoinColumn(name = "nastan_id"),
+            inverseJoinColumns = @JoinColumn(name = "korisnik_id"))
+//    @ToString.Exclude
+    List<Catering> cateringList;
+
+    public Event(String time, LocalDate date, Location location, String type,
+                 String description, Client client, List<Band> bandList,
+                 List<Catering> cateringList,
+                 List<Photographer> photographerList, Admin admin
+    ) {
+        this.time = time;
+        this.date = date;
+        this.location = location;
+        this.type = type;
+        this.description = description;
+        this.status = Status.CREATED;
+        this.client = client;
+        this.bandList = bandList;
+        this.cateringList=cateringList;
+        this.photographerList=photographerList;
+        this.admin = admin;
+    }
+
+
+
+    public Event() {
+    }
+
+    @Override
+    public String toString() {
+        return "Event{" +
+                "id=" + id +
+                ", status=" + status +
+                ", time='" + time + '\'' +
+                ", type='" + type + '\'' +
+                ", date=" + date +
+                ", description='" + description + '\'' +
+                ", location=" + location.toString() +
+                ", admin=" + admin.toString() +
+                ", client=" + client.toString() +
+                ", bandList=" + bandList +
+                ", photographerList=" + photographerList +
+                ", waiterList=" + waiterList +
+                ", cateringList=" + cateringList +
+                '}';
+    }
+}
Index: src/main/java/com/example/model/Food.java
===================================================================
--- src/main/java/com/example/model/Food.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Food.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,27 @@
+package com.example.model;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+@Data
+@Entity
+@Table(name = "hrana")
+public class Food extends Product{
+    @Column(name = "vegetarijansko")
+    Boolean vegetarian;
+
+    @Column(name = "kalorii")
+    Integer calories;
+
+    Boolean vegan;
+
+    public Food(Integer product_id, String name) {
+        super(product_id, name);
+    }
+
+    public Food() {
+    }
+}
Index: src/main/java/com/example/model/Location.java
===================================================================
--- src/main/java/com/example/model/Location.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Location.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,37 @@
+package com.example.model;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Getter
+@Setter
+@Entity
+@Table(name = "lokacii")
+public class Location {
+
+    @Id
+    @Column(name = "adresa")
+    String address;
+
+    @Column(name = "cena")
+    Integer price;
+
+    @OneToMany(mappedBy = "location")
+    List<Event> events;
+
+    public Location(String address, Integer price) {
+        this.address = address;
+        this.price = price;
+    }
+
+    public Location() {
+    }
+
+    @Override
+    public String toString() {
+        return address;
+    }
+}
Index: src/main/java/com/example/model/Photographer.java
===================================================================
--- src/main/java/com/example/model/Photographer.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Photographer.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,49 @@
+package com.example.model;
+
+import com.example.model.Enumerations.Role;
+import lombok.Data;
+import org.hibernate.Hibernate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ManyToMany;
+import javax.persistence.Table;
+import java.util.List;
+import java.util.Objects;
+
+@Data
+@Entity
+@Table (name = "fotografi")
+public class Photographer extends User{
+
+    @Column(name = "cena")
+    Integer price;
+
+    String portfolio;
+
+    @ManyToMany(mappedBy = "photographerList")
+    List<Event> eventList;
+
+    public Photographer(String name, String username, String number, String password,
+                        Integer price, String portfolio, Role role) {
+        super(name, username, number, password, role);
+        this.price = price;
+        this.portfolio = portfolio;
+    }
+
+    public Photographer() {
+    }
+
+//    @Override
+//    public Collection<? extends GrantedAuthority> getAuthorities() {
+//        return Collections.singletonList(Role.ROLE_PHOTOGRAPHER);
+//    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
+        Photographer that = (Photographer) o;
+        return id != null && Objects.equals(id, that.id);
+    }
+}
Index: src/main/java/com/example/model/Product.java
===================================================================
--- src/main/java/com/example/model/Product.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Product.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,30 @@
+package com.example.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Data
+@Entity
+@Table(name = "produkti")
+@Inheritance(strategy = InheritanceType.JOINED)
+public class Product {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "produkt_id")
+    Integer product_id;
+
+    @Column(name = "ime")
+    String name;
+
+    @ManyToMany(mappedBy = "productList")
+    List<Catering> cateringList;
+    public Product(Integer product_id, String name) {
+        this.product_id = product_id;
+        this.name = name;
+    }
+
+    public Product() {
+    }
+}
Index: src/main/java/com/example/model/User.java
===================================================================
--- src/main/java/com/example/model/User.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/User.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,61 @@
+package com.example.model;
+
+import com.example.model.Enumerations.Role;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.Hibernate;
+
+import javax.persistence.*;
+import java.time.LocalDate;
+import java.util.Objects;
+
+@Getter
+@Setter
+@Entity
+@Table(name = "korisnici")
+@Inheritance(strategy = InheritanceType.JOINED)
+public class User {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "korisnik_id")
+    Integer id;
+    @Column(name = "datum_kreiran")
+    LocalDate date;
+    @Column(name = "ime")
+    String name;
+
+    String username;
+    @Column(name = "lozinka")
+    String password;
+    @Column(name = "tel_broj")
+    String number;
+
+    @Enumerated(value = EnumType.STRING)
+    Role role;
+
+    public User(String name, String username, String number, String password, Role role) {
+        this.date = LocalDate.now();
+        this.name = name;
+        this.username = username;
+        this.password = password;
+        this.number = number;
+        this.role = role;
+    }
+
+    public User(){
+
+    }
+
+//    //    @Override
+//    public Collection<? extends GrantedAuthority> getAuthorities() {
+//        return Collections.singletonList(Role.ROLE_USER);
+//    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
+        User that = (User) o;
+        return id != null && Objects.equals(id, that.id);
+    }
+}
Index: src/main/java/com/example/model/Waiter.java
===================================================================
--- src/main/java/com/example/model/Waiter.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/Waiter.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,52 @@
+package com.example.model;
+
+import com.example.model.Enumerations.Role;
+import lombok.Data;
+import org.hibernate.Hibernate;
+
+import javax.persistence.*;
+import java.util.List;
+import java.util.Objects;
+
+@Data
+@Entity
+@Table(name = "kelneri")
+public class Waiter extends User{
+
+    @Column(name = "slobodni_denovi")
+    Integer free_day;
+
+    @Column(name = "god_iskustvo")
+    Integer experience;
+
+    @ManyToOne
+    @JoinColumn(name = "korisnik_id_keterinzi")
+    Catering catering;
+
+    @ManyToMany(mappedBy = "waiterList")
+    List<Event> eventList;
+
+    public Waiter(String name, String username, String number, String password, Integer free_day,
+                  Integer experience, Catering catering, Role role) {
+        super(name, username, number, password, role);
+        this.free_day = free_day;
+        this.experience = experience;
+        this.catering = catering;
+    }
+
+    public Waiter() {
+    }
+
+//    @Override
+//    public Collection<? extends GrantedAuthority> getAuthorities() {
+//        return Collections.singletonList(Role.ROLE_WAITER);
+//    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
+        Waiter that = (Waiter) o;
+        return id != null && Objects.equals(id, that.id);
+    }
+}
Index: src/main/java/com/example/model/manytomany/band_plays_on_event.java
===================================================================
--- src/main/java/com/example/model/manytomany/band_plays_on_event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/manytomany/band_plays_on_event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,34 @@
+package com.example.model.manytomany;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Data
+@Entity
+@Table(name = "bend_sviri_nastan")
+public class band_plays_on_event implements Serializable {
+
+    @Id
+    @Column(name = "korisnik_id")
+    Integer user_id;
+
+    @Id
+    @Column(name = "nastan_id")
+    Integer event_id;
+
+    String status;
+
+    public band_plays_on_event(Integer user_id, Integer event_id, String status) {
+        this.user_id = user_id;
+        this.event_id = event_id;
+        this.status = status;
+    }
+
+    public band_plays_on_event() {
+    }
+}
Index: src/main/java/com/example/model/manytomany/catering_offers_products.java
===================================================================
--- src/main/java/com/example/model/manytomany/catering_offers_products.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/manytomany/catering_offers_products.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,30 @@
+package com.example.model.manytomany;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Data
+@Entity
+@Table(name = "ketering_nudi_produkt")
+public class catering_offers_products implements Serializable {
+    @Id
+    @Column(name = "korisnik_id")
+    Integer user_id;
+
+    @Id
+    @Column(name = "produkt_id")
+    Integer product_id;
+
+    public catering_offers_products(Integer user_id, Integer product_id) {
+        this.user_id = user_id;
+        this.product_id = product_id;
+    }
+
+    public catering_offers_products() {
+    }
+}
Index: src/main/java/com/example/model/manytomany/catering_reserved_for_event.java
===================================================================
--- src/main/java/com/example/model/manytomany/catering_reserved_for_event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/manytomany/catering_reserved_for_event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,37 @@
+package com.example.model.manytomany;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Data
+@Entity
+@Table(name = "ketering_rezervira_nastan")
+public class catering_reserved_for_event implements Serializable {
+    @Id
+    @Column(name = "korisnik_id")
+    Integer user_id;
+
+    @Id
+    @Column(name = "nastan_id")
+    Integer event_id;
+
+    String status;
+
+    @Column(name = "kolicina")
+    Integer quantity;
+
+    public catering_reserved_for_event(Integer user_id, Integer event_id, String status, Integer quantity) {
+        this.user_id = user_id;
+        this.event_id = event_id;
+        this.status = status;
+        this.quantity = quantity;
+    }
+
+    public catering_reserved_for_event() {
+    }
+}
Index: src/main/java/com/example/model/manytomany/photographer_works_on_event.java
===================================================================
--- src/main/java/com/example/model/manytomany/photographer_works_on_event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/manytomany/photographer_works_on_event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,34 @@
+package com.example.model.manytomany;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Data
+@Entity
+@Table(name = "fotograf_slika_nastan")
+public class photographer_works_on_event implements Serializable {
+
+    @Id
+    @Column(name = "korisnik_id")
+    Integer user_id;
+
+    @Id
+    @Column(name = "nastan_id")
+    Integer event_id;
+
+    String status;
+
+    public photographer_works_on_event(Integer user_id, Integer event_id, String status) {
+        this.user_id = user_id;
+        this.event_id = event_id;
+        this.status = status;
+    }
+
+    public photographer_works_on_event() {
+    }
+}
Index: src/main/java/com/example/model/manytomany/waiter_works_on_event.java
===================================================================
--- src/main/java/com/example/model/manytomany/waiter_works_on_event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/model/manytomany/waiter_works_on_event.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,33 @@
+package com.example.model.manytomany;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+@Data
+@Entity
+@Table(name = "kelner_raboti_na_nastan")
+public class waiter_works_on_event implements Serializable {
+    @Id
+    @Column(name = "korisnik_id")
+    Integer user_id;
+
+    @Id
+    @Column(name = "nastan_id")
+    Integer event_id;
+
+    String status;
+
+    public waiter_works_on_event(Integer user_id, Integer event_id, String status) {
+        this.user_id = user_id;
+        this.event_id = event_id;
+        this.status = status;
+    }
+
+    public waiter_works_on_event() {
+    }
+}
Index: src/main/java/com/example/repository/BandRepository.java
===================================================================
--- src/main/java/com/example/repository/BandRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/repository/BandRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,13 @@
+package com.example.repository;
+
+import com.example.model.Band;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface BandRepository extends JpaRepository<Band, Integer> {
+    List<Band> findAllByName (String name);
+
+}
Index: src/main/java/com/example/repository/CateringRepository.java
===================================================================
--- src/main/java/com/example/repository/CateringRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/repository/CateringRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,12 @@
+package com.example.repository;
+
+import com.example.model.Catering;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface CateringRepository extends JpaRepository<Catering, Integer> {
+    List<Catering> findAllByName (String name);
+}
Index: src/main/java/com/example/repository/ClientRepository.java
===================================================================
--- src/main/java/com/example/repository/ClientRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/repository/ClientRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,15 @@
+package com.example.repository;
+
+import com.example.model.Client;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface ClientRepository extends JpaRepository<Client, Integer> {
+    Optional<Client> findById(Integer id);
+
+    List<Client> findAllByName (String name);
+
+    Client findByUsername (String username);
+}
Index: src/main/java/com/example/repository/EventRepository.java
===================================================================
--- src/main/java/com/example/repository/EventRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/repository/EventRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,15 @@
+package com.example.repository;
+
+import com.example.model.Client;
+import com.example.model.Event;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Optional;
+
+@Repository
+public interface EventRepository extends JpaRepository<Event,Integer> {
+    List<Event> findByClient(Optional<Client> client);
+
+}
Index: src/main/java/com/example/repository/LocationRepository.java
===================================================================
--- src/main/java/com/example/repository/LocationRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/repository/LocationRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,14 @@
+package com.example.repository;
+
+import com.example.model.Location;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface LocationRepository extends JpaRepository<Location, String> {
+    Location findByAddress(String address);
+
+    List<Location> findAllByAddress (String address);
+}
Index: src/main/java/com/example/repository/PhotographerRepository.java
===================================================================
--- src/main/java/com/example/repository/PhotographerRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/repository/PhotographerRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,14 @@
+package com.example.repository;
+
+import com.example.model.Photographer;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface PhotographerRepository extends JpaRepository<Photographer, Integer> {
+    List<Photographer> findAll();
+    List<Photographer> findAllByName (String name);
+
+}
Index: src/main/java/com/example/repository/UserRepository.java
===================================================================
--- src/main/java/com/example/repository/UserRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/repository/UserRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,13 @@
+package com.example.repository;
+
+import com.example.model.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface UserRepository extends JpaRepository<User,Integer> {
+    Optional<User> findByUsernameAndPassword(String username, String password);
+    Optional<User> findByUsername(String username);
+}
Index: src/main/java/com/example/repository/WaiterRepository.java
===================================================================
--- src/main/java/com/example/repository/WaiterRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/repository/WaiterRepository.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,7 @@
+package com.example.repository;
+
+import com.example.model.Waiter;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface WaiterRepository extends JpaRepository<Waiter, Integer> {
+}
Index: src/main/java/com/example/service/AuthService.java
===================================================================
--- src/main/java/com/example/service/AuthService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/AuthService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,27 @@
+package com.example.service;
+
+import com.example.model.Catering;
+import com.example.model.User;
+
+public interface AuthService{
+    User login(String username, String password);
+
+    void registerUser(String name, String username, String number, String password,
+                      String rpassword,  String role);
+
+    void registerBand(String name, String username, String number, String password,
+                      String rpassword, String role, Integer price);
+
+    void registerCatering(String name, String username, String number, String password,
+                          String rpassword,  String role, Integer price, String address);
+
+    void registerClient(String name, String username, String number, String password,
+                        String rpassword,  String role);
+
+    void registerPhotographer(String name, String username, String number, String password,
+                              String rpassword, String role, Integer price, String portfolio);
+
+    void registerWaiter (String name, String username, String number, String password,
+                         String rpassword, String role, Integer free_day,
+                         Integer experience, Catering catering);
+}
Index: src/main/java/com/example/service/BandService.java
===================================================================
--- src/main/java/com/example/service/BandService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/BandService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,11 @@
+package com.example.service;
+
+import com.example.model.Band;
+
+import java.util.List;
+
+public interface BandService {
+
+    List<Band> findAll();
+    Band findByName(String name);
+}
Index: src/main/java/com/example/service/CateringService.java
===================================================================
--- src/main/java/com/example/service/CateringService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/CateringService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,10 @@
+package com.example.service;
+
+import com.example.model.Catering;
+
+import java.util.List;
+
+public interface CateringService {
+    List<Catering> findAll();
+    Catering findByName(String name);
+}
Index: src/main/java/com/example/service/EventService.java
===================================================================
--- src/main/java/com/example/service/EventService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/EventService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,23 @@
+package com.example.service;
+
+import com.example.model.Enumerations.Status;
+import com.example.model.Event;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface EventService {
+
+    Event findById(Integer id);
+
+    List<Event> findByClient(Integer client_id);
+
+    Optional<Event> updateStatus(Integer event_id, Status status);
+
+    List<Event> findAll();
+
+    void update(Event event);
+
+
+
+}
Index: src/main/java/com/example/service/LocationService.java
===================================================================
--- src/main/java/com/example/service/LocationService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/LocationService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,10 @@
+package com.example.service;
+
+import com.example.model.Location;
+
+import java.util.List;
+
+public interface LocationService {
+    List<Location> findAll();
+    Location findByAddress(String address);
+}
Index: src/main/java/com/example/service/PhotographerService.java
===================================================================
--- src/main/java/com/example/service/PhotographerService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/PhotographerService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,10 @@
+package com.example.service;
+
+import com.example.model.Photographer;
+
+import java.util.List;
+
+public interface PhotographerService {
+    List<Photographer> findAll();
+    Photographer findByName(String name);
+}
Index: src/main/java/com/example/service/UserService.java
===================================================================
--- src/main/java/com/example/service/UserService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/UserService.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,13 @@
+package com.example.service;
+
+import com.example.model.User;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface UserService {
+
+    List<User> findAllUsers();
+    Optional<User> findByUsername(String username);
+    User findById(Integer id);
+}
Index: src/main/java/com/example/service/impl/AuthServiceImpl.java
===================================================================
--- src/main/java/com/example/service/impl/AuthServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/impl/AuthServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,112 @@
+package com.example.service.impl;
+
+import com.example.exceptions.InvalidUserCredentialsException;
+import com.example.exceptions.InvalidUsernameOrPasswordException;
+import com.example.exceptions.PasswordsDoNotMatchException;
+import com.example.exceptions.UsernameAlreadyExistsException;
+import com.example.model.*;
+import com.example.model.Enumerations.Role;
+import com.example.repository.UserRepository;
+import com.example.service.AuthService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AuthServiceImpl implements AuthService {
+    private final UserRepository userRepository;
+
+    public AuthServiceImpl(UserRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    @Override
+    public User login(String username, String password) {
+        return userRepository.findByUsernameAndPassword(username,
+                password).orElseThrow(InvalidUserCredentialsException::new);
+    }
+
+    @Override
+    public void registerUser(String name, String username, String number, String password,
+                             String rpassword, String role) {
+        if (username == null || username.isEmpty() || password == null || password.isEmpty())
+            throw new InvalidUsernameOrPasswordException();
+        if (!password.equals(rpassword))
+            throw new PasswordsDoNotMatchException();
+        if (this.userRepository.findByUsername(username).isPresent())
+            throw new UsernameAlreadyExistsException(username);
+        userRepository.save(new User(name, username, number, password, Role.ROLE_USER));
+    }
+
+    @Override
+    public void registerBand(String name, String username, String number, String password,
+                             String rpassword, String role, Integer price) {
+        if (username == null || username.isEmpty() || password == null || password.isEmpty())
+            throw new InvalidUsernameOrPasswordException();
+        if (!password.equals(rpassword))
+            throw new PasswordsDoNotMatchException();
+        if (this.userRepository.findByUsername(username).isPresent())
+            throw new UsernameAlreadyExistsException(username);
+        userRepository.save(new Band(name, username, number, password, price, Role.ROLE_BAND));
+    }
+
+    @Override
+    public void registerCatering(String name, String username, String number, String password,
+                                 String rpassword, String role,
+                                 Integer price, String address) {
+        if (username == null || username.isEmpty() || password == null || password.isEmpty())
+            throw new InvalidUsernameOrPasswordException();
+        if (!password.equals(rpassword))
+            throw new PasswordsDoNotMatchException();
+        if (this.userRepository.findByUsername(username).isPresent())
+            throw new UsernameAlreadyExistsException(username);
+        userRepository.save(new Catering(name, username, number, password, price, address, Role.ROLE_CATERING));
+    }
+
+    @Override
+    public void registerClient(String name, String username, String number, String password,
+                               String rpassword, String role) {
+        if (username == null || username.isEmpty() || password == null || password.isEmpty())
+            throw new InvalidUsernameOrPasswordException();
+        if (!password.equals(rpassword))
+            throw new PasswordsDoNotMatchException();
+        if (this.userRepository.findByUsername(username).isPresent())
+            throw new UsernameAlreadyExistsException(username);
+        userRepository.save(new Client(name, username, number, password, Role.ROLE_CLIENT));
+    }
+
+    @Override
+    public void registerPhotographer(String name, String username, String number, String password,
+                                     String rpassword, String role, Integer price, String portfolio) {
+        if (username == null || username.isEmpty() || password == null || password.isEmpty())
+            throw new InvalidUsernameOrPasswordException();
+        if (!password.equals(rpassword))
+            throw new PasswordsDoNotMatchException();
+        if (this.userRepository.findByUsername(username).isPresent())
+            throw new UsernameAlreadyExistsException(username);
+        userRepository.save(new Photographer(name, username, number, password, price, portfolio, Role.ROLE_PHOTOGRAPHER));
+    }
+
+    @Override
+    public void registerWaiter(String name, String username, String number, String password,
+                               String rpassword, String role, Integer free_day,
+                               Integer experience, Catering catering) {
+        if (username == null || username.isEmpty() || password == null || password.isEmpty())
+            throw new InvalidUsernameOrPasswordException();
+        if (!password.equals(rpassword))
+            throw new PasswordsDoNotMatchException();
+        if (this.userRepository.findByUsername(username).isPresent())
+            throw new UsernameAlreadyExistsException(username);
+        userRepository.save(new Waiter(name, username, number, password, free_day, experience, catering, Role.ROLE_WAITER));
+    }
+
+//    @Override
+//    public void register(String name, String username, String number, String password,
+//                      String rpassword, Role role) {
+//        if (username==null || username.isEmpty()  || password==null || password.isEmpty())
+//            throw new InvalidUsernameOrPasswordException();
+//        if (!password.equals(rpassword))
+//            throw new PasswordsDoNotMatchException();
+//        if(this.userRepository.findByUsername(username).isPresent())
+//            throw new UsernameAlreadyExistsException(username);
+//        userRepository.save(new User(name, username, number, password));
+//    }
+}
Index: src/main/java/com/example/service/impl/BandServiceImpl.java
===================================================================
--- src/main/java/com/example/service/impl/BandServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/impl/BandServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,31 @@
+package com.example.service.impl;
+
+import com.example.exceptions.NoSuchUsernameException;
+import com.example.model.Band;
+import com.example.repository.BandRepository;
+import com.example.service.BandService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class BandServiceImpl implements BandService{
+
+    private final BandRepository bandRepository;
+
+    public BandServiceImpl(BandRepository bandRepository) {
+        this.bandRepository = bandRepository;
+    }
+
+    @Override
+    public List<Band> findAll() {
+        return this.bandRepository.findAll();
+    }
+
+    @Override
+    public Band findByName(String name) {
+        return this.bandRepository.findAllByName(name).stream().findFirst()
+                .orElseThrow(NoSuchUsernameException::new);
+    }
+}
+
Index: src/main/java/com/example/service/impl/CateringServiceImpl.java
===================================================================
--- src/main/java/com/example/service/impl/CateringServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/impl/CateringServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,30 @@
+package com.example.service.impl;
+
+import com.example.exceptions.NoSuchUsernameException;
+import com.example.model.Catering;
+import com.example.repository.CateringRepository;
+import com.example.service.CateringService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CateringServiceImpl implements CateringService {
+
+    private final CateringRepository cateringRepository;
+
+    public CateringServiceImpl(CateringRepository cateringRepository) {
+        this.cateringRepository = cateringRepository;
+    }
+
+    @Override
+    public List<Catering> findAll() {
+        return this.cateringRepository.findAll();
+    }
+
+    @Override
+    public Catering findByName(String name) {
+        return this.cateringRepository.findAllByName(name).stream().findFirst()
+                .orElseThrow(NoSuchUsernameException::new);
+    }
+}
Index: src/main/java/com/example/service/impl/EventServiceImpl.java
===================================================================
--- src/main/java/com/example/service/impl/EventServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/impl/EventServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,61 @@
+package com.example.service.impl;
+
+import com.example.exceptions.InvalidArgumentsException;
+import com.example.model.Client;
+import com.example.model.Enumerations.Status;
+import com.example.model.Event;
+import com.example.repository.ClientRepository;
+import com.example.repository.EventRepository;
+import com.example.repository.LocationRepository;
+import com.example.repository.UserRepository;
+import com.example.service.EventService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class EventServiceImpl implements EventService {
+    private final EventRepository eventRepository;
+    private final ClientRepository clientRepository;
+    private final LocationRepository locationRepository;
+    private final UserRepository userRepository;
+
+    public EventServiceImpl(EventRepository eventRepository, ClientRepository clientRepository, LocationRepository locationRepository, UserRepository userRepository) {
+        this.eventRepository = eventRepository;
+        this.clientRepository = clientRepository;
+        this.locationRepository = locationRepository;
+        this.userRepository = userRepository;
+    }
+
+    @Override
+    public List<Event> findAll() {
+        return this.eventRepository.findAll();
+    }
+
+    @Override
+    public void update(Event e) {
+        eventRepository.save(e);
+    }
+
+    @Override
+    public Event findById(Integer id) {
+        return eventRepository.findById(id).get();
+    }
+
+    @Override
+    public List<Event> findByClient(Integer client_id) {
+        Optional<Client> client = clientRepository.findById(client_id);
+//        User user = userRepository.findById(user_id).get();
+//        return eventRepository.findByUser(user);
+        return eventRepository.findByClient(client);
+    }
+
+    @Override
+    public Optional<Event> updateStatus(Integer event_id, Status status) {
+        Event event = eventRepository.findById(event_id).orElseThrow(InvalidArgumentsException::new);
+        event.setStatus(status);
+        return Optional.of(eventRepository.save(event));
+    }
+
+}
Index: src/main/java/com/example/service/impl/LocationServiceImpl.java
===================================================================
--- src/main/java/com/example/service/impl/LocationServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/impl/LocationServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,30 @@
+package com.example.service.impl;
+
+import com.example.model.Location;
+import com.example.repository.LocationRepository;
+import com.example.service.LocationService;
+import org.springframework.stereotype.Service;
+import com.example.exceptions.NoSuchAddressException;
+
+import java.util.List;
+
+@Service
+public class LocationServiceImpl implements LocationService {
+
+    private final LocationRepository locationRepository;
+
+    public LocationServiceImpl(LocationRepository locationRepository) {
+        this.locationRepository = locationRepository;
+    }
+
+    @Override
+    public List<Location> findAll() {
+        return this.locationRepository.findAll();
+    }
+
+    @Override
+    public Location findByAddress(String address) {
+        return locationRepository.findAllByAddress(address).stream().findFirst()
+                .orElseThrow(() -> new NoSuchAddressException(address));
+    }
+}
Index: src/main/java/com/example/service/impl/PhotographerServiceImpl.java
===================================================================
--- src/main/java/com/example/service/impl/PhotographerServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/impl/PhotographerServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,30 @@
+package com.example.service.impl;
+
+import com.example.exceptions.NoSuchUsernameException;
+import com.example.model.Photographer;
+import com.example.repository.PhotographerRepository;
+import com.example.service.PhotographerService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PhotographerServiceImpl implements PhotographerService {
+
+    private final PhotographerRepository photographerRepository;
+
+    public PhotographerServiceImpl(PhotographerRepository photographerRepository) {
+        this.photographerRepository = photographerRepository;
+    }
+
+    @Override
+    public List<Photographer> findAll() {
+        return this.photographerRepository.findAll();
+    }
+
+    @Override
+    public Photographer findByName(String name) {
+        return this.photographerRepository.findAllByName(name).stream().findFirst()
+                .orElseThrow(NoSuchUsernameException::new);
+    }
+}
Index: src/main/java/com/example/service/impl/UserServiceImpl.java
===================================================================
--- src/main/java/com/example/service/impl/UserServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/service/impl/UserServiceImpl.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,37 @@
+package com.example.service.impl;
+
+import com.example.exceptions.NoSuchIDException;
+import com.example.model.User;
+import com.example.repository.UserRepository;
+import com.example.service.UserService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class UserServiceImpl implements UserService {
+
+    private final UserRepository userRepository;
+
+    public UserServiceImpl(UserRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    @Override
+    public List<User> findAllUsers() {
+        return userRepository.findAll();
+    }
+
+    @Override
+    public Optional<User> findByUsername(String username) {
+
+        return userRepository.findByUsername(username);
+    }
+
+    @Override
+    public User findById(Integer id) {
+        return userRepository.findById(id).stream().findFirst()
+                .orElseThrow(() -> new NoSuchIDException(id));
+    }
+}
Index: src/main/java/com/example/web/HomeController.java
===================================================================
--- src/main/java/com/example/web/HomeController.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/web/HomeController.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,85 @@
+package com.example.web;
+
+import com.example.model.Enumerations.Status;
+import com.example.model.Event;
+import com.example.service.BandService;
+import com.example.service.CateringService;
+import com.example.service.EventService;
+import com.example.service.PhotographerService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+@Controller
+@RequestMapping(value = {"/", "/home"})
+public class HomeController {
+
+    private final EventService eventService;
+
+    private final BandService bandService;
+    private final PhotographerService photographerService;
+    private final CateringService cateringService;
+
+    public HomeController(EventService eventService, BandService bandService,
+                          PhotographerService photographerService, CateringService cateringService) {
+        this.eventService = eventService;
+        this.bandService = bandService;
+        this.photographerService = photographerService;
+        this.cateringService = cateringService;
+    }
+
+
+    @GetMapping
+    public String getHomePage() {
+        return "home";
+    }
+
+    @GetMapping("/event/{id}")
+    public String getEventInfo(@PathVariable Integer id, Model model) {
+        Event event = eventService.findById(id);
+
+        List<String> bandList = new ArrayList<>();
+        for (int i = 0; i < event.getBandList().size(); i++) {
+            bandList.add(event.getBandList().get(i).getName());
+        }
+
+        List<String> cateringList = new ArrayList<>();
+        for (int i = 0; i < event.getCateringList().size(); i++) {
+            cateringList.add(event.getCateringList().get(i).getName());
+        }
+
+        List<String> photographerList = new ArrayList<>();
+        for (int i = 0; i < event.getPhotographerList().size(); i++) {
+            photographerList.add(event.getPhotographerList().get(i).getName());
+        }
+
+        model.addAttribute("event", event);
+        model.addAttribute("bandList", bandList);
+        model.addAttribute("cateringList", cateringList);
+        model.addAttribute("photographerList", photographerList);
+        return "more_details";
+    }
+
+    @PostMapping("/approveEvent/{id}")
+    public String  approveEvent(@PathVariable Integer id, HttpServletResponse response){
+        Event event = eventService.findById(id);
+        event.setStatus(Status.APPROVED);
+        eventService.update(event);
+        return "redirect:/my_events";
+    }
+
+    @PostMapping("/rejectEvent/{id}")
+    public String  rejectEvent(@PathVariable Integer id, HttpServletResponse response){
+        Event event = eventService.findById(id);
+        event.setStatus(Status.REJECTED);
+        eventService.update(event);
+        return "redirect:/my_events";
+    }
+}
Index: src/main/java/com/example/web/HostEventController.java
===================================================================
--- src/main/java/com/example/web/HostEventController.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/web/HostEventController.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,126 @@
+package com.example.web;
+
+import com.example.model.*;
+import com.example.repository.*;
+import com.example.service.UserService;
+import org.springframework.format.annotation.DateTimeFormat;
+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.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.transaction.Transactional;
+import java.time.LocalDate;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+@Controller
+public class HostEventController {
+
+    private final EventRepository eventRepository;
+    private final UserRepository userRepository;
+    private final LocationRepository locationRepository;
+    private final ClientRepository clientRepository;
+    private final BandRepository bandRepository;
+    private final CateringRepository cateringRepository;
+    private final PhotographerRepository photographerRepository;
+    private final UserService userService;
+
+    private final WaiterRepository waiterRepository;
+    public HostEventController(EventRepository eventRepository, UserRepository userRepository,
+                               LocationRepository locationRepository, ClientRepository clientRepository,
+                               BandRepository bandRepository, CateringRepository cateringRepository,
+                               PhotographerRepository photographerRepository, UserService userService, WaiterRepository waiterRepository) {
+        this.eventRepository = eventRepository;
+        this.userRepository = userRepository;
+        this.locationRepository = locationRepository;
+        this.clientRepository = clientRepository;
+        this.bandRepository = bandRepository;
+        this.cateringRepository = cateringRepository;
+        this.photographerRepository = photographerRepository;
+        this.userService = userService;
+        this.waiterRepository = waiterRepository;
+    }
+
+    @GetMapping("/host_event")
+    public String getHostEventPage(Model model) {
+        model.addAttribute("locations", locationRepository.findAll());
+        model.addAttribute("bands", bandRepository.findAll());
+        model.addAttribute("caterings", cateringRepository.findAll());
+        model.addAttribute("photographers", photographerRepository.findAll());
+        return "host_event";
+    }
+
+    @Transactional
+    @PostMapping("/host_event")
+    public String handleHostEvent(@RequestParam String time,
+                                  @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date,
+                                  @RequestParam String location,
+                                  @RequestParam String type,
+                                  @RequestParam(required = false) String description,
+                                  @RequestParam List<Band> bands,
+                                  @RequestParam List<Catering> caterings,
+                                  @RequestParam List<Photographer> photographers,
+                                  HttpServletRequest req,
+                                  HttpServletResponse resp,
+                                  HttpSession session) {
+        Event event = null;
+        try {
+            Location location2 = locationRepository.findByAddress(location);
+
+            User user = (User) userService.findByUsername((String) req.getSession().getAttribute("username")).get();
+            Client client = (Client) clientRepository.findById(user.getId()).get();
+            Admin admin = (Admin) userService.findByUsername("admin1").get();
+            admin.setNumber_events(admin.getNumber_events()+1);
+            client.setNumber_events(client.getNumber_events()+1);
+            eventRepository.save(new Event(time, date, location2, type, description, client, bands,caterings, photographers, admin));
+
+            return "redirect:/home?UspeshnoZakazanNastan";
+        } catch (Exception e) {
+            return "redirect:/?error=" + e.getMessage();
+        }
+    }
+
+    @GetMapping("/my_events")
+    public String getEventsForUser(HttpServletRequest req, Model model) {
+        User user = (User) userService.findByUsername((String) req.getSession().getAttribute("username")).get();
+        List<Event> events = null;
+        try {
+            Client client = (Client) clientRepository.findById(user.getId()).get();
+            events = client.getEvent();
+        }
+        catch (NoSuchElementException exception){
+            try{
+                Catering catering = (Catering) cateringRepository.findById(user.getId()).get();
+                events = catering.getEventList();
+            }
+            catch (NoSuchElementException exception1){
+                try {
+                    Band band = (Band) bandRepository.findById(user.getId()).get();
+                    events = band.getEventList();
+                }
+                catch (NoSuchElementException e){
+                    try{
+                        Photographer photographer = (Photographer) photographerRepository.findById(user.getId()).get();
+                        events = photographer.getEventList();
+                    }
+                    catch (NoSuchElementException exception2){
+                        try{
+                            Waiter waiter = (Waiter) waiterRepository.findById(user.getId()).get();
+                            events = waiter.getEventList();
+                        }
+                        catch (NoSuchElementException exception3){
+                            events = eventRepository.findAll();
+                        }
+                    }
+                }
+            }
+        }
+        model.addAttribute("events",events);
+        return "my_events";
+    }
+}
Index: src/main/java/com/example/web/LoginController.java
===================================================================
--- src/main/java/com/example/web/LoginController.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/web/LoginController.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,63 @@
+package com.example.web;
+
+import com.example.exceptions.InvalidUserCredentialsException;
+import com.example.exceptions.InvalidUsernameOrPasswordException;
+import com.example.model.User;
+import com.example.service.AuthService;
+import com.example.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.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+
+@Controller
+public class LoginController {
+
+    private final AuthService authService;
+    private final UserService userService;
+
+    public LoginController(AuthService authService, UserService userService) {
+        this.authService = authService;
+        this.userService = userService;
+    }
+
+    @GetMapping("/login")
+    public String getLoginPage() {
+        return "login";
+    }
+
+    @PostMapping("/login")
+    public String handleLogin(@RequestParam String username,
+                              @RequestParam String password,
+                              HttpServletRequest request,
+                              Model model) {
+//                              HttpServletResponse resp) throws IOException {
+        User user = null;
+        try {
+            user = authService.login(username, password);
+            request.getSession().setAttribute("user", user);
+            request.getSession().setAttribute("username",username);
+            request.getSession().setAttribute("role",
+                    userService.findByUsername(username).get().getRole().toString());
+            System.out.println(request.getSession().getAttribute("role").toString());
+            return "redirect:/home";
+        } catch (InvalidUserCredentialsException exception) {
+            model.addAttribute("hasError", true);
+            model.addAttribute("error", exception.getMessage());
+            return "login";
+        } catch (InvalidUsernameOrPasswordException exception) {
+            model.addAttribute("hasError", true);
+            model.addAttribute("error", exception.getMessage());
+            return "login";
+        }
+    }
+
+    @GetMapping("/logout")
+    public String getLogout(HttpServletRequest request) {
+        request.getSession().invalidate();
+        return "redirect:/login";
+    }
+}
Index: src/main/java/com/example/web/RegisterController.java
===================================================================
--- src/main/java/com/example/web/RegisterController.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/java/com/example/web/RegisterController.java	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,169 @@
+package com.example.web;
+
+import com.example.exceptions.InvalidArgumentsException;
+import com.example.exceptions.NoSuchUsernameException;
+import com.example.model.Catering;
+import com.example.model.Enumerations.Role;
+import com.example.repository.CateringRepository;
+import com.example.service.AuthService;
+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.RequestParam;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.util.Objects;
+
+@Controller
+public class RegisterController {
+
+    private final AuthService authService;
+
+    private final CateringRepository cateringRepository;
+
+
+    public RegisterController(AuthService authService, CateringRepository cateringRepository) {
+        this.authService = authService;
+        this.cateringRepository = cateringRepository;
+    }
+
+    @GetMapping("/register")
+    public String getRegistgerPage() {
+        return "register";
+    }
+
+    @PostMapping("/register")
+    public String handleRegister(@RequestParam String name,
+                                 @RequestParam String username,
+                                 @RequestParam String number,
+                                 @RequestParam String password,
+                                 @RequestParam String rpassword,
+                                 @RequestParam String role,
+                                 HttpSession session) {
+        session.setAttribute("username", username);
+        session.setAttribute("name", name);
+        session.setAttribute("password", password);
+        session.setAttribute("rpassword", rpassword);
+        session.setAttribute("number", number);
+        session.setAttribute("role", role);
+        if (Objects.equals(role, "client")) {
+            authService.registerClient(name, username, number, password, rpassword, String.valueOf(Role.ROLE_CLIENT));
+            try {
+                return "redirect:/login";
+            } catch (InvalidArgumentsException exception) {
+                return "redirect:/register?error=" + exception.getMessage();
+
+            }
+        } else if (Objects.equals(role, "band")) {
+            try {
+                return "registerBand";
+            } catch (InvalidArgumentsException exception) {
+                return "redirect:/register?error=" + exception.getMessage();
+            }
+        } else if (Objects.equals(role, "photographer")) {
+            try {
+                return "registerPhotographer";
+            } catch (InvalidArgumentsException exception) {
+                return "redirect:/register?error=" + exception.getMessage();
+            }
+        }
+        if (Objects.equals(role, "waiter")) {
+            try {
+                return "redirect:/registerWaiter";
+            } catch (InvalidArgumentsException exception) {
+                return "redirect:/register?error=" + exception.getMessage();
+            }
+        }
+        if (Objects.equals(role, "catering")) {
+            try {
+                return "registerCatering";
+            } catch (InvalidArgumentsException exception) {
+                return "redirect:/register?error=" + exception.getMessage();
+            }
+        }
+        return "register";
+    }
+
+    @PostMapping("/finishRegisterBand")
+    public void handleBandRegister(@RequestParam Integer price,
+                                   HttpServletResponse response,
+                                   HttpSession session) {
+        String username = (String) session.getAttribute("username");
+        String name = (String) session.getAttribute("name");
+        String password = (String) session.getAttribute("password");
+        String rpassword = (String) session.getAttribute("rpassword");
+        String number = (String) session.getAttribute("number");
+        authService.registerBand(name, username, number, password, rpassword, String.valueOf(Role.ROLE_BAND), price);
+        try {
+            response.sendRedirect("/login");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @PostMapping("/finishRegisterPhotographer")
+    public void handlePhotographerRegister(@RequestParam Integer price,
+                                           @RequestParam(required = false) String portfolio,
+                                           HttpServletResponse response,
+                                           HttpSession session) {
+        String username = (String) session.getAttribute("username");
+        String name = (String) session.getAttribute("name");
+        String password = (String) session.getAttribute("password");
+        String rpassword = (String) session.getAttribute("rpassword");
+        String number = (String) session.getAttribute("number");
+        authService.registerPhotographer(name, username, number, password, rpassword, String.valueOf(Role.ROLE_PHOTOGRAPHER), price, portfolio);
+        try {
+            response.sendRedirect("/login");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @GetMapping("/registerWaiter")
+    public String getSelectPage(Model model) {
+        model.addAttribute("caterings", cateringRepository.findAll());
+        return "registerWaiter";
+    }
+
+    @PostMapping("/finishRegisterWaiter")
+    public void handleWaiterRegister(@RequestParam Integer free_day,
+                                     @RequestParam Integer experience,
+                                     @RequestParam String catering_name,
+                                     HttpServletResponse response,
+                                     HttpSession session) {
+        String username = (String) session.getAttribute("username");
+        String name = (String) session.getAttribute("name");
+        String password = (String) session.getAttribute("password");
+        String rpassword = (String) session.getAttribute("rpassword");
+        String number = (String) session.getAttribute("number");
+        Catering catering = cateringRepository.findAllByName(catering_name).stream().findFirst()
+                .orElseThrow(NoSuchUsernameException::new);
+        authService.registerWaiter(name, username, number, password, rpassword, String.valueOf(Role.ROLE_WAITER), free_day, experience, catering);
+        try {
+            response.sendRedirect("/login");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @PostMapping("/finishRegisterCatering")
+    public void handleCateringRegister(@RequestParam Integer price,
+                                       @RequestParam String address,
+                                       HttpServletResponse response,
+                                       HttpSession session) {
+        String username = (String) session.getAttribute("username");
+        String name = (String) session.getAttribute("name");
+        String password = (String) session.getAttribute("password");
+        String rpassword = (String) session.getAttribute("rpassword");
+        String number = (String) session.getAttribute("number");
+        authService.registerCatering(name, username, number, password, rpassword, String.valueOf(Role.ROLE_CATERING), price, address);
+        try {
+            response.sendRedirect("/login");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
Index: src/main/resources/application-prod.properties
===================================================================
--- src/main/resources/application-prod.properties	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/application-prod.properties	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,16 @@
+## PostgreSQL
+spring.datasource.url=jdbc:postgresql://localhost:5444/db_202223z_va_prj_eventrra
+spring.datasource.username=db_202223z_va_prj_eventrra_owner
+spring.datasource.password=e5195b942c11
+
+
+## default connection pool
+spring.datasource.hikari.connectionTimeout=20000
+spring.datasource.hikari.maximumPoolSize=5
+
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL95Dialect
+spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
+spring.jpa.properties.hibernate.default_schema=project
+
+spring.jpa.hibernate.ddl-auto=validate
+spring.jpa.show-sql=true
Index: src/main/resources/application.properties
===================================================================
--- src/main/resources/application.properties	(revision de70cd4fbb548837239a11395f292094a60fa5b9)
+++ src/main/resources/application.properties	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -1,3 +1,3 @@
 server.port=9999
 spring.profiles.active=prod
-spring.jpa.properties.hibernate.default_schema=project
+spring.jpa.properties.hibernate.default_schema=public
Index: src/main/resources/static/style.css
===================================================================
--- src/main/resources/static/style.css	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/static/style.css	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,166 @@
+.navbar{
+    background: darkkhaki;
+}
+span{
+    color: #b2d7ff;
+    text-decoration: none;
+    background: transparent;
+}
+ul{
+    text-align: justify;
+    margin-left: 50px;
+    margin-right: 50px;
+
+}
+body{
+    background-image: url("https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80");
+    background-size: 100%;
+    background-repeat: no-repeat;
+    background-position: center top -150px; /* Adjust the background position to move the image up */            }
+.navbar-brand{
+    color:yellow;
+}
+.nav-link{
+    color: yellow;
+}
+footer{
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: #111;
+    height: auto;
+    width: 100vw;
+    padding-top: 40px;
+    color: #fff;
+}
+.footer-content{
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-direction: column;
+    text-align: center;
+    height: 80px;
+}
+.footer-content h3{
+    font-size: 2.1rem;
+    font-weight: 500;
+    text-transform: capitalize;
+    line-height: 3rem;
+    margin-top: 20px;
+}
+.footer-content p{
+    max-width: 500px;
+    margin: 10px auto;
+    line-height: 28px;
+    font-size: 14px;
+    color: #cacdd2;
+}
+.socials{
+    list-style: none;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    margin: 1rem 0 3rem 0;
+}
+.socials li{
+    margin: 0 10px;
+}
+.socials a{
+    text-decoration: none;
+    color: #fff;
+    border: 1.1px solid white;
+    padding: 5px;
+    border-radius: 50%;
+}
+.socials a i{
+    font-size: 1.1rem;
+    width: 20px;
+    transition: color .4s ease;
+}
+.socials a:hover i{
+    color: aqua;
+}
+.footer-bottom p{
+    float: left;
+    font-size: 14px;
+    word-spacing: 2px;
+    text-transform: capitalize;
+}
+.footer-bottom p a{
+    color:#44bae8;
+    font-size: 16px;
+    text-decoration: none;
+}
+.footer-bottom span{
+    text-transform: uppercase;
+    opacity: .4;
+    font-weight: 200;
+}
+.footer-menu ul{
+    display: flex;
+}
+.footer-menu ul li{
+    padding-right: 10px;
+    display: block;
+}
+.footer-menu ul li a{
+    color: #cfd2d6;
+    text-decoration: none;
+}
+.footer-menu ul li a:hover{
+    color: #27bcda;
+}
+@media (max-width:500px) {
+    .footer-menu ul{
+        display: flex;
+        margin-top: 10px;
+        margin-bottom: 20px;
+    }
+}
+.kopce{
+    background-color: mediumslateblue;
+    border: none;
+    color: white;
+    padding: 15px 32px;
+    text-align: center;
+    text-decoration: none;
+    display: inline-block;
+    font-size: 16px;
+    margin-left: 20px;
+}
+/*#logo{*/
+/*    width:160px;*/
+/*    height: 60px*/
+/*}*/
+h1{
+    color: black;
+    font-size: 60px;
+    font-weight: 700;
+    letter-spacing: 8px;
+    margin-bottom: 20px;
+    margin-left:auto;
+    margin-right:auto;
+    margin-top:50px;
+    position: relative;
+    animation: text 3s 1;
+}
+@keyframes text {
+    0%{
+        color: black;
+        margin-bottom: -40px;
+    }
+    30%{
+        letter-spacing: 25px;
+        margin-bottom: -40px;
+    }
+    85%{
+        letter-spacing: 8px;
+        margin-bottom: -40px;
+    }
+}
+footer{
+    width: 100%;
+    padding: 20px;
+    box-sizing: border-box;
+}
Index: src/main/resources/templates/Home.html
===================================================================
--- src/main/resources/templates/Home.html	(revision de70cd4fbb548837239a11395f292094a60fa5b9)
+++ src/main/resources/templates/Home.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -4,15 +4,15 @@
     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
     <style>
-
-        .navbar{
+        .navbar {
             background: darkkhaki;
-
-        }
-        span{
+        }
+
+        span {
             color: #b2d7ff;
             text-decoration: none;
             background: transparent;
         }
-        ul{
+
+        ul {
             text-align: justify;
             margin-left: 50px;
@@ -20,30 +20,25 @@
 
         }
-        #txt {text-align: center;
-            margin-top:17.2rem;
-            margin-bottom: 300px;
-            font-size: 110px;
-            color: black;
-        }
-        #txt1 {text-align: center;
-            margin-top:17.2rem;
-            margin-bottom: 300px;
-            font-size: 110px;
-            color: black;
-        }
-        body{
-            background-image: url("../static/eventrabg.jpg");
+
+        body {
+            background-image: url("https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80");
             background-size: 100%;
             background-repeat: no-repeat;
-        }
-        .navbar-brand{
-            color:yellow;
-        }
-        .nav-link{
-            color: yellow;
-        }
-
-        footer{
-            position: absolute;
+            background-position: center top -150px; /* Adjust the background position to move the image up */
+        }
+
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+
+        footer {
+            position: fixed;
             bottom: 0;
             left: 0;
@@ -52,9 +47,9 @@
             height: auto;
             width: 100vw;
-
             padding-top: 40px;
             color: #fff;
         }
-        .footer-content{
+
+        .footer-content {
             display: flex;
             align-items: center;
@@ -62,13 +57,16 @@
             flex-direction: column;
             text-align: center;
-            height: 100px;
-        }
-        .footer-content h3{
+            height: 80px;
+        }
+
+        .footer-content h3 {
             font-size: 2.1rem;
             font-weight: 500;
             text-transform: capitalize;
             line-height: 3rem;
-        }
-        .footer-content p{
+            margin-top: 20px;
+        }
+
+        .footer-content p {
             max-width: 500px;
             margin: 10px auto;
@@ -77,5 +75,6 @@
             color: #cacdd2;
         }
-        .socials{
+
+        .socials {
             list-style: none;
             display: flex;
@@ -84,36 +83,28 @@
             margin: 1rem 0 3rem 0;
         }
-        .socials li{
+
+        .socials li {
             margin: 0 10px;
         }
-        .socials a{
+
+        .socials a {
             text-decoration: none;
             color: #fff;
             border: 1.1px solid white;
             padding: 5px;
-
             border-radius: 50%;
-
-        }
-        .socials a i{
+        }
+
+        .socials a i {
             font-size: 1.1rem;
             width: 20px;
-
-
             transition: color .4s ease;
-
-        }
-        .socials a:hover i{
+        }
+
+        .socials a:hover i {
             color: aqua;
         }
 
-        .footer-bottom{
-            background: #000;
-            width: 100vw;
-            padding: 20px;
-            padding-bottom: 40px;
-            text-align: center;
-        }
-        .footer-bottom p{
+        .footer-bottom p {
             float: left;
             font-size: 14px;
@@ -121,35 +112,37 @@
             text-transform: capitalize;
         }
-        .footer-bottom p a{
-            color:#44bae8;
+
+        .footer-bottom p a {
+            color: #44bae8;
             font-size: 16px;
             text-decoration: none;
         }
-        .footer-bottom span{
+
+        .footer-bottom span {
             text-transform: uppercase;
             opacity: .4;
             font-weight: 200;
         }
-        .footer-menu{
-            float: right;
-
-        }
-        .footer-menu ul{
+
+        .footer-menu ul {
             display: flex;
         }
-        .footer-menu ul li{
+
+        .footer-menu ul li {
             padding-right: 10px;
             display: block;
         }
-        .footer-menu ul li a{
+
+        .footer-menu ul li a {
             color: #cfd2d6;
             text-decoration: none;
         }
-        .footer-menu ul li a:hover{
+
+        .footer-menu ul li a:hover {
             color: #27bcda;
         }
 
-        @media (max-width:500px) {
-            .footer-menu ul{
+        @media (max-width: 500px) {
+            .footer-menu ul {
                 display: flex;
                 margin-top: 10px;
@@ -158,5 +151,5 @@
         }
 
-        .kopce{
+        .kopce {
             background-color: mediumslateblue;
             border: none;
@@ -170,116 +163,117 @@
         }
 
-        #logo{
-            width:160px;
-            height: 60px
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+        h1 {
+            color: black;
+            font-size: 60px;
+            font-weight: 700;
+            letter-spacing: 8px;
+            margin-bottom: 20px;
+            margin-left: auto;
+            margin-right: auto;
+            margin-top: 50px;
+            position: relative;
+            animation: text 3s 1;
+        }
+
+        @keyframes text {
+            0% {
+                color: black;
+                margin-bottom: -40px;
+            }
+            30% {
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85% {
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+
+        footer {
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
         }
     </style>
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <meta charset="UTF-8"/>
-    <title>Home</title>
-    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
-    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
-    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
+    <title>Home - Eventrra</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+            crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+            integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+            crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+            integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+            crossorigin="anonymous"></script>
 </head>
 <body>
 <div>
-<nav class="navbar navbar-expand-md ">
-    <div  class="container">
-
-        <img id="logo" src="../static/logoeventra.png">
-        <a class="navbar-brand" href="/home"></a>
-        <a class="navbar-brand" href="/home"> Eventrra</a>
-        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
-                aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
-            <span class="navbar-toggler-icon"></span>
-        </button>
-
-        <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
-            <ul class="navbar-nav m-auto">
-
-                <li  class="nav-item m-auto">
-                    <a  class="nav-link active" href="/home">Home</a>
-                </li>
-
-                <li  class="nav-item m-auto">
-                    <a class="kopce" href="/home/hostevent">Host an event</a>
-                </li>
-            </ul>
-            <form class="form-inline my-2 my-lg-0">
-
-            <div th:if="${session.user==null}">
-                    <a class="btn btn-light btn-sm ml-3" href="/login">
-                         Login
-                    </a>
-
-                    <a  class="btn btn-light btn-sm ml-3" href="/register">
-                         SignUp
-                    </a>
+    <nav class="navbar navbar-expand-md ">
+        <div class="container">
+            <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+            <!--                <a class="navbar-brand" href="/home"></a>-->
+            <a class="navbar-brand"> Eventrra</a>
+            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+
+            <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                <ul class="navbar-nav m-auto">
+
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/">Home</a>
+                    </li>
+
+                    <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                        class="nav-item m-auto">
+                    <a class="kopce" href="/host_event">Host an event</a>
+                    </li>
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/my_events">Scheduled events</a>
+                    </li>
+                </ul>
+
+                <form class="form-inline my-2 my-lg-0">
+
+                    <div th:if="${session.user==null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/login">
+                            Login
+                        </a>
+
+                        <a class="btn btn-light btn-sm ml-3" href="/register">
+                            Sign up
+                        </a>
+                    </div>
+                    <div style="text-align: center" th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a th:text="${session.user.username}" style="color:white; font-size: 20px;"
+                           class="nav-link active" href="/login/profile"></a>
+                    </div>
+
+                    <div th:if="${session.user!=null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/logout">
+                            Log out
+                        </a>
+                    </div>
+                </form>
             </div>
-                <div  style="  text-align: center"  th:if="${session.user!=null}" class="nav-item m-auto">
-                    <a th:text="${session.user.username}" style="color:white; font-size: 20px;" class="nav-link active" href="/login/profile"></a>
-                </div>
-
-                <div th:if="${session.user!=null}">
-                    <a class="btn btn-light btn-sm ml-3" href="/logout">
-                         Log out
-                    </a>
-
-
-
-                    </a>
-                </div>
-
-            </form>
         </div>
-    </div>
-</nav>
+    </nav>
 </div>
-
-
-
-
-<style>
-    h1{
-        color: black;
-        font-size: 60px;
-        font-weight: 700;
-        letter-spacing: 8px;
-        margin-bottom: 20px;
-        margin-left:auto;
-        margin-right:auto;
-        margin-top:50px;
-        position: relative;
-        animation: text 3s 1;
-    }
-
-
-    @keyframes text {
-        0%{
-            color: black;
-            margin-bottom: -40px;
-        }
-        30%{
-            letter-spacing: 25px;
-            margin-bottom: -40px;
-        }
-        85%{
-            letter-spacing: 8px;
-            margin-bottom: -40px;
-        }
-    }
-
-</style>
-
-
-
-</section>
-</body>
-<!-- Footer -->
-
-
+<!--        <div class="ml-5">-->
+<!--        <img class="img-fluid" src="https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80" alt="Image">-->
+<!--        </div>-->
 <footer>
     <div class="footer-content">
+        <br>
         <h3>Contact us</h3>
 
@@ -292,12 +286,5 @@
         </ul>
     </div>
-
-
 </footer>
-
-
-
-
-
-
+</body>
 </html>
Index: src/main/resources/templates/host_event.html
===================================================================
--- src/main/resources/templates/host_event.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/host_event.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,347 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+    <style>
+        .navbar {
+            background: darkkhaki;
+        }
+
+        span {
+            color: #b2d7ff;
+            text-decoration: none;
+            background: transparent;
+        }
+
+        ul {
+            text-align: justify;
+            margin-left: 50px;
+            margin-right: 50px;
+
+        }
+
+        body {
+          background-color: wheat;
+        }
+
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+
+        footer {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            background: #111;
+            height: auto;
+            width: 100vw;
+            padding-top: 40px;
+            color: #fff;
+        }
+
+        .footer-content {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            text-align: center;
+            height: 80px;
+        }
+
+        .footer-content h3 {
+            font-size: 2.1rem;
+            font-weight: 500;
+            text-transform: capitalize;
+            line-height: 3rem;
+            margin-top: 20px;
+        }
+
+        .footer-content p {
+            max-width: 500px;
+            margin: 10px auto;
+            line-height: 28px;
+            font-size: 14px;
+            color: #cacdd2;
+        }
+
+        .socials {
+            list-style: none;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 1rem 0 3rem 0;
+        }
+
+        .socials li {
+            margin: 0 10px;
+        }
+
+        .socials a {
+            text-decoration: none;
+            color: #fff;
+            border: 1.1px solid white;
+            padding: 5px;
+            border-radius: 50%;
+        }
+
+        .socials a i {
+            font-size: 1.1rem;
+            width: 20px;
+            transition: color .4s ease;
+        }
+
+        .socials a:hover i {
+            color: aqua;
+        }
+
+        .footer-bottom p {
+            float: left;
+            font-size: 14px;
+            word-spacing: 2px;
+            text-transform: capitalize;
+        }
+
+        .footer-bottom p a {
+            color: #44bae8;
+            font-size: 16px;
+            text-decoration: none;
+        }
+
+        .footer-bottom span {
+            text-transform: uppercase;
+            opacity: .4;
+            font-weight: 200;
+        }
+
+        .footer-menu ul {
+            display: flex;
+        }
+
+        .footer-menu ul li {
+            padding-right: 10px;
+            display: block;
+        }
+
+        .footer-menu ul li a {
+            color: #cfd2d6;
+            text-decoration: none;
+        }
+
+        .footer-menu ul li a:hover {
+            color: #27bcda;
+        }
+
+        @media (max-width: 500px) {
+            .footer-menu ul {
+                display: flex;
+                margin-top: 10px;
+                margin-bottom: 20px;
+            }
+        }
+
+        .kopce {
+            background-color: mediumslateblue;
+            border: none;
+            color: white;
+            padding: 15px 32px;
+            text-align: center;
+            text-decoration: none;
+            display: inline-block;
+            font-size: 16px;
+            margin-left: 20px;
+        }
+
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+        h1 {
+            color: black;
+            font-size: 60px;
+            font-weight: 700;
+            letter-spacing: 8px;
+            margin-bottom: 20px;
+            margin-left: auto;
+            margin-right: auto;
+            margin-top: 50px;
+            position: relative;
+            animation: text 3s 1;
+        }
+
+        @keyframes text {
+            0% {
+                color: black;
+                margin-bottom: -40px;
+            }
+            30% {
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85% {
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+
+        footer {
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
+        }
+
+        #hostEventText{
+            color: white;
+            font-weight: bold;
+        }
+    </style>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta charset="UTF-8"/>
+    <title>Host Event</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+            crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+            integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+            crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+            integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+            crossorigin="anonymous"></script>
+</head>
+<body>
+<div>
+    <nav class="navbar navbar-expand-md ">
+        <div class="container">
+            <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+            <!--                <a class="navbar-brand" href="/home"></a>-->
+            <a class="navbar-brand"> Eventrra</a>
+            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+
+            <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                <ul class="navbar-nav m-auto">
+
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/">Home</a>
+                    </li>
+
+                    <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                        class="nav-item m-auto">
+                        <a class="kopce" href="/host_event">Host an event</a>
+                    </li>
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/my_events">Scheduled events</a>
+                    </li>
+                </ul>
+
+                <form class="form-inline my-2 my-lg-0">
+
+                    <div th:if="${session.user==null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/login">
+                            Login
+                        </a>
+
+                        <a class="btn btn-light btn-sm ml-3" href="/register">
+                            Sign up
+                        </a>
+                    </div>
+                    <div style="text-align: center" th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a th:text="${session.user.username}" style="color:white; font-size: 20px;"
+                           class="nav-link active" href="/login/profile"></a>
+                    </div>
+
+                    <div th:if="${session.user!=null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/logout">
+                            Log out
+                        </a>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </nav>
+</div>
+<br>
+<div class="container">
+    <form class="form-signin mt-xl-5" method="POST" action="/host_event">
+        <h2 class="form-signin-heading" id="hostEventText">Host an event</h2>
+        <p>
+            <label for="time">Time</label>
+            <input type="text" id="time" name="time" class="form-control"
+                   placeholder="Choose the time of the event" required="required">
+        </p>
+
+        <p>
+            <label for="date">Date</label>
+            <input type="date" id="date" name="date" class="form-control"
+                   placeholder="Choose the date of the event" required="required">
+        </p>
+
+        <label for="location">Location</label>
+        <select id="location" name="location" class="form-control" required="required">
+            <option th:each="l : ${locations}"
+                    th:text="${l.getAddress()}"
+                    th.value="${l.getAdress()}">
+            </option>
+        </select>
+
+        <p>
+            <label for="type">Type</label>
+            <input type="text" id="type" name="type" class="form-control" placeholder="Type of the event" required="required">
+        </p>
+
+        <p>
+            <label for="description">Description</label>
+            <input type="text" width="auto" height = "150px" id="description"
+                   name="description" class="form-control" placeholder="Description of the event">
+        </p>
+
+        <p >
+            <label for="bands">Select band/s</label>
+            <br>
+            <input type="checkbox" id="bands" name="bands"
+                   th:each="b : ${bands}"
+                   th:text="${b.getName()}"
+                   th:value="${b.getId()}">
+            <!--            <button type="button" class="btn btn-primary add-field" onclick="addField()">Add Field</button>-->
+        </p>
+
+        <p>
+            <label for="caterings">Select catering/s</label>
+            <br>
+            <input type="checkbox" id="caterings" name="caterings"
+                   th:each="c : ${caterings}"
+                   th:text="${c.getName()}"
+                   th:value="${c.getId()}">
+        </p>
+
+<!--        <p>-->
+<!--            <label for="number_waiters">Number of waiters</label>-->
+<!--            <input type="text" id="number_waiters" name="number_waiters" class="form-control"-->
+<!--                   placeholder="Number of waiters for the event" required="required">-->
+<!--        </p>-->
+
+        <p>
+            <label for="photographers">Select photographer/s</label>
+            <br>
+            <input type="checkbox" id="photographers" name="photographers"
+                   th:each="p : ${photographers}"
+                   th:text="${p.getName()}"
+                   th:value="${p.getId()}">
+        </p>
+        <button class="btn btn-lg btn-primary btn-block" type="submit">Make a reservation</button>
+    </form>
+</div>
+<br>
+</body>
+</html>
Index: src/main/resources/templates/login.html
===================================================================
--- src/main/resources/templates/login.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/login.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,308 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" lang="">
+<head>
+    <title>Login</title>
+    <head>
+        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+        <style>
+            .navbar {
+                background: darkkhaki;
+            }
+
+            span {
+                color: #b2d7ff;
+                text-decoration: none;
+                background: transparent;
+            }
+
+            ul {
+                text-align: justify;
+                margin-left: 50px;
+                margin-right: 50px;
+
+            }
+
+            body {
+                background-image: url("https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80");
+                background-size: 100%;
+                background-repeat: no-repeat;
+                background-position: center top -150px; /* Adjust the background position to move the image up */
+            }
+
+            .navbar-brand {
+                color: #343a40;
+                font-weight: bold;
+            }
+
+            .nav-link {
+                color: #343a40;
+                font-weight: bold;
+
+            }
+
+            footer {
+                position: fixed;
+                bottom: 0;
+                left: 0;
+                right: 0;
+                background: #111;
+                height: auto;
+                width: 100vw;
+                padding-top: 40px;
+                color: #fff;
+            }
+
+            .footer-content {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                flex-direction: column;
+                text-align: center;
+                height: 80px;
+            }
+
+            .footer-content h3 {
+                font-size: 2.1rem;
+                font-weight: 500;
+                text-transform: capitalize;
+                line-height: 3rem;
+                margin-top: 20px;
+            }
+
+            .footer-content p {
+                max-width: 500px;
+                margin: 10px auto;
+                line-height: 28px;
+                font-size: 14px;
+                color: #cacdd2;
+            }
+
+            .socials {
+                list-style: none;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                margin: 1rem 0 3rem 0;
+            }
+
+            .socials li {
+                margin: 0 10px;
+            }
+
+            .socials a {
+                text-decoration: none;
+                color: #fff;
+                border: 1.1px solid white;
+                padding: 5px;
+                border-radius: 50%;
+            }
+
+            .socials a i {
+                font-size: 1.1rem;
+                width: 20px;
+                transition: color .4s ease;
+            }
+
+            .socials a:hover i {
+                color: aqua;
+            }
+
+            .footer-bottom p {
+                float: left;
+                font-size: 14px;
+                word-spacing: 2px;
+                text-transform: capitalize;
+            }
+
+            .footer-bottom p a {
+                color: #44bae8;
+                font-size: 16px;
+                text-decoration: none;
+            }
+
+            .footer-bottom span {
+                text-transform: uppercase;
+                opacity: .4;
+                font-weight: 200;
+            }
+
+            .footer-menu ul {
+                display: flex;
+            }
+
+            .footer-menu ul li {
+                padding-right: 10px;
+                display: block;
+            }
+
+            .footer-menu ul li a {
+                color: #cfd2d6;
+                text-decoration: none;
+            }
+
+            .footer-menu ul li a:hover {
+                color: #27bcda;
+            }
+
+            @media (max-width: 500px) {
+                .footer-menu ul {
+                    display: flex;
+                    margin-top: 10px;
+                    margin-bottom: 20px;
+                }
+            }
+
+            .kopce {
+                background-color: mediumslateblue;
+                border: none;
+                color: white;
+                padding: 15px 32px;
+                text-align: center;
+                text-decoration: none;
+                display: inline-block;
+                font-size: 16px;
+                margin-left: 20px;
+            }
+
+            /*#logo{*/
+            /*    width:160px;*/
+            /*    height: 60px*/
+            /*}*/
+            h1 {
+                color: black;
+                font-size: 60px;
+                font-weight: 700;
+                letter-spacing: 8px;
+                margin-bottom: 20px;
+                margin-left: auto;
+                margin-right: auto;
+                margin-top: 50px;
+                position: relative;
+                animation: text 3s 1;
+            }
+
+            @keyframes text {
+                0% {
+                    color: black;
+                    margin-bottom: -40px;
+                }
+                30% {
+                    letter-spacing: 25px;
+                    margin-bottom: -40px;
+                }
+                85% {
+                    letter-spacing: 8px;
+                    margin-bottom: -40px;
+                }
+            }
+
+            footer {
+                width: 100%;
+                padding: 20px;
+                box-sizing: border-box;
+            }
+
+            #signInText{
+                color:white;
+                font-weight: 500;
+            }
+        </style>
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <meta charset="UTF-8"/>
+        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+              integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+        <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+                integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+                crossorigin="anonymous"></script>
+        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+                integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+                crossorigin="anonymous"></script>
+        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+                integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+                crossorigin="anonymous"></script>
+    </head>
+
+<body>
+    <div>
+        <nav class="navbar navbar-expand-md ">
+            <div class="container">
+                <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+                <!--                <a class="navbar-brand" href="/home"></a>-->
+                <a class="navbar-brand"> Eventrra</a>
+                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                        aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                    <span class="navbar-toggler-icon"></span>
+                </button>
+
+                <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                    <ul class="navbar-nav m-auto">
+
+                        <li th:if="${session.user!=null}" class="nav-item m-auto">
+                            <a class="nav-link active" href="/">Home</a>
+                        </li>
+
+                        <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                            class="nav-item m-auto">
+                            <a class="kopce" href="/host_event">Host an event</a>
+                        </li>
+                        <li th:if="${session.user!=null}" class="nav-item m-auto">
+                            <a class="nav-link active" href="/my_events">Scheduled events</a>
+                        </li>
+                    </ul>
+
+                    <form class="form-inline my-2 my-lg-0">
+
+                        <div th:if="${session.user==null}">
+                            <a class="btn btn-light btn-sm ml-3" href="/login">
+                                Login
+                            </a>
+
+                            <a class="btn btn-light btn-sm ml-3" href="/register">
+                                Sign up
+                            </a>
+                        </div>
+                        <div style="text-align: center" th:if="${session.user!=null}" class="nav-item m-auto">
+                            <a th:text="${session.user.username}" style="color:white; font-size: 20px;"
+                               class="nav-link active" href="/login/profile"></a>
+                        </div>
+
+                        <div th:if="${session.user!=null}">
+                            <a class="btn btn-light btn-sm ml-3" href="/logout">
+                                Log out
+                            </a>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </nav>
+    </div>
+    <br>
+    <form th:method="POST" th:action="@{/login}">
+        <div class="container">
+            <form class="form-signin mt-xl-5" method="post" action="/login">
+                <h2 class="form-signin-heading" id="signInText">Sign in</h2>
+                <p>
+                    <label for="username" class="sr-only">Username</label>
+                    <input type="text" id="username" name="username" class="form-control" placeholder="Username" required=""
+                           autofocus="">
+                </p>
+                <p>
+                    <label for="password" class="sr-only">Password</label>
+                    <input type="password" id="password" name="password" class="form-control" placeholder="Password"
+                           required="">
+                </p>
+
+                <div th:if="${hasError}">
+                    <div th:text="${error}" class="text-danger"></div>
+                </div>
+            </form>
+            <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
+        </div>
+    </form>
+    <form th:method="GET" th:action="@{/register}">
+        <div>
+            <button class="btn btn-lg btn-light btn-block" type="submit">You don't have an account? Register here</button>
+        </div>
+    </form>
+    <br>
+</body>
+</html>
Index: src/main/resources/templates/more_details.html
===================================================================
--- src/main/resources/templates/more_details.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/more_details.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,319 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <style>
+        .navbar {
+            background: darkkhaki;
+        }
+
+        span {
+            color: #b2d7ff;
+            text-decoration: none;
+            background: transparent;
+        }
+
+        ul {
+            text-align: justify;
+            margin-left: 50px;
+            margin-right: 50px;
+
+        }
+
+        body {
+            background-color: wheat;
+        }
+
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+
+        footer {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            background: #111;
+            height: auto;
+            width: 100vw;
+            padding-top: 40px;
+            color: #fff;
+            box-sizing: border-box;
+        }
+
+        .footer-content {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            text-align: center;
+            height: 80px;
+        }
+
+        .footer-content h3 {
+            font-size: 2.1rem;
+            font-weight: 500;
+            text-transform: capitalize;
+            line-height: 3rem;
+            margin-top: 20px;
+        }
+
+        .footer-content p {
+            max-width: 500px;
+            margin: 10px auto;
+            line-height: 28px;
+            font-size: 14px;
+            color: #cacdd2;
+        }
+
+        .socials {
+            list-style: none;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 1rem 0 3rem 0;
+        }
+
+        .socials li {
+            margin: 0 10px;
+        }
+
+        .socials a {
+            text-decoration: none;
+            color: #fff;
+            border: 1.1px solid white;
+            padding: 5px;
+            border-radius: 50%;
+        }
+
+        .socials a i {
+            font-size: 1.1rem;
+            width: 20px;
+            transition: color .4s ease;
+        }
+
+        .socials a:hover i {
+            color: aqua;
+        }
+
+        .footer-bottom p {
+            float: left;
+            font-size: 14px;
+            word-spacing: 2px;
+            text-transform: capitalize;
+        }
+
+        .footer-bottom p a {
+            color: #44bae8;
+            font-size: 16px;
+            text-decoration: none;
+        }
+
+        .footer-bottom span {
+            text-transform: uppercase;
+            opacity: .4;
+            font-weight: 200;
+        }
+
+        .footer-menu ul {
+            display: flex;
+        }
+
+        .footer-menu ul li {
+            padding-right: 10px;
+            display: block;
+        }
+
+        .footer-menu ul li a {
+            color: #cfd2d6;
+            text-decoration: none;
+        }
+
+        .footer-menu ul li a:hover {
+            color: #27bcda;
+        }
+
+        @media (max-width: 500px) {
+            .footer-menu ul {
+                display: flex;
+                margin-top: 10px;
+                margin-bottom: 20px;
+            }
+        }
+
+        .kopce {
+            background-color: mediumslateblue;
+            border: none;
+            color: white;
+            padding: 15px 32px;
+            text-align: center;
+            text-decoration: none;
+            display: inline-block;
+            font-size: 16px;
+            margin-left: 20px;
+        }
+
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+        h1 {
+            font-size: 1rem;
+            font-weight: 200;
+            /*letter-spacing: 8px;*/
+            margin-left: 20px;
+            margin-right: 20px;
+            position: relative;
+            background-color: #343a40;
+        }
+
+        p, table {
+            margin-left: 40px;
+            font-size: 20px;
+        }
+
+        @keyframes text {
+            0% {
+                color: black;
+                margin-bottom: -40px;
+            }
+            30% {
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85% {
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+    </style>
+
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta charset="UTF-8">
+    <title>My events</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+            crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+            integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+            crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+            integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+            crossorigin="anonymous"></script>
+</head>
+<body>
+    <div>
+        <nav class="navbar navbar-expand-md ">
+            <div class="container">
+                <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+                <!--                <a class="navbar-brand" href="/home"></a>-->
+                <a class="navbar-brand" style="color: yellow"> Eventrra</a>
+                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                        aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                    <span class="navbar-toggler-icon"></span>
+                </button>
+
+                <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                    <ul class="navbar-nav m-auto">
+
+                        <li th:if="${session.user!=null}" class="nav-item m-auto">
+                            <a class="nav-link active" href="/">Home</a>
+                        </li>
+
+                        <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                            class="nav-item m-auto">
+                            <a class="kopce" href="/host_event">Host an event</a>
+                        </li>
+                        <li th:if="${session.user!=null}" class="nav-item m-auto">
+                            <a class="nav-link active" href="/my_events">Scheduled events</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+        </nav>
+    </div>
+    <br>
+    <br>
+    <div>
+        <div>
+            <h1>Time</h1>
+            <p th:text="${event.getTime()}"></p>
+
+            <h1>Date</h1>
+            <p th:text="${event.getDate()}"></p>
+
+            <h1>Location</h1>
+            <p th:text="${event.getLocation()}"></p>
+
+            <h1>Type</h1>
+            <p th:text="${event.getType()}"></p>
+
+            <h1>Description</h1>
+            <p th:text="${event.getDescription()}"></p>
+
+            <h1>Bands</h1>
+            <table>
+                <tr th:each="band : ${bandList}">
+                    <td th:text="${band}"></td>
+                </tr>
+            </table>
+
+            <h1>Caterings</h1>
+            <table>
+                <tr th:each="cat : ${cateringList}">
+                    <td th:text="${cat}"></td>
+                </tr>
+            </table>
+
+            <h1>Photographers</h1>
+            <table>
+                <tr th:each="ph : ${photographerList}">
+                    <td th:text="${ph}"></td>
+                </tr>
+            </table>
+
+            <h1>Status</h1>
+            <p th:text="${event.getStatus()}"></p>
+
+            <form method="post" th:if="${session.role == 'ROLE_ADMIN'}"
+                  th:action="@{'/approveEvent/{id}' (id=${event.getId()}) }">
+                <button class="btn btn-primary btn-block btn-lg" type="submit">Approve Event</button>
+            </form>
+            <br>
+            <form method="post" th:if="${session.role == 'ROLE_ADMIN'}"
+                  th:action="@{'/rejectEvent/{id}' (id=${event.getId()}) }">
+                <button class="btn btn-primary btn-block btn-lg" type="submit">Reject Event</button>
+            </form>
+            <br>
+        </div>
+        <br>
+        <br>
+        <br>
+        <br>
+        <br>
+    </div>
+    <footer>
+        <div class="footer-content">
+            <br>
+            <h3>Contact us</h3>
+
+            <ul class="socials">
+                <li><a href="#"><i class="fa fa-facebook"></i></a></li>
+                <li><a href="#"><i class="fa fa-twitter"></i></a></li>
+                <li><a href="#"><i class="fa fa-google-plus"></i></a></li>
+                <li><a href="#"><i class="fa fa-youtube"></i></a></li>
+                <li><a href="#"><i class="fa fa-linkedin-square"></i></a></li>
+            </ul>
+        </div>
+    </footer>
+</body>
+</html>
Index: src/main/resources/templates/my_events.html
===================================================================
--- src/main/resources/templates/my_events.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/my_events.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,324 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <style>
+        .navbar{
+            background: darkkhaki;
+        }
+        span{
+            color: #b2d7ff;
+            text-decoration: none;
+            background: transparent;
+        }
+        ul{
+            text-align: justify;
+            margin-left: 50px;
+            margin-right: 50px;
+
+        }
+        body{
+            background-color: wheat;
+        }
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+        footer{
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            background: #111;
+            height: auto;
+            width: 100vw;
+            padding-top: 40px;
+            color: #fff;
+        }
+        .footer-content{
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            text-align: center;
+            height: 80px;
+        }
+        .footer-content h3{
+            font-size: 2.1rem;
+            font-weight: 500;
+            text-transform: capitalize;
+            line-height: 3rem;
+            margin-top: 20px;
+        }
+        .footer-content p{
+            max-width: 500px;
+            margin: 10px auto;
+            line-height: 28px;
+            font-size: 14px;
+            color: #cacdd2;
+        }
+        .socials{
+            list-style: none;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 1rem 0 3rem 0;
+        }
+        .socials li{
+            margin: 0 10px;
+        }
+        .socials a{
+            text-decoration: none;
+            color: #fff;
+            border: 1.1px solid white;
+            padding: 5px;
+            border-radius: 50%;
+        }
+        .socials a i{
+            font-size: 1.1rem;
+            width: 20px;
+            transition: color .4s ease;
+        }
+        .socials a:hover i{
+            color: aqua;
+        }
+        .footer-bottom p{
+            float: left;
+            font-size: 14px;
+            word-spacing: 2px;
+            text-transform: capitalize;
+        }
+        .footer-bottom p a{
+            color:#44bae8;
+            font-size: 16px;
+            text-decoration: none;
+        }
+        .footer-bottom span{
+            text-transform: uppercase;
+            opacity: .4;
+            font-weight: 200;
+        }
+        .footer-menu ul{
+            display: flex;
+        }
+        .footer-menu ul li{
+            padding-right: 10px;
+            display: block;
+        }
+        .footer-menu ul li a{
+            color: #cfd2d6;
+            text-decoration: none;
+        }
+        .footer-menu ul li a:hover{
+            color: #27bcda;
+        }
+        @media (max-width:500px) {
+            .footer-menu ul{
+                display: flex;
+                margin-top: 10px;
+                margin-bottom: 20px;
+            }
+        }
+        .kopce{
+            background-color: mediumslateblue;
+            border: none;
+            color: white;
+            padding: 15px 32px;
+            text-align: center;
+            text-decoration: none;
+            display: inline-block;
+            font-size: 16px;
+            margin-left: 20px;
+        }
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+        h1{
+            color: black;
+            font-size: 60px;
+            font-weight: 700;
+            letter-spacing: 8px;
+            margin-bottom: 20px;
+            margin-left:auto;
+            margin-right:auto;
+            margin-top:50px;
+            position: relative;
+            animation: text 3s 1;
+        }
+        @keyframes text {
+            0%{
+                color: black;
+                margin-bottom: -40px;
+            }
+            30%{
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85%{
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+        footer{
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
+        }
+    </style>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta charset="UTF-8">
+    <title>My events</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
+</head>
+<body>
+    <div>
+        <nav class="navbar navbar-expand-md ">
+            <div  class="container">
+                <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+                <!--                <a class="navbar-brand" href="/home"></a>-->
+                <a class="navbar-brand"> Eventrra</a>
+                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                        aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                    <span class="navbar-toggler-icon"></span>
+                </button>
+
+                <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                    <ul class="navbar-nav m-auto">
+
+                        <li th:if="${session.user!=null}" class="nav-item m-auto">
+                            <a  class="nav-link active" href="/">Home</a>
+                        </li>
+
+                        <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                            class="nav-item m-auto">
+                            <a class="kopce" href="/host_event">Host an event</a>
+                        </li>
+                        <li th:if="${session.user!=null}" class="nav-item m-auto">
+                            <a class="nav-link active" href="/my_events">Scheduled events</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+        </nav>
+    </div>
+
+    <div class="container mb-4">
+        <div class="row">
+            <div class="col-12">
+                <div class="table-responsive">
+                    <table class="table table-striped">
+                        <thead class="thead-dark">
+                        <tr>
+                            <th scope="col">Time</th>
+                            <th scope="col">Date</th>
+                            <th scope="col">Status</th>
+                            <th scope="col"></th>
+                        </tr>
+                        </thead>
+                        <tbody>
+                        <tr th:each="event : ${events}" class="event">
+                            <td th:text="${event.getTime()}"></td>
+                            <td th:text="${event.getDate()}"></td>
+                            <td th:text="${event.getStatus()}">
+                            <td>
+                                <form method="get" th:action="@{'/event/{id}' (id=${event.getId()}) }">
+                                    <button class="btn btn-primary btn-block btn-lg" type="submit">Details</button>
+                                </form>
+                            </td>
+    <!--                        <td class="text-right">-->
+    <!--                            <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
+    <!--                                <form th:action="@{'/products/delete/{id}' (id=${product.getId()})}"-->
+    <!--                                      th:method="DELETE">-->
+    <!--                                    <button type="submit"-->
+    <!--                                            class="btn btn-sm btn-danger delete-product">-->
+    <!--                                        <i class="fa fa-trash">Delete</i>-->
+    <!--                                    </button>-->
+    <!--                                </form>-->
+    <!--                            </th:block>-->
+    <!--                            <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
+    <!--                                <a th:href="@{'/products/edit-form/{id}' (id=${product.getId()})}"-->
+    <!--                                   class="btn btn-sm btn-info edit-product">-->
+    <!--                                    <i class="fa fa-trash">Edit</i>-->
+    <!--                                </a>-->
+    <!--                            </th:block>-->
+    <!--                            <form th:action="@{'/shopping-cart/add-product/{id}' (id=${product.getId()})}"-->
+    <!--                                  th:method="POST"-->
+    <!--                                  sec:authorize="isAuthenticated()">-->
+    <!--                                <button type="submit"-->
+    <!--                                        class="btn btn-sm btn-primary cart-product">-->
+    <!--                                    <i class="fa fa-trash">Add product to cart</i>-->
+    <!--                                </button>-->
+    <!--                            </form>-->
+    <!--                        </td>-->
+                        </tr>
+                        </tbody>
+                    </table>
+                    <br>
+                    <br>
+                    <br>
+                    <br>
+                </div>
+            </div>
+    <!--        <div class="col mb-3">-->
+    <!--            <div class="row">-->
+    <!--                <div class="col-sm-12 col-md-12" sec:authorize="hasRole('ROLE_ADMIN')">-->
+    <!--                    <a href="/products/add-form" class="btn btn-block btn-dark add-product-btn">-->
+    <!--                        Add new product-->
+    <!--                    </a>-->
+    <!--                </div>-->
+    <!--            </div>-->
+    <!--        </div>-->
+        </div>
+    </div>
+
+    <footer>
+        <div class="footer-content">
+            <br>
+            <h3>Contact us</h3>
+
+            <ul class="socials">
+                <li><a href="#"><i class="fa fa-facebook"></i></a></li>
+                <li><a href="#"><i class="fa fa-twitter"></i></a></li>
+                <li><a href="#"><i class="fa fa-google-plus"></i></a></li>
+                <li><a href="#"><i class="fa fa-youtube"></i></a></li>
+                <li><a href="#"><i class="fa fa-linkedin-square"></i></a></li>
+            </ul>
+        </div>
+    </footer>
+<!--<div>-->
+<!--    <h1 class="mt-3 mb-3">My events</h1>-->
+<!--    <table class="table table-bordered">-->
+<!--        <thead class="thead-dark">-->
+<!--        <tr>-->
+<!--            <th>Time</th>-->
+<!--            <th>Date</th>-->
+<!--            <th>Location</th>-->
+<!--            <th>Type</th>-->
+<!--            <th>Description</th>-->
+<!--            <th>Status</th>-->
+<!--        </tr>-->
+<!--        </thead>-->
+<!--        <tbody>-->
+<!--        <tr th:each="event : ${events}">-->
+<!--            <td th:text="${event.getTime()}"></td>-->
+<!--            <td th:text="${event.getDate()}"></td>-->
+<!--            <td th:text="${event.location}"></td>-->
+<!--            <td th:text="${event.getType()}"></td>-->
+<!--            <td th:text="${event.getDescription()}"></td>-->
+<!--            <td th:text="${event.getStatus()}"></td>-->
+<!--        </tr>-->
+<!--        </tbody>-->
+<!--    </table>-->
+<!--</div>-->
+</body>
+</html>
Index: src/main/resources/templates/register.html
===================================================================
--- src/main/resources/templates/register.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/register.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,327 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+    <style>
+        .navbar {
+            background: darkkhaki;
+        }
+
+        span {
+            color: #b2d7ff;
+            text-decoration: none;
+            background: transparent;
+        }
+
+        ul {
+            text-align: justify;
+            margin-left: 50px;
+            margin-right: 50px;
+
+        }
+
+        body {
+            background-image: url("https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80");
+            background-size: 100%;
+            background-repeat: no-repeat;
+            background-position: center top -150px; /* Adjust the background position to move the image up */
+        }
+
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+
+        footer {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            background: #111;
+            height: auto;
+            width: 100vw;
+            padding-top: 40px;
+            color: #fff;
+        }
+
+        .footer-content {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            text-align: center;
+            height: 80px;
+        }
+
+        .footer-content h3 {
+            font-size: 2.1rem;
+            font-weight: 500;
+            text-transform: capitalize;
+            line-height: 3rem;
+            margin-top: 20px;
+        }
+
+        .footer-content p {
+            max-width: 500px;
+            margin: 10px auto;
+            line-height: 28px;
+            font-size: 14px;
+            color: #cacdd2;
+        }
+
+        .socials {
+            list-style: none;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 1rem 0 3rem 0;
+        }
+
+        .socials li {
+            margin: 0 10px;
+        }
+
+        .socials a {
+            text-decoration: none;
+            color: #fff;
+            border: 1.1px solid white;
+            padding: 5px;
+            border-radius: 50%;
+        }
+
+        .socials a i {
+            font-size: 1.1rem;
+            width: 20px;
+            transition: color .4s ease;
+        }
+
+        .socials a:hover i {
+            color: aqua;
+        }
+
+        .footer-bottom p {
+            float: left;
+            font-size: 14px;
+            word-spacing: 2px;
+            text-transform: capitalize;
+        }
+
+        .footer-bottom p a {
+            color: #44bae8;
+            font-size: 16px;
+            text-decoration: none;
+        }
+
+        .footer-bottom span {
+            text-transform: uppercase;
+            opacity: .4;
+            font-weight: 200;
+        }
+
+        .footer-menu ul {
+            display: flex;
+        }
+
+        .footer-menu ul li {
+            padding-right: 10px;
+            display: block;
+        }
+
+        .footer-menu ul li a {
+            color: #cfd2d6;
+            text-decoration: none;
+        }
+
+        .footer-menu ul li a:hover {
+            color: #27bcda;
+        }
+
+        @media (max-width: 500px) {
+            .footer-menu ul {
+                display: flex;
+                margin-top: 10px;
+                margin-bottom: 20px;
+            }
+        }
+
+        .kopce {
+            background-color: mediumslateblue;
+            border: none;
+            color: white;
+            padding: 15px 32px;
+            text-align: center;
+            text-decoration: none;
+            display: inline-block;
+            font-size: 16px;
+            margin-left: 20px;
+        }
+
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+
+        h1 {
+            color: black;
+            font-size: 60px;
+            font-weight: 700;
+            letter-spacing: 8px;
+            margin-bottom: 20px;
+            margin-left: auto;
+            margin-right: auto;
+            margin-top: 50px;
+            position: relative;
+            animation: text 3s 1;
+        }
+
+        @keyframes text {
+            0% {
+                color: black;
+                margin-bottom: -40px;
+            }
+            30% {
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85% {
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+
+        footer {
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
+        }
+
+        #signUpText{
+            color: white;
+            font-weight: 500;
+        }
+    </style>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta charset="UTF-8"/>
+    <title>Sign Up</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+            crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+            integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+            crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+            integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+            crossorigin="anonymous"></script>
+</head>
+
+<body>
+<div>
+    <nav class="navbar navbar-expand-md ">
+        <div class="container">
+            <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+            <!--                <a class="navbar-brand" href="/home"></a>-->
+            <a class="navbar-brand"> Eventrra</a>
+            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+
+            <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                <ul class="navbar-nav m-auto">
+
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/">Home</a>
+                    </li>
+
+                    <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                        class="nav-item m-auto">
+                        <a class="kopce" href="/host_event">Host an event</a>
+                    </li>
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/my_events">Scheduled events</a>
+                    </li>
+                </ul>
+
+                <form class="form-inline my-2 my-lg-0">
+
+                    <div th:if="${session.user==null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/login">
+                            Login
+                        </a>
+
+                        <a class="btn btn-light btn-sm ml-3" href="/register">
+                            Sign up
+                        </a>
+                    </div>
+                    <div style="text-align: center" th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a th:text="${session.user.username}" style="color:white; font-size: 20px;"
+                           class="nav-link active" href="/login/profile"></a>
+                    </div>
+
+                    <div th:if="${session.user!=null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/logout">
+                            Log out
+                        </a>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </nav>
+</div>
+    <br>
+    <form th:method="POST" th:action="@{/register}">
+        <div class="container">
+            <form class="form-signin mt-xl-5" method="post" action="/register">
+                <h2 class="form-signin-heading" id="signUpText">Register</h2>
+                <p>
+                    <label for="name" class="sr-only">Name</label>
+                    <input type="text" id="name" name="name" class="form-control" placeholder="Name" required="" autofocus="">
+                </p>
+                <p>
+                    <label for="username" class="sr-only">Username</label>
+                    <input type="text" id="username" name="username" class="form-control" placeholder="Username" required="" autofocus="">
+                </p>
+                <p>
+                    <label  class="sr-only">Phone number</label>
+                    <input type="text" id="phone" name="number" class="form-control" placeholder="Phone" required="" autofocus="">
+                </p>
+                <p>
+                    <label for="password" class="sr-only">Password</label>
+                    <input type="password" id="password" name="password" class="form-control" placeholder="Password" required="">
+                </p>
+                <p>
+                    <label for="rpassword" class="sr-only">Repeat Password</label>
+                    <input type="password" id="rpassword" name="rpassword" class="form-control" placeholder="Repeat Password" required="">
+                </p>
+                <p>
+                    <label for="role" class="sr-only">
+                        Choose a role
+                    </label>
+                    <select class="form-control" id="role" name="role" required>
+                        <option value="client">Client</option>
+                        <option value="band">Band</option>
+                        <option value="photographer">Photographer</option>
+                        <option value="waiter">Waiter</option>
+                        <option value="catering">Catering Company</option>
+                    </select>
+                </p>
+
+                <div th:if="${hasError}">
+                    <div th:text="${error}" class="text-danger"></div>
+                </div>
+            </form>
+            <button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
+        </div>
+    </form>
+    <br>
+    <a href="/login" class="btn btn-lg btn-block btn-light">Already have an account? Login here!</a>
+</body>
+</html>
Index: src/main/resources/templates/registerBand.html
===================================================================
--- src/main/resources/templates/registerBand.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/registerBand.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,284 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+    <style>
+        .navbar {
+            background: darkkhaki;
+        }
+
+        span {
+            color: #b2d7ff;
+            text-decoration: none;
+            background: transparent;
+        }
+
+        ul {
+            text-align: justify;
+            margin-left: 50px;
+            margin-right: 50px;
+
+        }
+
+        body {
+            background-image: url("https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80");
+            background-size: 100%;
+            background-repeat: no-repeat;
+            background-position: center top -150px; /* Adjust the background position to move the image up */
+        }
+
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+
+        footer {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            background: #111;
+            height: auto;
+            width: 100vw;
+            padding-top: 40px;
+            color: #fff;
+        }
+
+        .footer-content {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            text-align: center;
+            height: 80px;
+        }
+
+        .footer-content h3 {
+            font-size: 2.1rem;
+            font-weight: 500;
+            text-transform: capitalize;
+            line-height: 3rem;
+            margin-top: 20px;
+        }
+
+        .footer-content p {
+            max-width: 500px;
+            margin: 10px auto;
+            line-height: 28px;
+            font-size: 14px;
+            color: #cacdd2;
+        }
+
+        .socials {
+            list-style: none;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 1rem 0 3rem 0;
+        }
+
+        .socials li {
+            margin: 0 10px;
+        }
+
+        .socials a {
+            text-decoration: none;
+            color: #fff;
+            border: 1.1px solid white;
+            padding: 5px;
+            border-radius: 50%;
+        }
+
+        .socials a i {
+            font-size: 1.1rem;
+            width: 20px;
+            transition: color .4s ease;
+        }
+
+        .socials a:hover i {
+            color: aqua;
+        }
+
+        .footer-bottom p {
+            float: left;
+            font-size: 14px;
+            word-spacing: 2px;
+            text-transform: capitalize;
+        }
+
+        .footer-bottom p a {
+            color: #44bae8;
+            font-size: 16px;
+            text-decoration: none;
+        }
+
+        .footer-bottom span {
+            text-transform: uppercase;
+            opacity: .4;
+            font-weight: 200;
+        }
+
+        .footer-menu ul {
+            display: flex;
+        }
+
+        .footer-menu ul li {
+            padding-right: 10px;
+            display: block;
+        }
+
+        .footer-menu ul li a {
+            color: #cfd2d6;
+            text-decoration: none;
+        }
+
+        .footer-menu ul li a:hover {
+            color: #27bcda;
+        }
+
+        @media (max-width: 500px) {
+            .footer-menu ul {
+                display: flex;
+                margin-top: 10px;
+                margin-bottom: 20px;
+            }
+        }
+
+        .kopce {
+            background-color: mediumslateblue;
+            border: none;
+            color: white;
+            padding: 15px 32px;
+            text-align: center;
+            text-decoration: none;
+            display: inline-block;
+            font-size: 16px;
+            margin-left: 20px;
+        }
+
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+        h1 {
+            color: white;
+            font-size: 60px;
+            font-weight: 500;
+            /*letter-spacing: 8px;*/
+            margin-bottom: 20px;
+            margin-left: 20px;
+            margin-right: auto;
+            margin-top: 50px;
+            position: relative;
+
+        form-signin mt-xl-5{
+            margin-left: 40px;
+        }
+
+        @keyframes text {
+            0% {
+                color: black;
+                margin-bottom: -40px;
+            }
+            30% {
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85% {
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+
+        footer {
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
+        }
+    </style>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta charset="UTF-8"/>
+    <title>Sign Up</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+            crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+            integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+            crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+            integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+            crossorigin="anonymous"></script>
+</head>
+
+<body>
+<div>
+    <nav class="navbar navbar-expand-md ">
+        <div class="container">
+            <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+            <!--                <a class="navbar-brand" href="/home"></a>-->
+            <a class="navbar-brand"> Eventrra</a>
+            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+
+            <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                <ul class="navbar-nav m-auto">
+
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/">Home</a>
+                    </li>
+
+                    <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                        class="nav-item m-auto">
+                        <a class="kopce" href="/host_event">Host an event</a>
+                    </li>
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/my_events">Scheduled events</a>
+                    </li>
+                </ul>
+
+                <form class="form-inline my-2 my-lg-0">
+
+                    <div th:if="${session.user==null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/login">
+                            Login
+                        </a>
+
+                        <a class="btn btn-light btn-sm ml-3" href="/register">
+                            Sign up
+                        </a>
+                    </div>
+                    <div style="text-align: center" th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a th:text="${session.user.username}" style="color:white; font-size: 20px;"
+                           class="nav-link active" href="/login/profile"></a>
+                    </div>
+
+                    <div th:if="${session.user!=null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/logout">
+                            Log out
+                        </a>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </nav>
+</div>
+    <div>
+        <h1 class="mt-3 mb-3">Insert data</h1>
+        <form class="form-signin mt-xl-5" method="post" action="/finishRegisterBand">
+            <label for="price">Price</label>
+            <input type="number" name="price" id="price" placeholder="Insert price" th:value="${price}">
+            <button type="submit" class="btn btn-primary btn-lg btn-block">Finish</button>
+        </form>
+    </div>
+</body>
+</html>
Index: src/main/resources/templates/registerCatering.html
===================================================================
--- src/main/resources/templates/registerCatering.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/registerCatering.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,288 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+    <style>
+        .navbar {
+            background: darkkhaki;
+        }
+
+        span {
+            color: #b2d7ff;
+            text-decoration: none;
+            background: transparent;
+        }
+
+        ul {
+            text-align: justify;
+            margin-left: 50px;
+            margin-right: 50px;
+
+        }
+
+        body {
+            background-image: url("https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80");
+            background-size: 100%;
+            background-repeat: no-repeat;
+            background-position: center top -150px; /* Adjust the background position to move the image up */
+        }
+
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+
+        footer {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            background: #111;
+            height: auto;
+            width: 100vw;
+            padding-top: 40px;
+            color: #fff;
+        }
+
+        .footer-content {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            text-align: center;
+            height: 80px;
+        }
+
+        .footer-content h3 {
+            font-size: 2.1rem;
+            font-weight: 500;
+            text-transform: capitalize;
+            line-height: 3rem;
+            margin-top: 20px;
+        }
+
+        .footer-content p {
+            max-width: 500px;
+            margin: 10px auto;
+            line-height: 28px;
+            font-size: 14px;
+            color: #cacdd2;
+        }
+
+        .socials {
+            list-style: none;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 1rem 0 3rem 0;
+        }
+
+        .socials li {
+            margin: 0 10px;
+        }
+
+        .socials a {
+            text-decoration: none;
+            color: #fff;
+            border: 1.1px solid white;
+            padding: 5px;
+            border-radius: 50%;
+        }
+
+        .socials a i {
+            font-size: 1.1rem;
+            width: 20px;
+            transition: color .4s ease;
+        }
+
+        .socials a:hover i {
+            color: aqua;
+        }
+
+        .footer-bottom p {
+            float: left;
+            font-size: 14px;
+            word-spacing: 2px;
+            text-transform: capitalize;
+        }
+
+        .footer-bottom p a {
+            color: #44bae8;
+            font-size: 16px;
+            text-decoration: none;
+        }
+
+        .footer-bottom span {
+            text-transform: uppercase;
+            opacity: .4;
+            font-weight: 200;
+        }
+
+        .footer-menu ul {
+            display: flex;
+        }
+
+        .footer-menu ul li {
+            padding-right: 10px;
+            display: block;
+        }
+
+        .footer-menu ul li a {
+            color: #cfd2d6;
+            text-decoration: none;
+        }
+
+        .footer-menu ul li a:hover {
+            color: #27bcda;
+        }
+
+        @media (max-width: 500px) {
+            .footer-menu ul {
+                display: flex;
+                margin-top: 10px;
+                margin-bottom: 20px;
+            }
+        }
+
+        .kopce {
+            background-color: mediumslateblue;
+            border: none;
+            color: white;
+            padding: 15px 32px;
+            text-align: center;
+            text-decoration: none;
+            display: inline-block;
+            font-size: 16px;
+            margin-left: 20px;
+        }
+
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+        h1 {
+            color: white;
+            font-size: 60px;
+            font-weight: 500;
+            /*letter-spacing: 8px;*/
+            margin-bottom: 20px;
+            margin-left: 20px;
+            margin-right: auto;
+            margin-top: 50px;
+            position: relative;
+        }
+
+        form-signin mt-xl-5{
+            margin-left: 40px;
+        }
+
+        @keyframes text {
+            0% {
+                color: black;
+                margin-bottom: -40px;
+            }
+            30% {
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85% {
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+
+        footer {
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
+        }
+    </style>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta charset="UTF-8"/>
+    <title>Sign Up</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+            crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+            integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+            crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+            integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+            crossorigin="anonymous"></script>
+</head>
+<body>
+<div>
+    <nav class="navbar navbar-expand-md ">
+        <div class="container">
+            <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+            <!--                <a class="navbar-brand" href="/home"></a>-->
+            <a class="navbar-brand"> Eventrra</a>
+            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+
+            <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                <ul class="navbar-nav m-auto">
+
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/">Home</a>
+                    </li>
+
+                    <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                        class="nav-item m-auto">
+                        <a class="kopce" href="/host_event">Host an event</a>
+                    </li>
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/my_events">Scheduled events</a>
+                    </li>
+                </ul>
+
+                <form class="form-inline my-2 my-lg-0">
+
+                    <div th:if="${session.user==null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/login">
+                            Login
+                        </a>
+
+                        <a class="btn btn-light btn-sm ml-3" href="/register">
+                            Sign up
+                        </a>
+                    </div>
+                    <div style="text-align: center" th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a th:text="${session.user.username}" style="color:white; font-size: 20px;"
+                           class="nav-link active" href="/login/profile"></a>
+                    </div>
+
+                    <div th:if="${session.user!=null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/logout">
+                            Log out
+                        </a>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </nav>
+</div>
+<div>
+    <h1 class="mt-3 mb-3">Insert data</h1>
+    <form class="form-signin mt-xl-5" method="post" action="/finishRegisterCatering">
+        <label for="price">Price</label>
+        <input type="number" name="price" id="price" placeholder="Insert price" th:value="${price}">
+
+        <label for="address">Address</label>
+        <input type="text" name="address" id="address" placeholder="Insert address" th:value="${address}">
+
+        <button type="submit" class="btn btn-primary btn-lg btn-block">Finish</button>
+    </form>
+</div>
+</body>
+</html>
Index: src/main/resources/templates/registerPhotographer.html
===================================================================
--- src/main/resources/templates/registerPhotographer.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/registerPhotographer.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,288 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+    <style>
+        .navbar {
+            background: darkkhaki;
+        }
+
+        span {
+            color: #b2d7ff;
+            text-decoration: none;
+            background: transparent;
+        }
+
+        ul {
+            text-align: justify;
+            margin-left: 50px;
+            margin-right: 50px;
+
+        }
+
+        body {
+            background-image: url("https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80");
+            background-size: 100%;
+            background-repeat: no-repeat;
+            background-position: center top -150px; /* Adjust the background position to move the image up */
+        }
+
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+
+        footer {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            background: #111;
+            height: auto;
+            width: 100vw;
+            padding-top: 40px;
+            color: #fff;
+        }
+
+        .footer-content {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            text-align: center;
+            height: 80px;
+        }
+
+        .footer-content h3 {
+            font-size: 2.1rem;
+            font-weight: 500;
+            text-transform: capitalize;
+            line-height: 3rem;
+            margin-top: 20px;
+        }
+
+        .footer-content p {
+            max-width: 500px;
+            margin: 10px auto;
+            line-height: 28px;
+            font-size: 14px;
+            color: #cacdd2;
+        }
+
+        .socials {
+            list-style: none;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 1rem 0 3rem 0;
+        }
+
+        .socials li {
+            margin: 0 10px;
+        }
+
+        .socials a {
+            text-decoration: none;
+            color: #fff;
+            border: 1.1px solid white;
+            padding: 5px;
+            border-radius: 50%;
+        }
+
+        .socials a i {
+            font-size: 1.1rem;
+            width: 20px;
+            transition: color .4s ease;
+        }
+
+        .socials a:hover i {
+            color: aqua;
+        }
+
+        .footer-bottom p {
+            float: left;
+            font-size: 14px;
+            word-spacing: 2px;
+            text-transform: capitalize;
+        }
+
+        .footer-bottom p a {
+            color: #44bae8;
+            font-size: 16px;
+            text-decoration: none;
+        }
+
+        .footer-bottom span {
+            text-transform: uppercase;
+            opacity: .4;
+            font-weight: 200;
+        }
+
+        .footer-menu ul {
+            display: flex;
+        }
+
+        .footer-menu ul li {
+            padding-right: 10px;
+            display: block;
+        }
+
+        .footer-menu ul li a {
+            color: #cfd2d6;
+            text-decoration: none;
+        }
+
+        .footer-menu ul li a:hover {
+            color: #27bcda;
+        }
+
+        @media (max-width: 500px) {
+            .footer-menu ul {
+                display: flex;
+                margin-top: 10px;
+                margin-bottom: 20px;
+            }
+        }
+
+        .kopce {
+            background-color: mediumslateblue;
+            border: none;
+            color: white;
+            padding: 15px 32px;
+            text-align: center;
+            text-decoration: none;
+            display: inline-block;
+            font-size: 16px;
+            margin-left: 20px;
+        }
+
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+        h1 {
+            color: white;
+            font-size: 60px;
+            font-weight: 500;
+            /*letter-spacing: 8px;*/
+            margin-bottom: 20px;
+            margin-left: 20px;
+            margin-right: auto;
+            margin-top: 50px;
+            position: relative;
+        }
+
+        form-signin mt-xl-5{
+            margin-left: 40px;
+        }
+
+        @keyframes text {
+            0% {
+                color: black;
+                margin-bottom: -40px;
+            }
+            30% {
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85% {
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+
+        footer {
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
+        }
+    </style>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta charset="UTF-8"/>
+    <title>Sign Up</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+            crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+            integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+            crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+            integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+            crossorigin="anonymous"></script>
+</head>
+<body>
+<div>
+    <nav class="navbar navbar-expand-md ">
+        <div class="container">
+            <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+            <!--                <a class="navbar-brand" href="/home"></a>-->
+            <a class="navbar-brand"> Eventrra</a>
+            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+
+            <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                <ul class="navbar-nav m-auto">
+
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/">Home</a>
+                    </li>
+
+                    <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                        class="nav-item m-auto">
+                        <a class="kopce" href="/host_event">Host an event</a>
+                    </li>
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/my_events">Scheduled events</a>
+                    </li>
+                </ul>
+
+                <form class="form-inline my-2 my-lg-0">
+
+                    <div th:if="${session.user==null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/login">
+                            Login
+                        </a>
+
+                        <a class="btn btn-light btn-sm ml-3" href="/register">
+                            Sign up
+                        </a>
+                    </div>
+                    <div style="text-align: center" th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a th:text="${session.user.username}" style="color:white; font-size: 20px;"
+                           class="nav-link active" href="/login/profile"></a>
+                    </div>
+
+                    <div th:if="${session.user!=null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/logout">
+                            Log out
+                        </a>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </nav>
+</div>
+<div>
+    <h1 class="mt-3 mb-3">Insert data</h1>
+    <form class="form-signin mt-xl-5" method="post" action="/finishRegisterPhotographer">
+        <label for="price">Price</label>
+        <input type="number" name="price" id="price" placeholder="Insert price" th:value="${price}">
+        <label for="portfolio">Portfolio</label>
+        <input type="text" width="400px" height="100px" name="portfolio" id="portfolio" placeholder="Insert portfolio" th:value="${portfolio}">
+        <button type="submit" class="btn btn-primary btn-lg btn-block">Finish</button>
+    </form>
+
+
+</div>
+</body>
+</html>
Index: src/main/resources/templates/registerWaiter.html
===================================================================
--- src/main/resources/templates/registerWaiter.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
+++ src/main/resources/templates/registerWaiter.html	(revision a51a591b1eec04fb1d9d9128cf341696beef9312)
@@ -0,0 +1,296 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
+    <style>
+        .navbar {
+            background: darkkhaki;
+        }
+
+        span {
+            color: #b2d7ff;
+            text-decoration: none;
+            background: transparent;
+        }
+
+        ul {
+            text-align: justify;
+            margin-left: 50px;
+            margin-right: 50px;
+
+        }
+
+        body {
+            background-image: url("https://images.unsplash.com/photo-1511795409834-ef04bbd61622?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=869&q=80");
+            background-size: 100%;
+            background-repeat: no-repeat;
+            background-position: center top -150px; /* Adjust the background position to move the image up */
+        }
+
+        .navbar-brand {
+            color: #343a40;
+            font-weight: bold;
+        }
+
+        .nav-link {
+            color: #343a40;
+            font-weight: bold;
+
+        }
+
+        footer {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            background: #111;
+            height: auto;
+            width: 100vw;
+            padding-top: 40px;
+            color: #fff;
+        }
+
+        .footer-content {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            text-align: center;
+            height: 80px;
+        }
+
+        .footer-content h3 {
+            font-size: 2.1rem;
+            font-weight: 500;
+            text-transform: capitalize;
+            line-height: 3rem;
+            margin-top: 20px;
+        }
+
+        .footer-content p {
+            max-width: 500px;
+            margin: 10px auto;
+            line-height: 28px;
+            font-size: 14px;
+            color: #cacdd2;
+        }
+
+        .socials {
+            list-style: none;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 1rem 0 3rem 0;
+        }
+
+        .socials li {
+            margin: 0 10px;
+        }
+
+        .socials a {
+            text-decoration: none;
+            color: #fff;
+            border: 1.1px solid white;
+            padding: 5px;
+            border-radius: 50%;
+        }
+
+        .socials a i {
+            font-size: 1.1rem;
+            width: 20px;
+            transition: color .4s ease;
+        }
+
+        .socials a:hover i {
+            color: aqua;
+        }
+
+        .footer-bottom p {
+            float: left;
+            font-size: 14px;
+            word-spacing: 2px;
+            text-transform: capitalize;
+        }
+
+        .footer-bottom p a {
+            color: #44bae8;
+            font-size: 16px;
+            text-decoration: none;
+        }
+
+        .footer-bottom span {
+            text-transform: uppercase;
+            opacity: .4;
+            font-weight: 200;
+        }
+
+        .footer-menu ul {
+            display: flex;
+        }
+
+        .footer-menu ul li {
+            padding-right: 10px;
+            display: block;
+        }
+
+        .footer-menu ul li a {
+            color: #cfd2d6;
+            text-decoration: none;
+        }
+
+        .footer-menu ul li a:hover {
+            color: #27bcda;
+        }
+
+        @media (max-width: 500px) {
+            .footer-menu ul {
+                display: flex;
+                margin-top: 10px;
+                margin-bottom: 20px;
+            }
+        }
+
+        .kopce {
+            background-color: mediumslateblue;
+            border: none;
+            color: white;
+            padding: 15px 32px;
+            text-align: center;
+            text-decoration: none;
+            display: inline-block;
+            font-size: 16px;
+            margin-left: 20px;
+        }
+
+        /*#logo{*/
+        /*    width:160px;*/
+        /*    height: 60px*/
+        /*}*/
+        h1 {
+            color: white;
+            font-size: 60px;
+            font-weight: 500;
+            /*letter-spacing: 8px;*/
+            margin-bottom: 20px;
+            margin-left: 20px;
+            margin-right: auto;
+            margin-top: 50px;
+            position: relative;
+        }
+
+        @keyframes text {
+            0% {
+                color: black;
+                margin-bottom: -40px;
+            }
+            30% {
+                letter-spacing: 25px;
+                margin-bottom: -40px;
+            }
+            85% {
+                letter-spacing: 8px;
+                margin-bottom: -40px;
+            }
+        }
+
+        footer {
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
+        }
+
+        form-signin mt-xl-5{
+            margin-left: 40px;
+        }
+    </style>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta charset="UTF-8"/>
+    <title>Sign Up</title>
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
+          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
+            crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
+            integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
+            crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
+            integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
+            crossorigin="anonymous"></script>
+</head>
+<body>
+<div>
+    <nav class="navbar navbar-expand-md ">
+        <div class="container">
+            <!--                    <img class="u-image u-image-default u-image-1" src="../static/logoeventra.png" alt="" data-image-width="648" data-image-height="292">-->
+            <!--                <a class="navbar-brand" href="/home"></a>-->
+            <a class="navbar-brand"> Eventrra</a>
+            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
+                    aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+
+            <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
+                <ul class="navbar-nav m-auto">
+
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/">Home</a>
+                    </li>
+
+                    <li th:if="${session.user!=null and session.role == 'ROLE_CLIENT'}"
+                        class="nav-item m-auto">
+                        <a class="kopce" href="/host_event">Host an event</a>
+                    </li>
+                    <li th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a class="nav-link active" href="/my_events">Scheduled events</a>
+                    </li>
+                </ul>
+
+                <form class="form-inline my-2 my-lg-0">
+
+                    <div th:if="${session.user==null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/login">
+                            Login
+                        </a>
+
+                        <a class="btn btn-light btn-sm ml-3" href="/register">
+                            Sign up
+                        </a>
+                    </div>
+                    <div style="text-align: center" th:if="${session.user!=null}" class="nav-item m-auto">
+                        <a th:text="${session.user.username}" style="color:white; font-size: 20px;"
+                           class="nav-link active" href="/login/profile"></a>
+                    </div>
+
+                    <div th:if="${session.user!=null}">
+                        <a class="btn btn-light btn-sm ml-3" href="/logout">
+                            Log out
+                        </a>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </nav>
+</div>
+    <div>
+        <h1 class="mt-3 mb-3">Insert data</h1>
+        <form class="form-signin mt-xl-5" method="post" action="/finishRegisterWaiter">
+            <label for="free_day">Insert a number for the free day of the week (from 1 to 7)</label>
+            <input type="number" name="free_day" id="free_day" placeholder="Insert number" th:value="${free_day}">
+            <br>
+            <label for="experience">Ages of experience</label>
+            <input type="number" name="experience" id="experience" placeholder="Insert number" th:value="${experience}">
+            <br>
+            <label for="catering_name">Catering Firm - Employer</label>
+            <select class="form-control" name="catering_name" id="catering_name" required>
+                <option th:each="cat : ${caterings}"
+                        th:text="${cat.getName()}"
+                        th:value="${cat.getName()}">
+                </option>
+            </select>
+            <br>
+            <button type="submit" class="btn btn-primary btn-lg btn-block">Finish</button>
+        </form>
+    </div>
+</body>
+</html>
