Search in sources :

Example 1 with CourseModule

use of org.motechproject.mots.domain.CourseModule in project mots by motech-implementations.

the class ModuleService method updateModule.

/**
 * Update existing Module.
 * @param id id of Module to be updated
 * @param moduleDto Module DTO
 * @return updated Module
 */
@PreAuthorize(RoleNames.HAS_MANAGE_MODULES_ROLE)
public ModuleDto updateModule(UUID id, ModuleDto moduleDto) {
    Course course = getDraftCourse();
    CourseModule courseModule = course.findCourseModuleByModuleId(id);
    Module module = courseModule.getModule();
    if (!Status.DRAFT.equals(module.getStatus())) {
        throw new MotsException("Only Module draft can be updated");
    }
    moduleMapper.updateCourseModuleFromDto(moduleDto, courseModule);
    courseModule = courseModuleRepository.save(courseModule);
    return moduleMapper.toDto(courseModule);
}
Also used : CourseModule(org.motechproject.mots.domain.CourseModule) Course(org.motechproject.mots.domain.Course) CourseModule(org.motechproject.mots.domain.CourseModule) Module(org.motechproject.mots.domain.Module) MotsException(org.motechproject.mots.exception.MotsException) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize)

Example 2 with CourseModule

use of org.motechproject.mots.domain.CourseModule in project mots by motech-implementations.

the class ModuleService method copyModule.

/**
 * Copy Module as a new draft.
 * @param id id of module to be copied
 * @return copied module draft
 */
@PreAuthorize(RoleNames.HAS_MANAGE_MODULES_ROLE)
public ModuleDto copyModule(UUID id) {
    Course course = getDraftCourse();
    CourseModule courseModule = course.findCourseModuleByModuleId(id);
    if (!Status.RELEASED.equals(courseModule.getModule().getStatus())) {
        throw new MotsException("Only released Module can be copied");
    }
    Module moduleCopy = courseModule.getModule().copyAsNewDraft();
    courseModule.setModule(moduleCopy);
    courseModule = courseModuleRepository.save(courseModule);
    return moduleMapper.toDto(courseModule);
}
Also used : CourseModule(org.motechproject.mots.domain.CourseModule) Course(org.motechproject.mots.domain.Course) CourseModule(org.motechproject.mots.domain.CourseModule) Module(org.motechproject.mots.domain.Module) MotsException(org.motechproject.mots.exception.MotsException) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize)

Example 3 with CourseModule

use of org.motechproject.mots.domain.CourseModule in project mots by motech-implementations.

the class ModuleService method createModule.

/**
 * Create new Module.
 * @param moduleDto DTO of Module to be created
 * @return Created Module
 */
@Transactional
@PreAuthorize(RoleNames.HAS_MANAGE_MODULES_ROLE)
public ModuleDto createModule(ModuleDto moduleDto) {
    Course course = getDraftCourse();
    CourseModule courseModule = new CourseModule(course, Module.initialize(), course.getModules().size());
    moduleMapper.updateCourseModuleFromDto(moduleDto, courseModule);
    courseModule = courseModuleRepository.save(courseModule);
    return moduleMapper.toDto(courseModule);
}
Also used : CourseModule(org.motechproject.mots.domain.CourseModule) Course(org.motechproject.mots.domain.Course) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize) Transactional(org.springframework.transaction.annotation.Transactional)

Example 4 with CourseModule

use of org.motechproject.mots.domain.CourseModule in project mots by motech-implementations.

the class ModuleProgressService method createModuleProgress.

private void createModuleProgress(CommunityHealthWorker chw, Module module) {
    Course course = moduleService.getReleasedCourse();
    if (!moduleProgressRepository.findByCommunityHealthWorkerIdAndCourseModuleModuleIdAndCourseModuleCourseId(chw.getId(), module.getId(), course.getId()).isPresent()) {
        CourseModule courseModule = moduleService.findReleasedCourseModuleByModuleId(module.getId());
        ModuleProgress moduleProgress = new ModuleProgress(chw, courseModule);
        moduleProgressRepository.save(moduleProgress);
    }
}
Also used : ModuleProgress(org.motechproject.mots.domain.ModuleProgress) CourseModule(org.motechproject.mots.domain.CourseModule) Course(org.motechproject.mots.domain.Course)

Example 5 with CourseModule

use of org.motechproject.mots.domain.CourseModule in project mots by motech-implementations.

the class ModuleMapper method updateCourseFromDto.

/**
 * Update Course using data from DTO.
 * @param courseDto DTO with new data
 * @param course Course to be updated
 */
