Dashboard
This commit is contained in:
@@ -75,22 +75,11 @@ public class GoalMetricPeriodTotalService extends AbstractService<GoalMetricPeri
|
||||
return intervalsActivityService.getByAthleteIdBetween(athleteId, weekStart.toString(), weekEnd.toString());
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void recalculateUpToCurrentWeek(final long athleteId) {
|
||||
final LocalDate today = LocalDate.now(ZoneOffset.UTC);
|
||||
final GoalMetricPeriodTotal lastWeekly = goalMetricAggregateDAO.findLastWeeklyByAthlete(athleteId);
|
||||
final LocalDate startDate;
|
||||
if (lastWeekly != null) {
|
||||
startDate = LocalDate.of(lastWeekly.getPeriodYear(), 1, 4)
|
||||
.with(WeekFields.ISO.weekOfWeekBasedYear(), lastWeekly.getPeriodIndex())
|
||||
.with(WeekFields.ISO.dayOfWeek(), 1);
|
||||
} else {
|
||||
final IntervalsActivity earliestActivity = intervalsActivityService.getEarliestActivity(athleteId);
|
||||
if (earliestActivity == null) {
|
||||
return;
|
||||
}
|
||||
startDate = earliestActivity.getStartTime().atZone(ZoneOffset.UTC).toLocalDate()
|
||||
.with(WeekFields.ISO.dayOfWeek(), 1);
|
||||
final LocalDate startDate = resolveStartDate(athleteId);
|
||||
if (startDate == null) {
|
||||
return;
|
||||
}
|
||||
LocalDate weekStart = startDate;
|
||||
while (!weekStart.isAfter(today)) {
|
||||
@@ -101,6 +90,22 @@ public class GoalMetricPeriodTotalService extends AbstractService<GoalMetricPeri
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Nullable LocalDate resolveStartDate(final long athleteId) {
|
||||
final GoalMetricPeriodTotal lastWeekly = goalMetricAggregateDAO.findLastWeeklyByAthlete(athleteId);
|
||||
if (lastWeekly != null) {
|
||||
return LocalDate.of(lastWeekly.getPeriodYear(), 1, 4)
|
||||
.with(WeekFields.ISO.weekOfWeekBasedYear(), lastWeekly.getPeriodIndex())
|
||||
.with(WeekFields.ISO.dayOfWeek(), 1);
|
||||
}
|
||||
final IntervalsActivity earliestActivity = intervalsActivityService.getEarliestActivity(athleteId);
|
||||
if (earliestActivity == null) {
|
||||
return null;
|
||||
}
|
||||
return earliestActivity.getStartTime().atZone(ZoneOffset.UTC).toLocalDate()
|
||||
.with(WeekFields.ISO.dayOfWeek(), 1);
|
||||
}
|
||||
|
||||
private void recalculateMetricForWeek(
|
||||
final long athleteId,
|
||||
final GoalMetricEnum metric,
|
||||
|
||||
Reference in New Issue
Block a user