Search in sources :

Example 1 with ParticipantAndLectureSummary

use of org.olat.modules.lecture.model.ParticipantAndLectureSummary in project OpenOLAT by OpenOLAT.

the class LectureServiceImpl method startLectureBlock.

@Override
public List<Identity> startLectureBlock(Identity teacher, LectureBlock lectureBlock) {
    RepositoryEntry entry = lectureBlock.getEntry();
    Date now = new Date();
    List<ParticipantAndLectureSummary> participantsAndSummaries = lectureParticipantSummaryDao.getLectureParticipantSummaries(lectureBlock);
    Set<Identity> participants = new HashSet<>();
    for (ParticipantAndLectureSummary participantAndSummary : participantsAndSummaries) {
        if (participants.contains(participantAndSummary.getIdentity())) {
            continue;
        }
        if (participantAndSummary.getSummary() == null) {
            lectureParticipantSummaryDao.createSummary(entry, participantAndSummary.getIdentity(), now);
        }
        participants.add(participantAndSummary.getIdentity());
    }
    return new ArrayList<>(participants);
}
Also used : ParticipantAndLectureSummary(org.olat.modules.lecture.model.ParticipantAndLectureSummary) ArrayList(java.util.ArrayList) RepositoryEntry(org.olat.repository.RepositoryEntry) Identity(org.olat.core.id.Identity) Date(java.util.Date) HashSet(java.util.HashSet)

Example 2 with ParticipantAndLectureSummary

use of org.olat.modules.lecture.model.ParticipantAndLectureSummary in project OpenOLAT by OpenOLAT.

the class LectureServiceImpl method syncParticipantSummaries.

@Override
public List<Identity> syncParticipantSummaries(LectureBlock lectureBlock) {
    RepositoryEntry entry = lectureBlock.getEntry();
    Date now = new Date();
    List<ParticipantAndLectureSummary> participantsAndSummaries = lectureParticipantSummaryDao.getLectureParticipantSummaries(lectureBlock);
    Set<Identity> participants = new HashSet<>();
    for (ParticipantAndLectureSummary participantAndSummary : participantsAndSummaries) {
        if (participants.contains(participantAndSummary.getIdentity())) {
            continue;
        }
        if (participantAndSummary.getSummary() == null) {
            lectureParticipantSummaryDao.createSummary(entry, participantAndSummary.getIdentity(), now);
        }
        participants.add(participantAndSummary.getIdentity());
    }
    return new ArrayList<>(participants);
}
Also used : ParticipantAndLectureSummary(org.olat.modules.lecture.model.ParticipantAndLectureSummary) ArrayList(java.util.ArrayList) RepositoryEntry(org.olat.repository.RepositoryEntry) Identity(org.olat.core.id.Identity) Date(java.util.Date) HashSet(java.util.HashSet)

Example 3 with ParticipantAndLectureSummary

use of org.olat.modules.lecture.model.ParticipantAndLectureSummary in project OpenOLAT by OpenOLAT.

the class LectureServiceImpl method autoClose.

