diff --git a/src/main/java/ua/com/javarush/gnew/contactm/DTOs/ContactDTO.java b/src/main/java/ua/com/javarush/gnew/contactm/DTOs/ContactDTO.java index eb4bc32..65a2312 100644 --- a/src/main/java/ua/com/javarush/gnew/contactm/DTOs/ContactDTO.java +++ b/src/main/java/ua/com/javarush/gnew/contactm/DTOs/ContactDTO.java @@ -1,12 +1,12 @@ package ua.com.javarush.gnew.contactm.DTOs; +import java.util.ArrayList; import java.util.List; import lombok.*; @Getter @Setter @ToString -@NoArgsConstructor @AllArgsConstructor @Builder public class ContactDTO { @@ -17,4 +17,10 @@ public class ContactDTO { private List emails; private List phones; private List networks; + + public ContactDTO() { + this.emails = new ArrayList<>(); + this.phones = new ArrayList<>(); + this.networks = new ArrayList<>(); + } } diff --git a/src/main/java/ua/com/javarush/gnew/contactm/controller/web/ContactController.java b/src/main/java/ua/com/javarush/gnew/contactm/controller/web/ContactController.java index fd85268..d4f1edd 100644 --- a/src/main/java/ua/com/javarush/gnew/contactm/controller/web/ContactController.java +++ b/src/main/java/ua/com/javarush/gnew/contactm/controller/web/ContactController.java @@ -8,6 +8,9 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import ua.com.javarush.gnew.contactm.DTOs.ContactDTO; +import ua.com.javarush.gnew.contactm.DTOs.EmailDTO; +import ua.com.javarush.gnew.contactm.DTOs.PhoneDTO; +import ua.com.javarush.gnew.contactm.DTOs.SocialNetworkDTO; import ua.com.javarush.gnew.contactm.mapper.ContactMapper; import ua.com.javarush.gnew.contactm.services.CloudinaryService; import ua.com.javarush.gnew.contactm.services.ContactService; @@ -23,7 +26,12 @@ public class ContactController { @GetMapping("/edit/{id}") public String edit(@PathVariable Long id, Model model) { + ContactDTO dto = contactMapper.toDto(contactService.findById(id)); + if (dto.getEmails().isEmpty()) dto.getEmails().add(new EmailDTO()); + if (dto.getPhones().isEmpty()) dto.getPhones().add(new PhoneDTO()); + if (dto.getNetworks().isEmpty()) dto.getNetworks().add(new SocialNetworkDTO()); + model.addAttribute("contact", dto); return "contact/edit"; } @@ -54,6 +62,41 @@ public String editContact( return "redirect:/"; } + @GetMapping("/add") + public String add(Model model) { + ContactDTO dto = new ContactDTO(); + dto.getEmails().add(new EmailDTO()); + dto.getPhones().add(new PhoneDTO()); + dto.getNetworks().add(new SocialNetworkDTO()); + model.addAttribute("contact", dto); + + return "contact/edit"; + } + + @PostMapping("/add") + public String saveContact( + @ModelAttribute ContactDTO contactDTO, + @RequestParam(value = "imageFile", required = false) MultipartFile imageFile, + RedirectAttributes redirectAttributes) { + + try { + if (imageFile != null && !imageFile.isEmpty()) { + String imageUrl = imageService.upload(imageFile); + contactDTO.setImageUrl(imageUrl); + } + + contactService.save(contactDTO); + redirectAttributes.addFlashAttribute("success", "Contact added successfully!"); + + } catch (IOException e) { + redirectAttributes.addFlashAttribute("error", "Failed to upload image: " + e.getMessage()); + } catch (Exception e) { + redirectAttributes.addFlashAttribute("error", "Failed to add contact: " + e.getMessage()); + } + + return "redirect:/"; + } + @PostMapping("/remove/{id}") public String remove(@PathVariable Long id) { contactService.delete(id); diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index 2a3465a..78e86c2 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -1,5 +1,5 @@ - + @@ -14,7 +14,16 @@
You have been logged in successfuly
-
+
+
+ + +