summaryrefslogtreecommitdiff
path: root/src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java
diff options
context:
space:
mode:
authorAlisaLinUwU <alisalinuwu@gmail.com>2025-01-26 10:42:28 +0500
committerAlisaLinUwU <alisalinuwu@gmail.com>2025-01-26 10:42:28 +0500
commit0225bdb772d1334cc1aa7ab0fc3678df0864df6b (patch)
tree85a8c8e4fcf1d935fcbad54886b73410c8cb2e26 /src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java
Initializemain
Diffstat (limited to 'src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java')
-rw-r--r--src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java111
1 files changed, 111 insertions, 0 deletions
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";
+ }
+}