/** * Balero CMS Project: Proyecto 100% Mexicano de código libre. * Página Oficial: http://www.balerocms.com * * @author Anibal Gomez <anibalgomez@icloud.com> * @copyright Copyright (C) 2015 Neblina Software. Derechos reservados. * @license Licencia BSD; vea LICENSE.txt */ package com.neblina.balero.web.authorized.admin; import com.neblina.balero.domain.User; import com.neblina.balero.service.EmailService; import com.neblina.balero.service.UserService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.annotation.Secured; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.mail.MessagingException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Locale; @Controller @RequestMapping("/admin/email") public class AdminEmailController { private static final Logger log = LogManager.getLogger(AdminEmailController.class.getName()); @Autowired private EmailService emailService; @Autowired private UserService userService; @Secured("ROLE_ADMIN") @RequestMapping(value = {"", "/"} ) public String email(Model model) { model.addAttribute("totalUsers", userService.getSubscribedUsers()); return "authorized/email"; } @Secured("ROLE_ADMIN") @RequestMapping(value = {"", "/"}, method = RequestMethod.POST) public String emailPost(@RequestParam("subject") String subject, @RequestParam("messageBody") String messageBody, Model model, Locale locale) throws MessagingException, UnsupportedEncodingException { List<User> users = userService.findAll(); for(User user: users) { if(user.getSubscribed()) { log.debug("Sending Email To..." + user.getEmail()); this.emailService.sendSimpleMail(user.getFirstName(), user.getEmail(), subject, messageBody, locale); } } model.addAttribute("totalUsers", userService.getSubscribedUsers()); model.addAttribute("success", 1); return "authorized/email"; } /* * Send HTML mail with attachment. */ // TODO: Need to be integrated @Secured("ROLE_ADMIN") @RequestMapping(value = "/sendMailWithAttachment", method = RequestMethod.POST) public String sendMailWithAttachment( @RequestParam("recipientName") final String recipientName, @RequestParam("recipientEmail") final String recipientEmail, @RequestParam("attachment") final MultipartFile attachment, final Locale locale) throws MessagingException, IOException { this.emailService.sendMailWithAttachment( recipientName, recipientEmail, attachment.getOriginalFilename(), attachment.getBytes(), attachment.getContentType(), locale); return "redirect:sent.html"; } /* * Send HTML mail with inline image */ // TODO: Need to be integrated @Secured("ROLE_ADMIN") @RequestMapping(value = "/sendMailWithInlineImage", method = RequestMethod.POST) public String sendMailWithInline( @RequestParam("recipientName") final String recipientName, @RequestParam("recipientEmail") final String recipientEmail, @RequestParam("image") final MultipartFile image, final Locale locale) throws MessagingException, IOException { this.emailService.sendMailWithInline( recipientName, recipientEmail, image.getName(), image.getBytes(), image.getContentType(), locale); return "redirect:sent.html"; } }