diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ApplicationPeriodServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ApplicationPeriodServiceImpl.java index ba9cd5d8be..85aefb781b 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ApplicationPeriodServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ApplicationPeriodServiceImpl.java @@ -8,18 +8,17 @@ import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.mysema.query.types.expr.BooleanExpression; - +import se.su.dsv.scipro.data.dataobjects.ProjectClass; import se.su.dsv.scipro.match.dataobject.ApplicationPeriod; import se.su.dsv.scipro.match.dataobject.QApplicationPeriod; -import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest; import se.su.dsv.scipro.springdata.repos.ApplicationPeriodRepo; import se.su.dsv.scipro.springdata.services.ApplicationPeriodService; +import com.mysema.query.types.expr.BooleanExpression; + @Service ( "applicationPeriodService" ) @Transactional ( readOnly = true ) public class ApplicationPeriodServiceImpl extends AbstractQueryService<ApplicationPeriod, Long> implements ApplicationPeriodService { @@ -41,6 +40,16 @@ public class ApplicationPeriodServiceImpl extends AbstractQueryService<Applicati return constructList(periods); } + @Override + public ApplicationPeriod getCurrentPeriod(Date currentDate, ProjectClass pc) { + ApplicationPeriod ap = applicationPeriodRepo.findOne(startedBefore(currentDate).and(endedAfter(currentDate)).and(haveProjectClass(pc))); + return ap; + } + + private BooleanExpression haveProjectClass(ProjectClass pc) { + return QApplicationPeriod.applicationPeriod.projectClass.contains(pc); + } + private BooleanExpression startedBefore(Date currentDate){ return QApplicationPeriod.applicationPeriod.startDate.before(currentDate); } @@ -56,4 +65,5 @@ public class ApplicationPeriodServiceImpl extends AbstractQueryService<Applicati } return list; } + } diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java index fa5df6908b..270b47c5a8 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java @@ -1,6 +1,7 @@ package se.su.dsv.scipro.springdata.serviceimpls; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.SortedSet; @@ -24,6 +25,7 @@ import se.su.dsv.scipro.match.dataobject.QSupervisorIdea; import se.su.dsv.scipro.match.dataobject.SupervisorIdea; import se.su.dsv.scipro.match.dataobject.Watson; import se.su.dsv.scipro.springdata.repos.SupervisorIdeaRepo; +import se.su.dsv.scipro.springdata.services.ApplicationPeriodService; import se.su.dsv.scipro.springdata.services.StudentService; import se.su.dsv.scipro.springdata.services.SupervisorIdeaService; import se.su.dsv.scipro.springdata.services.SupervisorService; @@ -42,6 +44,8 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId private StudentService studentService; @Resource private SupervisorService supervisorService; + @Resource + private ApplicationPeriodService applicationPeriodService; private int MAX_PARTNERS = 1; @@ -117,6 +121,7 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId s.addIdeaParticipation(ip); } idea.setIdeaStatus(IdeaStatus.TAKEN); + idea.setApplicationPeriod(applicationPeriodService.getCurrentPeriod(new Date(), idea.getProjectClass())); return true; } } @@ -142,6 +147,8 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId } //Erase watson boxes idea.setWatson(new Watson()); + //Remove application period association + idea.setApplicationPeriod(null); //Change status back to waiting idea.setIdeaStatus(IdeaStatus.WAITING); diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ApplicationPeriodService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ApplicationPeriodService.java index 2f742d44b3..0c45a0cb8c 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/services/ApplicationPeriodService.java +++ b/src/main/java/se/su/dsv/scipro/springdata/services/ApplicationPeriodService.java @@ -3,10 +3,11 @@ package se.su.dsv.scipro.springdata.services; import java.util.Date; import java.util.List; +import se.su.dsv.scipro.data.dataobjects.ProjectClass; import se.su.dsv.scipro.match.dataobject.ApplicationPeriod; public interface ApplicationPeriodService extends GenericService<ApplicationPeriod, Long>, QueryService<ApplicationPeriod, Long> { List<ApplicationPeriod> getCurrentPeriods(final Date currentDate); - + ApplicationPeriod getCurrentPeriod(final Date currentDate, final ProjectClass pc); }