Search in sources :

Example 16 with Task

use of org.olat.course.nodes.gta.Task in project OpenOLAT by OpenOLAT.

the class GTAManagerImpl method assignTaskAutomatically.

private AssignmentResponse assignTaskAutomatically(TaskList tasks, BusinessGroup businessGroup, Identity identity, CourseEnvironment courseEnv, GTACourseNode cNode) {
    Task currentTask;
    if (businessGroup != null) {
        currentTask = getTask(businessGroup, tasks);
    } else {
        currentTask = getTask(identity, tasks);
    }
    AssignmentResponse response;
    if (currentTask == null) {
        TaskList reloadedTasks = loadForUpdate(tasks);
        File tasksFolder = getTasksDirectory(courseEnv, cNode);
        String[] taskFiles = tasksFolder.list(SystemFilenameFilter.FILES_ONLY);
        List<String> assignedFilenames = getAssignedTasks(reloadedTasks);
        String taskName;
        if (GTACourseNode.GTASK_SAMPLING_UNIQUE.equals(cNode.getModuleConfiguration().get(GTACourseNode.GTASK_SAMPLING))) {
            taskName = nextUnique(taskFiles, assignedFilenames);
        } else {
            taskName = nextSlotRoundRobin(taskFiles, assignedFilenames);
        }
        if (taskName == null) {
            response = AssignmentResponse.NO_MORE_TASKS;
        } else {
            TaskProcess nextStep = nextStep(TaskProcess.assignment, cNode);
            TaskImpl task = createTask(taskName, reloadedTasks, nextStep, businessGroup, identity, cNode);
            task.setAssignmentDate(new Date());
            dbInstance.getCurrentEntityManager().persist(task);
            dbInstance.commit();
            syncAssessmentEntry((TaskImpl) currentTask, cNode, Role.user);
            response = new AssignmentResponse(task, Status.ok);
        }
    } else {
        if (currentTask.getTaskStatus() == TaskProcess.assignment) {
            ((TaskImpl) currentTask).setTaskStatus(TaskProcess.submit);
        }
        currentTask = dbInstance.getCurrentEntityManager().merge(currentTask);
        syncAssessmentEntry((TaskImpl) currentTask, cNode, Role.user);
        response = new AssignmentResponse(currentTask, Status.ok);
    }
    return response;
}
Also used : Task(org.olat.course.nodes.gta.Task) TaskProcess(org.olat.course.nodes.gta.TaskProcess) TaskImpl(org.olat.course.nodes.gta.model.TaskImpl) TaskList(org.olat.course.nodes.gta.TaskList) AssignmentResponse(org.olat.course.nodes.gta.AssignmentResponse) File(java.io.File) Date(java.util.Date) TaskDueDate(org.olat.course.nodes.gta.TaskDueDate) TaskRevisionDate(org.olat.course.nodes.gta.TaskRevisionDate) DueDate(org.olat.course.nodes.gta.model.DueDate)

Example 17 with Task

use of org.olat.course.nodes.gta.Task in project OpenOLAT by OpenOLAT.

the class GTAManagerImpl method createAndPersistTask.

@Override
public Task createAndPersistTask(String taskName, TaskList taskList, TaskProcess status, BusinessGroup assessedGroup, Identity assessedIdentity, GTACourseNode cNode) {
    Task task = createTask(taskName, taskList, status, assessedGroup, assessedIdentity, cNode);
    dbInstance.getCurrentEntityManager().persist(task);
    return task;
}
Also used : Task(org.olat.course.nodes.gta.Task)

Example 18 with Task

use of org.olat.course.nodes.gta.Task in project OpenOLAT by OpenOLAT.

the class GTACourseNode method archiveNodeData.

private void archiveNodeData(ICourse course, Identity assessedIdentity, TaskList taskList, String dirName, ZipOutputStream exportStream) {
    ModuleConfiguration config = getModuleConfiguration();
    GTAManager gtaManager = CoreSpringFactory.getImpl(GTAManager.class);
    String name = assessedIdentity.getUser().getLastName() + "_" + assessedIdentity.getUser().getFirstName() + "_" + assessedIdentity.getName();
    // for beautiful ordering
    int flow = 0;
    String userDirName = dirName + "/" + StringHelper.transformDisplayNameToFileSystemName(name);
    Task task = gtaManager.getTask(assessedIdentity, taskList);
    if (task != null && task.getTaskName() != null && config.getBooleanSafe(GTASK_ASSIGNMENT)) {
        File taskDirectory = gtaManager.getTasksDirectory(course.getCourseEnvironment(), this);
        File taskFile = new File(taskDirectory, task.getTaskName());
        if (taskFile.exists()) {
            String path = userDirName + "/" + (++flow) + "_task/" + taskFile.getName();
            ZipUtil.addFileToZip(path, taskFile, exportStream);
        }
    }
    if (config.getBooleanSafe(GTASK_SUBMIT)) {
        File submitDirectory = gtaManager.getSubmitDirectory(course.getCourseEnvironment(), this, assessedIdentity);
        String submissionDirName = userDirName + "/" + (++flow) + "_submissions";
        ZipUtil.addDirectoryToZip(submitDirectory.toPath(), submissionDirName, exportStream);
    }
    if (config.getBooleanSafe(GTACourseNode.GTASK_REVIEW_AND_CORRECTION)) {
        File correctionsDir = gtaManager.getCorrectionDirectory(course.getCourseEnvironment(), this, assessedIdentity);
        String correctionDirName = userDirName + "/" + (++flow) + "_corrections";
        ZipUtil.addDirectoryToZip(correctionsDir.toPath(), correctionDirName, exportStream);
    }
    if (task != null && config.getBooleanSafe(GTACourseNode.GTASK_REVISION_PERIOD)) {
        int numOfIteration = task.getRevisionLoop();
        for (int i = 1; i <= numOfIteration; i++) {
            File revisionDirectory = gtaManager.getRevisedDocumentsDirectory(course.getCourseEnvironment(), this, i, assessedIdentity);
            String revisionDirName = userDirName + "/" + (++flow) + "_revisions_" + i;
            ZipUtil.addDirectoryToZip(revisionDirectory.toPath(), revisionDirName, exportStream);
            File correctionDirectory = gtaManager.getRevisedDocumentsCorrectionsDirectory(course.getCourseEnvironment(), this, i, assessedIdentity);
            String correctionDirName = userDirName + "/" + (++flow) + "_corrections_" + i;
            ZipUtil.addDirectoryToZip(correctionDirectory.toPath(), correctionDirName, exportStream);
        }
    }
    // assessment documents
    if (config.getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, false)) {
        List<File> assessmentDocuments = course.getCourseEnvironment().getAssessmentManager().getIndividualAssessmentDocuments(this, assessedIdentity);
        if (assessmentDocuments != null && !assessmentDocuments.isEmpty()) {
            String assessmentDir = userDirName + "/" + (++flow) + "_assessment/";
            for (File document : assessmentDocuments) {
                String path = assessmentDir + document.getName();
                ZipUtil.addFileToZip(path, document, exportStream);
            }
        }
    }
}
Also used : Task(org.olat.course.nodes.gta.Task) ModuleConfiguration(org.olat.modules.ModuleConfiguration) GTAManager(org.olat.course.nodes.gta.GTAManager) File(java.io.File)

