Reschedule Advanced Schedules
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Java CI with Maven / build (push) Successful in 47s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Java CI with Maven / build (push) Successful in 47s
				
			This commit is contained in:
		
							parent
							
								
									e9487143c6
								
							
						
					
					
						commit
						64ab22b7b0
					
				@ -4,9 +4,11 @@ package core.api.controller;
 | 
			
		||||
import core.api.models.auth.SimpleStatusResponse;
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.*;
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.scheduleInfos.AdvancedScheduleFieldInfo;
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.scheduleInfos.AdvancedScheduleInfo;
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.scheduleInfos.BasicScheduleFieldInfo;
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.scheduleInfos.ScheduleFieldInfo;
 | 
			
		||||
import core.entities.timemanager.AbstractSchedule;
 | 
			
		||||
import core.entities.timemanager.AdvancedTaskSchedule;
 | 
			
		||||
import core.entities.timemanager.BasicTaskSchedule;
 | 
			
		||||
import core.entities.timemanager.Task;
 | 
			
		||||
import core.services.*;
 | 
			
		||||
@ -91,6 +93,13 @@ public class ScheduleController {
 | 
			
		||||
            } else {
 | 
			
		||||
                return ResponseEntity.ok(updatedSchedule.getResult().toScheduleInfo());
 | 
			
		||||
            }
 | 
			
		||||
        } else if(permissionResult.getResult() instanceof AdvancedTaskSchedule && scheduleFieldInfo instanceof AdvancedScheduleFieldInfo) {
 | 
			
		||||
            ServiceResult<AbstractSchedule> updatedSchedule = taskScheduleService.editAdvancedSchedule((AdvancedTaskSchedule) permissionResult.getResult(), (AdvancedScheduleFieldInfo) scheduleFieldInfo);
 | 
			
		||||
            if(updatedSchedule.getExitCode() == ServiceExitCode.INVALID_OPERATION) {
 | 
			
		||||
                return ResponseEntity.status(400).body(new SimpleStatusResponse("failed"));
 | 
			
		||||
            } else {
 | 
			
		||||
                return ResponseEntity.ok(updatedSchedule.getResult().toScheduleInfo());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return ResponseEntity.status(400).body(new SimpleStatusResponse("failed"));
 | 
			
		||||
 | 
			
		||||
@ -68,7 +68,7 @@ public class TaskScheduleService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ServiceResult<AbstractSchedule> editBasicSchedule(BasicTaskSchedule schedule, BasicScheduleFieldInfo scheduleFieldInfo) {
 | 
			
		||||
        if(schedule.getTask().isFinished() || scheduleFieldInfo.getScheduleDate().isBefore(LocalDate.now())) {
 | 
			
		||||
        if(schedule.getTask().isFinished() || scheduleFieldInfo.getScheduleDate().isBefore(LocalDate.now()) || schedule.isActive()) {
 | 
			
		||||
            return new ServiceResult<>(ServiceExitCode.INVALID_OPERATION);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -77,6 +77,24 @@ public class TaskScheduleService {
 | 
			
		||||
        return new ServiceResult<>(schedule);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ServiceResult<AbstractSchedule> editAdvancedSchedule(AdvancedTaskSchedule schedule, AdvancedScheduleFieldInfo scheduleFieldInfo) {
 | 
			
		||||
        LocalDate startDate = scheduleFieldInfo.getScheduleStartTime().toLocalDate();
 | 
			
		||||
        LocalDate endDate = scheduleFieldInfo.getScheduleStopTime().toLocalDate();
 | 
			
		||||
 | 
			
		||||
        if(schedule.getTask().isFinished() || startDate.isBefore(LocalDate.now()) || endDate.isBefore(LocalDate.now()) || schedule.isActive()) {
 | 
			
		||||
            return new ServiceResult<>(ServiceExitCode.INVALID_OPERATION);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(scheduleFieldInfo.getScheduleStartTime().isAfter(scheduleFieldInfo.getScheduleStopTime())) {
 | 
			
		||||
            return new ServiceResult<>(ServiceExitCode.INVALID_PARAMETER);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        schedule.setStartTime(scheduleFieldInfo.getScheduleStartTime());
 | 
			
		||||
        schedule.setStopTime(scheduleFieldInfo.getScheduleStopTime());
 | 
			
		||||
        scheduleRepository.save(schedule);
 | 
			
		||||
        return new ServiceResult<>(schedule);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void deleteSchedule(AbstractSchedule schedule) {
 | 
			
		||||
        scheduleRepository.delete(schedule);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
package core.schedules;
 | 
			
		||||
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.scheduleInfos.AdvancedScheduleFieldInfo;
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.scheduleInfos.AdvancedScheduleInfo;
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.scheduleInfos.BasicScheduleFieldInfo;
 | 
			
		||||
import core.api.models.timemanager.taskSchedule.ForgottenScheduleInfo;
 | 
			
		||||
import core.entities.timemanager.AbstractSchedule;
 | 
			
		||||
@ -96,6 +97,11 @@ public class ScheduleServiceTest {
 | 
			
		||||
        ServiceResult<AbstractSchedule> result_3 = taskScheduleService.editBasicSchedule(entityManager.find(BasicTaskSchedule.class, 1L), new BasicScheduleFieldInfo(LocalDate.now()));
 | 
			
		||||
        assertEquals(ServiceExitCode.OK, result_3.getExitCode());
 | 
			
		||||
        assertNotEquals(((BasicTaskSchedule) result_3.getResult()).getScheduleDate(), oldDate);
 | 
			
		||||
 | 
			
		||||
        //Situation 4: Reschedule already running schedule
 | 
			
		||||
        ServiceResult<AbstractSchedule> result_4 = taskScheduleService.editBasicSchedule(entityManager.find(BasicTaskSchedule.class, 4L),
 | 
			
		||||
                new BasicScheduleFieldInfo(LocalDate.now()));
 | 
			
		||||
        assertEquals(ServiceExitCode.INVALID_OPERATION, result_4.getExitCode());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@ -269,4 +275,43 @@ public class ScheduleServiceTest {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    @SqlGroup({
 | 
			
		||||
            @Sql("classpath:taskgroupRepositoryTestEntries.sql"),
 | 
			
		||||
            @Sql("classpath:taskRepositoryEntries.sql"),
 | 
			
		||||
            @Sql("classpath:basicScheduleEntries.sql")
 | 
			
		||||
    })
 | 
			
		||||
    void editscheduleAdvanced() {
 | 
			
		||||
        //Situation 1: Schedule finished Task
 | 
			
		||||
        ServiceResult<AbstractSchedule> result_1 = taskScheduleService.editAdvancedSchedule(entityManager.find(AdvancedTaskSchedule.class, 12L),
 | 
			
		||||
                new AdvancedScheduleFieldInfo(LocalDateTime.now().plusHours(1L), LocalDateTime.now().plusHours(2L)));
 | 
			
		||||
        assertEquals(ServiceExitCode.INVALID_OPERATION, result_1.getExitCode());
 | 
			
		||||
 | 
			
		||||
        //Situation 2: Schedule Start is before today
 | 
			
		||||
        ServiceResult<AbstractSchedule> result_2 = taskScheduleService.editAdvancedSchedule(entityManager.find(AdvancedTaskSchedule.class, 11L),
 | 
			
		||||
                new AdvancedScheduleFieldInfo(LocalDateTime.now().minusDays(1L), LocalDateTime.now().plusHours(2L)));
 | 
			
		||||
        assertEquals(ServiceExitCode.INVALID_OPERATION, result_2.getExitCode());
 | 
			
		||||
 | 
			
		||||
        //Situation 3: Schedule End is before today
 | 
			
		||||
        ServiceResult<AbstractSchedule> result_3 = taskScheduleService.editAdvancedSchedule(entityManager.find(AdvancedTaskSchedule.class, 11L),
 | 
			
		||||
                new AdvancedScheduleFieldInfo(LocalDateTime.now().minusDays(2L), LocalDateTime.now().minusDays(1L)));
 | 
			
		||||
        assertEquals(ServiceExitCode.INVALID_OPERATION, result_3.getExitCode());
 | 
			
		||||
 | 
			
		||||
        //Situation 4: Start after stop
 | 
			
		||||
        ServiceResult<AbstractSchedule> result_4 = taskScheduleService.editAdvancedSchedule(entityManager.find(AdvancedTaskSchedule.class, 11L),
 | 
			
		||||
                new AdvancedScheduleFieldInfo(LocalDateTime.now().plusHours(2L), LocalDateTime.now().plusHours(1L)));
 | 
			
		||||
        assertEquals(ServiceExitCode.INVALID_PARAMETER, result_4.getExitCode());
 | 
			
		||||
 | 
			
		||||
        //Situation 5: Valid schedule
 | 
			
		||||
        ServiceResult<AbstractSchedule> result_5 = taskScheduleService.editAdvancedSchedule(entityManager.find(AdvancedTaskSchedule.class, 11L),
 | 
			
		||||
                new AdvancedScheduleFieldInfo(LocalDateTime.now(), LocalDateTime.now().plusHours(1L)));
 | 
			
		||||
        assertEquals(ServiceExitCode.OK, result_5.getExitCode());
 | 
			
		||||
        assertThat(entityManager.find(AdvancedTaskSchedule.class, result_5.getResult().getScheduleID())).isNotNull();
 | 
			
		||||
 | 
			
		||||
        //Situation 6: reschedule already running schedule
 | 
			
		||||
        ServiceResult<AbstractSchedule> result_6 = taskScheduleService.editAdvancedSchedule(entityManager.find(AdvancedTaskSchedule.class, 9L),
 | 
			
		||||
                new AdvancedScheduleFieldInfo(LocalDateTime.now(), LocalDateTime.now().plusHours(1L)));
 | 
			
		||||
        assertEquals(ServiceExitCode.INVALID_OPERATION, result_6.getExitCode());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -11,4 +11,5 @@ INSERT INTO abstract_schedule (schedule_type, scheduleid, start_time, stop_time,
 | 
			
		||||
VALUES (1, 8, null, null, null, 16, '2023-11-15 12:30:00.000', '2023-11-15 14:45:30.500'),
 | 
			
		||||
       (1, 9, '2023-11-16 12:35:00.000', null, null, 17, '2023-11-16 12:30:00.000', '2023-11-16 14:45:30.500'),
 | 
			
		||||
       (1, 10, '2023-11-17 12:35:00.000', '2023-11-17 12:45:00.000', null, 17, '2023-11-16 12:30:00.000', '2023-11-16 14:45:30.500'),
 | 
			
		||||
       (1, 11, null, null, null, 17, '2010-11-16 12:30:00.000', '2010-11-16 14:45:30.500');
 | 
			
		||||
       (1, 11, null, null, null, 17, '2010-11-16 12:30:00.000', '2010-11-16 14:45:30.500'),
 | 
			
		||||
       (1, 12, null, null, null, 18, '2010-11-16 12:30:00.000', '2010-11-16 14:45:30.500');
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user