private void autoClose(LectureBlockImpl lectureBlock) {
    String blockBefore = auditLogDao.toXml(lectureBlock);
    lectureBlock.setStatus(LectureBlockStatus.done);
    lectureBlock.setRollCallStatus(LectureRollCallStatus.autoclosed);
    if (lectureBlock.getEffectiveLecturesNumber() <= 0 && lectureBlock.getStatus() != LectureBlockStatus.cancelled) {
        lectureBlock.setEffectiveLecturesNumber(lectureBlock.getPlannedLecturesNumber());
    }
    lectureBlock.setAutoClosedDate(new Date());
    lectureBlock = (LectureBlockImpl) lectureBlockDao.update(lectureBlock);
    dbInstance.commit();
    List<LectureBlockRollCall> rollCalls = lectureBlockRollCallDao.getRollCalls(lectureBlock);
    Map<Identity, LectureBlockRollCall> rollCallMap = rollCalls.stream().collect(Collectors.toMap(r -> r.getIdentity(), r -> r));
    List<ParticipantAndLectureSummary> participantsAndSummaries = lectureParticipantSummaryDao.getLectureParticipantSummaries(lectureBlock);
    Set<Identity> participants = new HashSet<>();
    for (ParticipantAndLectureSummary participantAndSummary : participantsAndSummaries) {
        if (participants.contains(participantAndSummary.getIdentity())) {
            continue;
        }
        if (participantAndSummary.getSummary() != null) {
            LectureBlockRollCall rollCall = rollCallMap.get(participantAndSummary.getIdentity());
            String before = auditLogDao.toXml(rollCall);
            if (rollCall == null) {
                rollCall = lectureBlockRollCallDao.createAndPersistRollCall(lectureBlock, participantAndSummary.getIdentity(), null, null, null, new ArrayList<>());
            } else if (rollCall.getLecturesAbsentList().isEmpty() && rollCall.getLecturesAttendedList().isEmpty()) {
                rollCall = lectureBlockRollCallDao.addLecture(lectureBlock, rollCall, new ArrayList<>());
            }
            String after = auditLogDao.toXml(rollCall);
            auditLogDao.auditLog(LectureBlockAuditLog.Action.autoclose, before, after, null, lectureBlock, rollCall, lectureBlock.getEntry(), participantAndSummary.getIdentity(), null);
        }
    }
    String blockAfter = auditLogDao.toXml(lectureBlock);
    auditLogDao.auditLog(LectureBlockAuditLog.Action.autoclose, blockBefore, blockAfter, null, lectureBlock, null, lectureBlock.getEntry(), null, null);
    dbInstance.commit();
    recalculateSummary(lectureBlock.getEntry());
}
Also used : Util(org.olat.core.util.Util) LectureParticipantSummary(org.olat.modules.lecture.LectureParticipantSummary) LectureBlockRollCallSearchParameters(org.olat.modules.lecture.LectureBlockRollCallSearchParameters) Date(java.util.Date) I18nManager(org.olat.core.util.i18n.I18nManager) RepositoryEntryRef(org.olat.repository.RepositoryEntryRef) LectureBlockAuditLog(org.olat.modules.lecture.LectureBlockAuditLog) Autowired(org.springframework.beans.factory.annotation.Autowired) IdentityRef(org.olat.basesecurity.IdentityRef) MailContextImpl(org.olat.core.util.mail.MailContextImpl) RepositoryEntryLectureConfiguration(org.olat.modules.lecture.RepositoryEntryLectureConfiguration) Locale(java.util.Locale) GroupDAO(org.olat.basesecurity.manager.GroupDAO) Map(java.util.Map) Group(org.olat.basesecurity.Group) LectureBlockToGroup(org.olat.modules.lecture.LectureBlockToGroup) LectureBlockStatistics(org.olat.modules.lecture.model.LectureBlockStatistics) MailTemplate(org.olat.core.util.mail.MailTemplate) KalendarEvent(org.olat.commons.calendar.model.KalendarEvent) OLog(org.olat.core.logging.OLog) Translator(org.olat.core.gui.translator.Translator) LectureBlock(org.olat.modules.lecture.LectureBlock) LectureBlockWithTeachers(org.olat.modules.lecture.model.LectureBlockWithTeachers) UserPropertyHandler(org.olat.user.propertyhandlers.UserPropertyHandler) Set(java.util.Set) LectureBlockImpl(org.olat.modules.lecture.model.LectureBlockImpl) UUID(java.util.UUID) AggregatedLectureBlocksStatistics(org.olat.modules.lecture.model.AggregatedLectureBlocksStatistics) Collectors(java.util.stream.Collectors) VelocityContext(org.apache.velocity.VelocityContext) MailManager(org.olat.core.util.mail.MailManager) LectureService(org.olat.modules.lecture.LectureService) List(java.util.List) Identity(org.olat.core.id.Identity) ParticipantAndLectureSummary(org.olat.modules.lecture.model.ParticipantAndLectureSummary) IdentityImpl(org.olat.basesecurity.IdentityImpl) MailContext(org.olat.core.util.mail.MailContext) LectureBlockIdentityStatistics(org.olat.modules.lecture.model.LectureBlockIdentityStatistics) Settings(org.olat.core.helpers.Settings) MailBundle(org.olat.core.util.mail.MailBundle) LectureBlockAndRollCall(org.olat.modules.lecture.model.LectureBlockAndRollCall) Action(org.olat.modules.lecture.LectureBlockAuditLog.Action) HashMap(java.util.HashMap) CalendarManagedFlag(org.olat.commons.calendar.CalendarManagedFlag) Reason(org.olat.modules.lecture.Reason) RepositoryEntry(org.olat.repository.RepositoryEntry) LecturesBlockSearchParameters(org.olat.modules.lecture.model.LecturesBlockSearchParameters) ArrayList(java.util.ArrayList) Kalendar(org.olat.commons.calendar.model.Kalendar) HashSet(java.util.HashSet) Calendar(java.util.Calendar) Service(org.springframework.stereotype.Service) StringHelper(org.olat.core.util.StringHelper) LectureBlockRollCall(org.olat.modules.lecture.LectureBlockRollCall) RepositoryEntryDAO(org.olat.repository.manager.RepositoryEntryDAO) LectureBlockToTeacher(org.olat.modules.lecture.model.LectureBlockToTeacher) CalendarManager(org.olat.commons.calendar.CalendarManager) LectureBlockRef(org.olat.modules.lecture.LectureBlockRef) LectureBlockStatus(org.olat.modules.lecture.LectureBlockStatus) LectureStatisticsSearchParameters(org.olat.modules.lecture.model.LectureStatisticsSearchParameters) Formatter(org.olat.core.util.Formatter) MailerResult(org.olat.core.util.mail.MailerResult) LectureAdminController(org.olat.modules.lecture.ui.LectureAdminController) LectureModule(org.olat.modules.lecture.LectureModule) Iterator(java.util.Iterator) LectureBlockRollCallRef(org.olat.modules.lecture.LectureBlockRollCallRef) File(java.io.File) UserManager(org.olat.user.UserManager) DB(org.olat.core.commons.persistence.DB) BusinessGroup(org.olat.group.BusinessGroup) DeletableGroupData(org.olat.group.DeletableGroupData) LectureRollCallStatus(org.olat.modules.lecture.LectureRollCallStatus) Tracing(org.olat.core.logging.Tracing) ConfigurationHelper(org.olat.modules.lecture.ui.ConfigurationHelper) UserDataDeletable(org.olat.user.UserDataDeletable) ParticipantAndLectureSummary(org.olat.modules.lecture.model.ParticipantAndLectureSummary) ArrayList(java.util.ArrayList) Date(java.util.Date) LectureBlockRollCall(org.olat.modules.lecture.LectureBlockRollCall) Identity(org.olat.core.id.Identity) HashSet(java.util.HashSet)

