in service/src/main/java/org/apache/fineract/cn/group/internal/command/handler/GroupAggregate.java [336:387]
private void createMeetingSchedule(final GroupDefinitionEntity groupDefinitionEntity, final GroupEntity groupEntity) {
final Integer numberOfMeetings = groupDefinitionEntity.getNumberOfMeetings();
final Cycle.Frequency frequency = Cycle.Frequency.valueOf(groupDefinitionEntity.getFrequency());
final Cycle.Adjustment adjustment = Cycle.Adjustment.valueOf(groupDefinitionEntity.getAdjustment());
final Group.Weekday weekday = Group.Weekday.from(groupEntity.getWeekday());
final Set<String> members = StringUtils.commaDelimitedListToSet(groupEntity.getMembers());
LocalDate meeting = LocalDate.now(Clock.systemUTC());
if (frequency != Cycle.Frequency.DAILY) {
meeting = meeting.with(ChronoField.DAY_OF_WEEK, weekday.getValue());
}
for (int i = 0; i < numberOfMeetings; i++) {
switch (frequency) {
case DAILY:
meeting = meeting.plusDays(1L);
break;
case WEEKLY:
meeting = meeting.plusWeeks(1L);
break;
case FORTNIGHTLY:
meeting = meeting.plusWeeks(2L);
break;
case MONTHLY:
meeting.plusMonths(1L);
break;
}
final MeetingEntity meetingEntity = new MeetingEntity();
meetingEntity.setGroupEntity(groupEntity);
meetingEntity.setCurrentCycle(groupEntity.getCurrentCycle());
meetingEntity.setMeetingSequence((i + 1));
meetingEntity.setScheduledFor(meeting);
meetingEntity.setCreatedBy(UserContextHolder.checkedGetUser());
meetingEntity.setCreatedOn(LocalDateTime.now(Clock.systemUTC()));
final MeetingEntity savedMeeting = this.meetingRepository.save(meetingEntity);
this.attendeeRepository.save(
members
.stream()
.map(member -> {
final AttendeeEntity attendeeEntity = new AttendeeEntity();
attendeeEntity.setMeeting(savedMeeting);
attendeeEntity.setCustomerIdentifier(member);
attendeeEntity.setStatus(Attendee.Status.EXPECTED.name());
return attendeeEntity;
})
.collect(Collectors.toList())
);
}
}