summaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/mavlushechka/barbershop/Application.java46
-rw-r--r--src/main/java/com/mavlushechka/barbershop/config/MvcConfig.java13
-rw-r--r--src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java111
-rw-r--r--src/main/java/com/mavlushechka/barbershop/controller/HomeController.java91
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/Appointment.java95
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/Barber.java64
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/Level.java34
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/Message.java64
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/Role.java34
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/Slide.java64
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/Testimonial.java64
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/User.java66
-rw-r--r--src/main/java/com/mavlushechka/barbershop/domain/Visitor.java36
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/AppointmentRepository.java10
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/BarberRepository.java8
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/LevelRepository.java10
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/MessageRepository.java10
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/RoleRepository.java10
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/SlideRepository.java8
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/TestimonialRepository.java10
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/UserRepository.java10
-rw-r--r--src/main/java/com/mavlushechka/barbershop/repository/VisitorRepository.java10
22 files changed, 868 insertions, 0 deletions
diff --git a/src/main/java/com/mavlushechka/barbershop/Application.java b/src/main/java/com/mavlushechka/barbershop/Application.java
new file mode 100644
index 0000000..00b8909
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/Application.java
@@ -0,0 +1,46 @@
+package com.mavlushechka.barbershop;
+
+import com.mavlushechka.barbershop.domain.Level;
+import com.mavlushechka.barbershop.domain.Role;
+import com.mavlushechka.barbershop.repository.LevelRepository;
+import com.mavlushechka.barbershop.repository.RoleRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+@SpringBootApplication
+public class Application {
+ @Autowired
+ private RoleRepository roleRepository;
+ @Autowired
+ private LevelRepository levelRepository;
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+ @Bean
+ CommandLineRunner init() {
+ return args -> {
+ save(new Role("Admin"));
+ save(new Role("User"));
+ save(new Level("Junior"));
+ save(new Level("Middle"));
+ save(new Level("Senior"));
+ };
+ }
+
+ private void save(Role role) {
+ if (roleRepository.findByName(role.getName()) == null) {
+ roleRepository.save(role);
+ }
+ }
+
+ private void save(Level level) {
+ if (levelRepository.findByName(level.getName()) == null) {
+ levelRepository.save(level);
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/mavlushechka/barbershop/config/MvcConfig.java b/src/main/java/com/mavlushechka/barbershop/config/MvcConfig.java
new file mode 100644
index 0000000..209c529
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/config/MvcConfig.java
@@ -0,0 +1,13 @@
+package com.mavlushechka.barbershop.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class MvcConfig implements WebMvcConfigurer {
+ public void addViewControllers(ViewControllerRegistry registry) {
+ registry.addViewController("/admin-panel/pages/forms/add-slide").setViewName("/admin-panel/pages/forms/add-slide");;
+ registry.addViewController("/admin-panel/pages/forms/add-testimonial").setViewName("/admin-panel/pages/forms/add-testimonial");;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java b/src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java
new file mode 100644
index 0000000..84a01e7
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java
@@ -0,0 +1,111 @@
+package com.mavlushechka.barbershop.controller;
+
+import com.mavlushechka.barbershop.domain.*;
+import com.mavlushechka.barbershop.repository.*;
+import org.bson.BsonBinarySubType;
+import org.bson.types.Binary;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.*;
+
+@Controller
+public class AdminPanelController {
+ @Autowired
+ private AppointmentRepository appointmentRepository;
+ @Autowired
+ private VisitorRepository visitorRepository;
+ @Autowired
+ private LevelRepository levelRepository;
+ @Autowired
+ private BarberRepository barberRepository;
+ @Autowired
+ private SlideRepository slideRepository;
+ @Autowired
+ private TestimonialRepository testimonialRepository;
+
+ @GetMapping("/admin-panel")
+ public String adminPanel(Map<String, Object> model) {
+ HashSet<String> emails = new HashSet<>();
+ List<Appointment> appointments = appointmentRepository.findAll();
+
+ model.put("views", visitorRepository.count());
+ model.put("appointments", appointments.size());
+ appointments.iterator().forEachRemaining(appointment -> emails.add(appointment.getEmail()));
+ model.put("clients", emails.size());
+ return "/admin-panel/index";
+ }
+
+ @GetMapping("/admin-panel/tables/appointments")
+ public String adminPanelTablesAppointments(Map<String, Object> model) {
+ model.put("appointments", appointmentRepository.findAll());
+ return "/admin-panel/pages/tables/appointments";
+ }
+
+ @GetMapping("/admin-panel/tables/visitors")
+ public String adminPanelTablesVisitors(Map<String, Object> model) {
+ model.put("visitors", visitorRepository.findAll());
+ return "/admin-panel/pages/tables/visitors";
+ }
+
+ @GetMapping("/admin-panel/tables/barbers")
+ public String adminPanelTablesBarbers(Map<String, Object> model) {
+ List<Barber> barbers = barberRepository.findAll();
+
+ for (Barber barber : barbers) {
+ barber.setEncodedPhoto(Base64.getEncoder().encodeToString(barber.getPhoto().getData()));
+ }
+ model.put("barbers", barbers);
+ return "/admin-panel/pages/tables/barbers";
+ }
+
+ @GetMapping("/admin-panel/tables/slides")
+ public String adminPanelTablesSlides(Map<String, Object> model) {
+ List<Slide> slides = slideRepository.findAll();
+
+ for (Slide slide : slides) {
+ slide.setEncodedPhoto(Base64.getEncoder().encodeToString(slide.getPhoto().getData()));
+ }
+ model.put("slides", slides);
+ return "/admin-panel/pages/tables/slides";
+ }
+
+ @GetMapping("/admin-panel/tables/testimonials")
+ public String adminPanelTablesTestimonial(Map<String, Object> model) {
+ List<Testimonial> testimonials = testimonialRepository.findAll();
+
+ for (Testimonial testimonial : testimonials) {
+ testimonial.setEncodedPhoto(Base64.getEncoder().encodeToString(testimonial.getPhoto().getData()));
+ }
+ model.put("testimonials", testimonials);
+ return "/admin-panel/pages/tables/testimonials";
+ }
+
+ @GetMapping("/admin-panel/pages/forms/add-barber")
+ public String adminPanelPagesFormsAddBarber(Map<String, Object> model) {
+ model.put("levels", levelRepository.findAll());
+ return "/admin-panel/pages/forms/add-barber";
+ }
+
+ @PostMapping("/save/barber")
+ public String saveBarber(String firstName, String level, MultipartFile photo) throws IOException {
+ barberRepository.save(new Barber(firstName, levelRepository.findByName(level), new Binary(BsonBinarySubType.BINARY, photo.getBytes())));
+ return "redirect:/admin-panel/tables/barbers";
+ }
+
+ @PostMapping("/save/slide")
+ public String saveSlide(String title, String description, MultipartFile photo) throws IOException {
+ slideRepository.save(new Slide(title, description, new Binary(BsonBinarySubType.BINARY, photo.getBytes())));
+ return "redirect:/admin-panel/tables/slides";
+ }
+
+ @PostMapping("/save/testimonial")
+ public String saveTestimonial(String name, String comment, MultipartFile photo) throws IOException {
+ testimonialRepository.save(new Testimonial(name, comment, new Binary(BsonBinarySubType.BINARY, photo.getBytes())));
+ return "redirect:/admin-panel/tables/testimonials";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/controller/HomeController.java b/src/main/java/com/mavlushechka/barbershop/controller/HomeController.java
new file mode 100644
index 0000000..e3a96c8
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/controller/HomeController.java
@@ -0,0 +1,91 @@
+package com.mavlushechka.barbershop.controller;
+
+import com.mavlushechka.barbershop.domain.*;
+import com.mavlushechka.barbershop.repository.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Base64;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Controller
+public class HomeController {
+ @Autowired
+ private VisitorRepository visitorRepository;
+ @Autowired
+ private AppointmentRepository appointmentRepository;
+ @Autowired
+ private BarberRepository barberRepository;
+ @Autowired
+ private SlideRepository slideRepository;
+ @Autowired
+ private TestimonialRepository testimonialRepository;
+ @Autowired
+ private MessageRepository messageRepository;
+
+ @GetMapping
+ public String home(Map<String, Object> model) {
+ List<Slide> slides = slideRepository.findAll();
+ List<Barber> barbers = barberRepository.findAll();
+ List<Testimonial> testimonials = testimonialRepository.findAll();
+
+ for (Slide slide : slides) {
+ slide.setEncodedPhoto(Base64.getEncoder().encodeToString(slide.getPhoto().getData()));
+ }
+ for (Barber barber : barbers) {
+ barber.setEncodedPhoto(Base64.getEncoder().encodeToString(barber.getPhoto().getData()));
+ }
+ for (Testimonial testimonial : testimonials) {
+ testimonial.setEncodedPhoto(Base64.getEncoder().encodeToString(testimonial.getPhoto().getData()));
+ }
+ model.put("slides", slides);
+ model.put("barbers", barbers);
+ model.put("testimonials", testimonials);
+ visitorRepository.save(new Visitor(new Date()));
+ return "index";
+ }
+
+ @GetMapping("/services")
+ public String services(Map<String, Object> model) {
+ model.put("barbers", barberRepository.findAll());
+ return "services";
+ }
+
+ @GetMapping("/about")
+ public String about(Map<String, Object> model) {
+ List<Barber> barbers = barberRepository.findAll();
+ List<Testimonial> testimonials = testimonialRepository.findAll();
+
+ for (Barber barber : barbers) {
+ barber.setEncodedPhoto(Base64.getEncoder().encodeToString(barber.getPhoto().getData()));
+ }
+ for (Testimonial testimonial : testimonials) {
+ testimonial.setEncodedPhoto(Base64.getEncoder().encodeToString(testimonial.getPhoto().getData()));
+ }
+ model.put("barbers", barbers);
+ model.put("testimonials", testimonials);
+ return "about";
+ }
+
+ @GetMapping("/contact")
+ public String contact(Map<String, Object> model) {
+ model.put("barbers", barberRepository.findAll());
+ return "contact";
+ }
+
+ @PostMapping("/save/appointment")
+ public String saveAppointment(Appointment appointment) {
+ appointmentRepository.save(appointment);
+ return "redirect:/";
+ }
+
+ @PostMapping("/save/message")
+ public String saveAppointment(Message message) {
+ messageRepository.save(message);
+ return "redirect:/";
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/Appointment.java b/src/main/java/com/mavlushechka/barbershop/domain/Appointment.java
new file mode 100644
index 0000000..ff7ad49
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/Appointment.java
@@ -0,0 +1,95 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "appointments")
+public class Appointment {
+ @Id
+ private String id;
+ private String date;
+ private String time;
+ private String service;
+ private String barber;
+ private String name;
+ private String telephoneNumber;
+ private String email;
+
+ public Appointment() {
+ }
+
+ public Appointment(String id, String date, String time, String service, String barber, String name, String telephoneNumber, String email) {
+ this.id = id;
+ this.date = date;
+ this.time = time;
+ this.service = service;
+ this.barber = barber;
+ this.name = name;
+ this.telephoneNumber = telephoneNumber;
+ this.email = email;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public String getService() {
+ return service;
+ }
+
+ public void setService(String service) {
+ this.service = service;
+ }
+
+ public String getBarber() {
+ return barber;
+ }
+
+ public void setBarber(String barber) {
+ this.barber = barber;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getTelephoneNumber() {
+ return telephoneNumber;
+ }
+
+ public void setTelephoneNumber(String telephoneNumber) {
+ this.telephoneNumber = telephoneNumber;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/Barber.java b/src/main/java/com/mavlushechka/barbershop/domain/Barber.java
new file mode 100644
index 0000000..6aac94d
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/Barber.java
@@ -0,0 +1,64 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.bson.types.Binary;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "barbers")
+public class Barber {
+ @Id
+ private String id;
+ private String firstName;
+ private Level level;
+ private Binary photo;
+ private String encodedPhoto;
+
+ public Barber() {
+ }
+
+ public Barber(String firstName, Level level, Binary photo) {
+ this.firstName = firstName;
+ this.level = level;
+ this.photo = photo;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public Level getLevel() {
+ return level;
+ }
+
+ public void setLevel(Level level) {
+ this.level = level;
+ }
+
+ public Binary getPhoto() {
+ return photo;
+ }
+
+ public void setPhoto(Binary photo) {
+ this.photo = photo;
+ }
+
+ public String getEncodedPhoto() {
+ return encodedPhoto;
+ }
+
+ public void setEncodedPhoto(String encodedPhoto) {
+ this.encodedPhoto = encodedPhoto;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/Level.java b/src/main/java/com/mavlushechka/barbershop/domain/Level.java
new file mode 100644
index 0000000..2f3fe80
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/Level.java
@@ -0,0 +1,34 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "levels")
+public class Level {
+ @Id
+ private String id;
+ private String name;
+
+ public Level() {
+ }
+
+ public Level(String name) {
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/Message.java b/src/main/java/com/mavlushechka/barbershop/domain/Message.java
new file mode 100644
index 0000000..1ebda2b
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/Message.java
@@ -0,0 +1,64 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "messages")
+public class Message {
+ @Id
+ private String id;
+ private String text;
+ private String nameOfSender;
+ private String email;
+ private String subject;
+
+ public Message() {
+ }
+
+ public Message(String text, String nameOfSender, String email, String subject) {
+ this.text = text;
+ this.nameOfSender = nameOfSender;
+ this.email = email;
+ this.subject = subject;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public String getNameOfSender() {
+ return nameOfSender;
+ }
+
+ public void setNameOfSender(String nameOfSender) {
+ this.nameOfSender = nameOfSender;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/Role.java b/src/main/java/com/mavlushechka/barbershop/domain/Role.java
new file mode 100644
index 0000000..875bffd
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/Role.java
@@ -0,0 +1,34 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "roles")
+public class Role {
+ @Id
+ private String id;
+ private String name;
+
+ public Role() {
+ }
+
+ public Role(String name) {
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/Slide.java b/src/main/java/com/mavlushechka/barbershop/domain/Slide.java
new file mode 100644
index 0000000..feb7665
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/Slide.java
@@ -0,0 +1,64 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.bson.types.Binary;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "slides")
+public class Slide {
+ @Id
+ private String id;
+ private String title;
+ private String description;
+ private Binary photo;
+ private String encodedPhoto;
+
+ public Slide() {
+ }
+
+ public Slide(String title, String description, Binary photo) {
+ this.title = title;
+ this.description = description;
+ this.photo = photo;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Binary getPhoto() {
+ return photo;
+ }
+
+ public void setPhoto(Binary photo) {
+ this.photo = photo;
+ }
+
+ public String getEncodedPhoto() {
+ return encodedPhoto;
+ }
+
+ public void setEncodedPhoto(String encodedPhoto) {
+ this.encodedPhoto = encodedPhoto;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/Testimonial.java b/src/main/java/com/mavlushechka/barbershop/domain/Testimonial.java
new file mode 100644
index 0000000..d0f88e4
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/Testimonial.java
@@ -0,0 +1,64 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.bson.types.Binary;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "testimonials")
+public class Testimonial {
+ @Id
+ private String id;
+ private String name;
+ private String comment;
+ private Binary photo;
+ private String encodedPhoto;
+
+ public Testimonial() {
+ }
+
+ public Testimonial(String name, String comment, Binary photo) {
+ this.name = name;
+ this.comment = comment;
+ this.photo = photo;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ public Binary getPhoto() {
+ return photo;
+ }
+
+ public void setPhoto(Binary photo) {
+ this.photo = photo;
+ }
+
+ public String getEncodedPhoto() {
+ return encodedPhoto;
+ }
+
+ public void setEncodedPhoto(String encodedPhoto) {
+ this.encodedPhoto = encodedPhoto;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/User.java b/src/main/java/com/mavlushechka/barbershop/domain/User.java
new file mode 100644
index 0000000..5f59852
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/User.java
@@ -0,0 +1,66 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.Set;
+
+@Document(collection = "users")
+public class User {
+ @Id
+ private String id;
+ private String username;
+ private String password;
+ private boolean active;
+ private Set<Role> roles;
+
+ public User() {
+ }
+
+ public User(String username, String password, boolean active, Set<Role> roles) {
+ this.username = username;
+ this.password = password;
+ this.active = active;
+ this.roles = roles;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
+ public Set<Role> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(Set<Role> roles) {
+ this.roles = roles;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/domain/Visitor.java b/src/main/java/com/mavlushechka/barbershop/domain/Visitor.java
new file mode 100644
index 0000000..d645d62
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/domain/Visitor.java
@@ -0,0 +1,36 @@
+package com.mavlushechka.barbershop.domain;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.Date;
+
+@Document(collection = "visitors")
+public class Visitor {
+ @Id
+ private String id;
+ private Date date;
+
+ public Visitor() {
+ }
+
+ public Visitor(Date date) {
+ this.date = date;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/AppointmentRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/AppointmentRepository.java
new file mode 100644
index 0000000..3e33529
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/AppointmentRepository.java
@@ -0,0 +1,10 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.Appointment;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface AppointmentRepository extends MongoRepository<Appointment, String> {
+
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/BarberRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/BarberRepository.java
new file mode 100644
index 0000000..648e2b4
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/BarberRepository.java
@@ -0,0 +1,8 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.Barber;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface BarberRepository extends MongoRepository<Barber, String> {
+
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/LevelRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/LevelRepository.java
new file mode 100644
index 0000000..a5af4aa
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/LevelRepository.java
@@ -0,0 +1,10 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.Level;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface LevelRepository extends MongoRepository<Level, String> {
+ Level findByName(String name);
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/MessageRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/MessageRepository.java
new file mode 100644
index 0000000..13ebbab
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/MessageRepository.java
@@ -0,0 +1,10 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.Message;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface MessageRepository extends MongoRepository<Message, String> {
+
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/RoleRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/RoleRepository.java
new file mode 100644
index 0000000..001b2fb
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/RoleRepository.java
@@ -0,0 +1,10 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.Role;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface RoleRepository extends MongoRepository<Role, String> {
+ Role findByName(String name);
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/SlideRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/SlideRepository.java
new file mode 100644
index 0000000..ec1f3fd
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/SlideRepository.java
@@ -0,0 +1,8 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.Slide;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface SlideRepository extends MongoRepository<Slide, String> {
+
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/TestimonialRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/TestimonialRepository.java
new file mode 100644
index 0000000..d7e8ebc
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/TestimonialRepository.java
@@ -0,0 +1,10 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.Testimonial;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TestimonialRepository extends MongoRepository<Testimonial, String> {
+
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/UserRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/UserRepository.java
new file mode 100644
index 0000000..2fd7cb8
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/UserRepository.java
@@ -0,0 +1,10 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.User;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface UserRepository extends MongoRepository<User, String> {
+ User findByUsername(String login);
+}
diff --git a/src/main/java/com/mavlushechka/barbershop/repository/VisitorRepository.java b/src/main/java/com/mavlushechka/barbershop/repository/VisitorRepository.java
new file mode 100644
index 0000000..1566906
--- /dev/null
+++ b/src/main/java/com/mavlushechka/barbershop/repository/VisitorRepository.java
@@ -0,0 +1,10 @@
+package com.mavlushechka.barbershop.repository;
+
+import com.mavlushechka.barbershop.domain.Visitor;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface VisitorRepository extends MongoRepository<Visitor, String> {
+
+}