From 0225bdb772d1334cc1aa7ab0fc3678df0864df6b Mon Sep 17 00:00:00 2001 From: AlisaLinUwU Date: Sun, 26 Jan 2025 10:42:28 +0500 Subject: Initialize --- .../controller/AdminPanelController.java | 111 +++++++++++++++++++++ .../barbershop/controller/HomeController.java | 91 +++++++++++++++++ 2 files changed, 202 insertions(+) create mode 100644 src/main/java/com/mavlushechka/barbershop/controller/AdminPanelController.java create mode 100644 src/main/java/com/mavlushechka/barbershop/controller/HomeController.java (limited to 'src/main/java/com/mavlushechka/barbershop/controller') 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 model) { + HashSet emails = new HashSet<>(); + List 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 model) { + model.put("appointments", appointmentRepository.findAll()); + return "/admin-panel/pages/tables/appointments"; + } + + @GetMapping("/admin-panel/tables/visitors") + public String adminPanelTablesVisitors(Map model) { + model.put("visitors", visitorRepository.findAll()); + return "/admin-panel/pages/tables/visitors"; + } + + @GetMapping("/admin-panel/tables/barbers") + public String adminPanelTablesBarbers(Map model) { + List 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 model) { + List 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 model) { + List 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 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 model) { + List slides = slideRepository.findAll(); + List barbers = barberRepository.findAll(); + List 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 model) { + model.put("barbers", barberRepository.findAll()); + return "services"; + } + + @GetMapping("/about") + public String about(Map model) { + List barbers = barberRepository.findAll(); + List 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 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:/"; + } +} -- cgit v1.2.3