| 251 | == Систем |
| 252 | === Испраќа известување до администратори |
| 253 | Оваа функционалност предвидува испраќања на нотификација/потсетник до администарторите во случај кога ќе се соберат повеќе профили/фирми за одобрување. За ова да функционира, потребно беше да имплементираме сервис за испраќање пораки, кој ја користи Spring Email библиотеката. |
| 254 | {{{#!java |
| 255 | @Service |
| 256 | public class MailingServiceImpl implements MailingService { |
| 257 | |
| 258 | private final JavaMailSender emailSender; |
| 259 | |
| 260 | public MailingServiceImpl(JavaMailSender emailSender) { |
| 261 | this.emailSender = emailSender; |
| 262 | } |
| 263 | |
| 264 | @Override |
| 265 | public void sendMail(String to, String subject, String messageText) { |
| 266 | SimpleMailMessage mail = new SimpleMailMessage(); |
| 267 | mail.setFrom("TourMate"); |
| 268 | mail.setTo(to); |
| 269 | mail.setSubject(subject); |
| 270 | mail.setText(messageText); |
| 271 | emailSender.send(mail); |
| 272 | } |
| 273 | } |
| 274 | }}} |
| 275 | Оваа проверка се прави во одредено време, секој понеделник на полноќ и доколку постојат фирми кои не се одобрени, се испраќа порака до сите администратори како потсетување. За да може во позадина да се извршуваат вакви задчаи потребно беше апликацијата да ја анотираме со @EnableScheduling, а компонентата изгледа вака: |
| 276 | {{{#!java |
| 277 | @Component |
| 278 | public class MailJobs { |
| 279 | @Autowired |
| 280 | private BusinessManager businessManager; |
| 281 | @Autowired |
| 282 | private UsersManager usersManager; |
| 283 | @Autowired |
| 284 | private MailingService mailingService; |
| 285 | |
| 286 | @Scheduled(cron = "0 0 * * * MON") |
| 287 | public void execute() { |
| 288 | List<Business> unapprovedBusinesses = businessManager.getUnapprovedBusinesses(); |
| 289 | if(!unapprovedBusinesses.isEmpty()) |
| 290 | { |
| 291 | List<User> admins = usersManager.getAdmins().stream().filter(x -> x.getEmail().contains("@")).toList(); |
| 292 | String subject = "Бизниси кои чекаат на одобрување"; |
| 293 | String message = "Почитувани,\n\nВе известуваме дека постојат повеќе бизнис кои чекаат на Ваша одлука за одобрување.\n\nСо почит,\n\nTourMate"; |
| 294 | admins.forEach(x -> mailingService.sendMail(x.getEmail(), subject, message)); |
| 295 | } |
| 296 | } |
| 297 | } |
| 298 | }}} |