Example 19 with Task

use of org.olat.course.nodes.gta.Task in project OpenOLAT by OpenOLAT.

the class EditMultipleDueDatesController method formOK.

@Override
protected void formOK(UserRequest ureq) {
    for (Task task : tasks) {
        TaskDueDate dueDates = gtaManager.getDueDatesTask(task);
        dueDates.setAssignmentDueDate(assignmentDueDateEl.getDate());
        dueDates.setSubmissionDueDate(submissionDueDateEl.getDate());
        dueDates.setRevisionsDueDate(revisionDueDateEl.getDate());
        dueDates.setSolutionDueDate(solutionDueDateEl.getDate());
        dueDates = gtaManager.updateTaskDueDate(dueDates);
        if (task.getTaskStatus().ordinal() > TaskProcess.submit.ordinal() && dueDates.getSubmissionDueDate() != null && dueDates.getSubmissionDueDate().after(ureq.getRequestTimestamp())) {
            // only submit allowed
            TaskProcess submit = gtaManager.previousStep(TaskProcess.review, gtaNode);
            if (submit == TaskProcess.submit) {
                task = gtaManager.updateTask(task, submit, gtaNode, Role.coach);
                gtaManager.log("Back to submission", "revert status of task back to submission", task, getIdentity(), task.getIdentity(), task.getBusinessGroup(), courseEnv, gtaNode);
            }
        }
    }
    fireEvent(ureq, Event.DONE_EVENT);
}
Also used : Task(org.olat.course.nodes.gta.Task) TaskDueDate(org.olat.course.nodes.gta.TaskDueDate) TaskProcess(org.olat.course.nodes.gta.TaskProcess)

Example 20 with Task

use of org.olat.course.nodes.gta.Task in project OpenOLAT by OpenOLAT.

the class OLATUpgrade_11_0_0 method processAssessmentPropertyForGTA.

private void processAssessmentPropertyForGTA(Identity assessedIdentity, AssessmentEntryImpl entry, GTACourseNode cNode, RepositoryEntry courseEntry) {
    List<Task> tasks = gtaManager.getTasks(assessedIdentity, courseEntry, cNode);
    if (tasks != null && tasks.size() > 0) {
        Task task = tasks.get(0);
        AssessmentEntryStatus status = gtaManager.convertToAssessmentEntrystatus(task, cNode);
        entry.setStatus(status.name());
        String details = gtaManager.getDetails(assessedIdentity, courseEntry, cNode);
        entry.setDetails(details);
    }
}
Also used : Task(org.olat.course.nodes.gta.Task) AssessmentEntryStatus(org.olat.modules.assessment.model.AssessmentEntryStatus)

Aggregations

Task (org.olat.course.nodes.gta.Task)86 TaskList (org.olat.course.nodes.gta.TaskList)36 Identity (org.olat.core.id.Identity)34 RepositoryEntry (org.olat.repository.RepositoryEntry)34 File (java.io.File)32 Test (org.junit.Test)24 GTACourseNode (org.olat.course.nodes.GTACourseNode)24 AssignmentResponse (org.olat.course.nodes.gta.AssignmentResponse)20 BusinessGroup (org.olat.group.BusinessGroup)18 TaskProcess (org.olat.course.nodes.gta.TaskProcess)16 TaskRevisionDate (org.olat.course.nodes.gta.TaskRevisionDate)14 DueDate (org.olat.course.nodes.gta.model.DueDate)10 Date (java.util.Date)8 TaskDueDate (org.olat.course.nodes.gta.TaskDueDate)8 SubmitEvent (org.olat.course.nodes.gta.ui.events.SubmitEvent)8 ArrayList (java.util.ArrayList)6 HashSet (java.util.HashSet)6 CloseableModalController (org.olat.core.gui.control.generic.closablewrapper.CloseableModalController)6 TaskImpl (org.olat.course.nodes.gta.model.TaskImpl)6 ModuleConfiguration (org.olat.modules.ModuleConfiguration)6