diff options
author | AlisaLinUwU <alisalinuwu@gmail.com> | 2025-01-26 10:42:28 +0500 |
---|---|---|
committer | AlisaLinUwU <alisalinuwu@gmail.com> | 2025-01-26 10:42:28 +0500 |
commit | 0225bdb772d1334cc1aa7ab0fc3678df0864df6b (patch) | |
tree | 85a8c8e4fcf1d935fcbad54886b73410c8cb2e26 /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.java | 111 |
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"; + } +} |