public void updateCourseFromDto(CourseDto courseDto, Course course) {
    List<ModuleDto> moduleDtos = courseDto.getChildren();
    List<CourseModule> courseModules = course.getCourseModules();
    List<CourseModule> updatedCourseModules = new ArrayList<>();
    if (courseModules == null) {
        courseModules = new ArrayList<>();
    }
    if (moduleDtos != null && !moduleDtos.isEmpty()) {
        for (int i = 0; i < moduleDtos.size(); i++) {
            ModuleDto moduleDto = moduleDtos.get(i);
            CourseModule courseModule;
            if (StringUtils.isBlank(moduleDto.getId())) {
                courseModule = new CourseModule(course, Module.initialize());
            } else {
                courseModule = courseModules.stream().filter(cm -> cm.getModule().getId().toString().equals(moduleDto.getId())).findAny().orElseThrow(() -> new EntityNotFoundException("Cannot update course, because error occurred during module list update"));
            }
            updateCourseModuleFromDto(moduleDto, courseModule);
            courseModule.setListOrder(i);
            updatedCourseModules.add(courseModule);
        }
    }
    updateFromDto(courseDto, course);
    course.setCourseModules(updatedCourseModules);
}
Also used : StringUtils(org.apache.commons.lang.StringUtils) Mappings(org.mapstruct.Mappings) Mapping(org.mapstruct.Mapping) ChoiceDto(org.motechproject.mots.dto.ChoiceDto) CourseModule(org.motechproject.mots.domain.CourseModule) CallFlowElementType(org.motechproject.mots.domain.enums.CallFlowElementType) ArrayList(java.util.ArrayList) UnitDto(org.motechproject.mots.dto.UnitDto) BooleanUtils(org.apache.commons.lang.BooleanUtils) MessageDto(org.motechproject.mots.dto.MessageDto) MappingTarget(org.mapstruct.MappingTarget) Mapper(org.mapstruct.Mapper) MultipleChoiceQuestion(org.motechproject.mots.domain.MultipleChoiceQuestion) Module(org.motechproject.mots.domain.Module) EntityNotFoundException(org.motechproject.mots.exception.EntityNotFoundException) Mappers(org.mapstruct.factory.Mappers) MultipleChoiceQuestionDto(org.motechproject.mots.dto.MultipleChoiceQuestionDto) Choice(org.motechproject.mots.domain.Choice) Course(org.motechproject.mots.domain.Course) CallFlowElement(org.motechproject.mots.domain.CallFlowElement) ReportingPolicy(org.mapstruct.ReportingPolicy) ModuleDto(org.motechproject.mots.dto.ModuleDto) List(java.util.List) Message(org.motechproject.mots.domain.Message) Unit(org.motechproject.mots.domain.Unit) ModuleSimpleDto(org.motechproject.mots.dto.ModuleSimpleDto) Status(org.motechproject.mots.domain.enums.Status) CourseDto(org.motechproject.mots.dto.CourseDto) CallFlowElementDto(org.motechproject.mots.dto.CallFlowElementDto) CourseModule(org.motechproject.mots.domain.CourseModule) ArrayList(java.util.ArrayList) EntityNotFoundException(org.motechproject.mots.exception.EntityNotFoundException) ModuleDto(org.motechproject.mots.dto.ModuleDto)

Aggregations

Course (org.motechproject.mots.domain.Course)5 CourseModule (org.motechproject.mots.domain.CourseModule)5 Module (org.motechproject.mots.domain.Module)3 PreAuthorize (org.springframework.security.access.prepost.PreAuthorize)3 MotsException (org.motechproject.mots.exception.MotsException)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 BooleanUtils (org.apache.commons.lang.BooleanUtils)1 StringUtils (org.apache.commons.lang.StringUtils)1 Mapper (org.mapstruct.Mapper)1 Mapping (org.mapstruct.Mapping)1 MappingTarget (org.mapstruct.MappingTarget)1 Mappings (org.mapstruct.Mappings)1 ReportingPolicy (org.mapstruct.ReportingPolicy)1 Mappers (org.mapstruct.factory.Mappers)1 CallFlowElement (org.motechproject.mots.domain.CallFlowElement)1 Choice (org.motechproject.mots.domain.Choice)1 Message (org.motechproject.mots.domain.Message)1 ModuleProgress (org.motechproject.mots.domain.ModuleProgress)1 MultipleChoiceQuestion (org.motechproject.mots.domain.MultipleChoiceQuestion)1