Example 4 with ParticipantAndLectureSummary

use of org.olat.modules.lecture.model.ParticipantAndLectureSummary in project OpenOLAT by OpenOLAT.

the class LectureParticipantSummaryDAO method getLectureParticipantSummaries.

public List<ParticipantAndLectureSummary> getLectureParticipantSummaries(LectureBlock block) {
    StringBuilder sb = new StringBuilder();
    sb.append("select participant, summary from lectureblock block").append(" inner join block.groups blockGroup").append(" inner join blockGroup.group bGroup").append(" inner join bGroup.members membership on (membership.role='").append(GroupRoles.participant.name()).append("')").append(" inner join membership.identity participant").append(" inner join participant.user participantUser").append(" left join lectureparticipantsummary summary on (summary.identity.key=participant.key and summary.entry.key=block.entry.key)").append(" where block.key=:blockKey");
    List<Object[]> rawObjects = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Object[].class).setParameter("blockKey", block.getKey()).getResultList();
    List<ParticipantAndLectureSummary> summaries = new ArrayList<>(rawObjects.size());
    for (Object[] rawObject : rawObjects) {
        Identity identity = (Identity) rawObject[0];
        LectureParticipantSummary summary = (LectureParticipantSummary) rawObject[1];
        summaries.add(new ParticipantAndLectureSummary(identity, summary));
    }
    return summaries;
}
Also used : ParticipantAndLectureSummary(org.olat.modules.lecture.model.ParticipantAndLectureSummary) LectureParticipantSummary(org.olat.modules.lecture.LectureParticipantSummary) ArrayList(java.util.ArrayList) Identity(org.olat.core.id.Identity)

Example 5 with ParticipantAndLectureSummary

use of org.olat.modules.lecture.model.ParticipantAndLectureSummary in project openolat by klemens.

the class LectureParticipantSummaryDAO method getLectureParticipantSummaries.

public List<ParticipantAndLectureSummary> getLectureParticipantSummaries(LectureBlock block) {
    StringBuilder sb = new StringBuilder();
    sb.append("select participant, summary from lectureblock block").append(" inner join block.groups blockGroup").append(" inner join blockGroup.group bGroup").append(" inner join bGroup.members membership on (membership.role='").append(GroupRoles.participant.name()).append("')").append(" inner join membership.identity participant").append(" inner join participant.user participantUser").append(" left join lectureparticipantsummary summary on (summary.identity.key=participant.key and summary.entry.key=block.entry.key)").append(" where block.key=:blockKey");
    List<Object[]> rawObjects = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Object[].class).setParameter("blockKey", block.getKey()).getResultList();
    List<ParticipantAndLectureSummary> summaries = new ArrayList<>(rawObjects.size());
    for (Object[] rawObject : rawObjects) {
        Identity identity = (Identity) rawObject[0];
        LectureParticipantSummary summary = (LectureParticipantSummary) rawObject[1];
        summaries.add(new ParticipantAndLectureSummary(identity, summary));
    }
    return summaries;
}
Also used : ParticipantAndLectureSummary(org.olat.modules.lecture.model.ParticipantAndLectureSummary) LectureParticipantSummary(org.olat.modules.lecture.LectureParticipantSummary) ArrayList(java.util.ArrayList) Identity(org.olat.core.id.Identity)

Aggregations

ParticipantAndLectureSummary (org.olat.modules.lecture.model.ParticipantAndLectureSummary)10 ArrayList (java.util.ArrayList)8 Identity (org.olat.core.id.Identity)8 RepositoryEntry (org.olat.repository.RepositoryEntry)8 Date (java.util.Date)6 HashSet (java.util.HashSet)6 LectureParticipantSummary (org.olat.modules.lecture.LectureParticipantSummary)4 File (java.io.File)2 Calendar (java.util.Calendar)2 HashMap (java.util.HashMap)2 Iterator (java.util.Iterator)2 List (java.util.List)2 Locale (java.util.Locale)2 Map (java.util.Map)2 Set (java.util.Set)2 UUID (java.util.UUID)2 Collectors (java.util.stream.Collectors)2 VelocityContext (org.apache.velocity.VelocityContext)2 Test (org.junit.Test)2 Group (org.olat.basesecurity.Group)2