Untitled
unknown
plain_text
9 months ago
2.3 kB
1
Indexable
package com.capgemini.wsb.fitnesstracker.notification; import com.capgemini.wsb.fitnesstracker.mail.api.EmailDto; import com.capgemini.wsb.fitnesstracker.mail.api.EmailSender; import com.capgemini.wsb.fitnesstracker.mail.internal.EmailService; import com.capgemini.wsb.fitnesstracker.training.api.Training; import com.capgemini.wsb.fitnesstracker.training.api.TrainingProvider; import com.capgemini.wsb.fitnesstracker.user.api.User; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Component @EnableScheduling public class TrainingRaportGenerator { public TrainingRaportGenerator(TrainingProvider trainingProvider, EmailSender emailSender) { this.trainingProvider = trainingProvider; this.emailSender = emailSender; } private final TrainingProvider trainingProvider; private final EmailSender emailSender; @Scheduled(fixedDelay = 5000) public void generateTrainingRaport() { List<Training> trainingList = trainingProvider.getAllTrainings(); trainingList.stream() .collect(Collectors.groupingBy(Training::getUser)) .forEach((user, trainings) -> { int numberOfTrainings = trainings.size(); String activType = getActivityType(trainings); String result = user.getFirstName() + " " + user.getLastName() + "\n" + "Your weekly dose of trainings: " + numberOfTrainings + " " + activType + "\n"; System.out.println(result); try { emailSender.send(new EmailDto(user.getEmail(), "Weekly raport", result)); } catch (Exception e) { System.err.println("Error sending email to " + user.getEmail()); } }); } private String getActivityType(List<Training> trainings) { if (trainings.isEmpty()) { return ""; // Return empty string if no activity } return trainings.get(0).getActivityType().name(); } }
Editor is loading...
Leave a Comment