Untitled
unknown
plain_text
a year ago
2.3 kB
3
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