diff --git a/src/main/java/ru/ulstu/activity/conference/ConferenceController.java b/src/main/java/ru/ulstu/activity/conference/ConferenceController.java new file mode 100644 index 0000000..cfa9ed6 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/conference/ConferenceController.java @@ -0,0 +1,60 @@ +package ru.ulstu.activity.conference; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import ru.ulstu.activity.api.ActivityController; +import ru.ulstu.activity.conference.model.ConferenceDashboardDto; +import ru.ulstu.activity.conference.model.ConferenceDto; +import ru.ulstu.activity.conference.model.ConferenceListDto; +import ru.ulstu.activity.conference.service.ConferenceService; +import ru.ulstu.core.model.response.PageableItems; +import ru.ulstu.core.model.response.Response; + +public class ConferenceController extends ActivityController { + + private final ConferenceService conferenceService; + + public ConferenceController(ConferenceService conferenceService) { + this.conferenceService = conferenceService; + } + + @Override + @GetMapping("list") + public Response> getList(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(conferenceService.findAllDto(offset, count)); + } + + @Override + @GetMapping("dashboard") + public Response> getDashboard(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(conferenceService.findAllActiveDto(offset, count)); + } + + @Override + public Response get(@PathVariable("grant-id") Integer entityId) { + return new Response<>(conferenceService.findById(entityId)); + } + + @Override + public Response create(ConferenceDto entity) { + return null; + } + + @Override + public Response update(ConferenceDto entity) { + return null; + } + + @Override + public Response delete(Integer entityId) { + return null; + } + + @Override + public void ping(int entityId) { + + } +} diff --git a/src/main/java/ru/ulstu/activity/conference/model/ConferenceDashboardDto.java b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDashboardDto.java new file mode 100644 index 0000000..3cdae05 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDashboardDto.java @@ -0,0 +1,21 @@ +package ru.ulstu.activity.conference.model; + +import ru.ulstu.activity.api.model.ActivityDashboardDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class ConferenceDashboardDto extends ActivityDashboardDto { + private final Set members; + + public ConferenceDashboardDto(Conference conference) { + super(conference.getId(), conference.getTitle()); + this.members = convert(conference.getActivityMembers(), ScienceGroupMemberDto::new); + } + + public Set getAuthors() { + return members; + } +} diff --git a/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java index 2fd5243..4efe9bc 100644 --- a/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java +++ b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java @@ -1,5 +1,7 @@ package ru.ulstu.activity.conference.repository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -17,7 +19,7 @@ public interface ConferenceRepository extends JpaRepository List findByUserAndYear(@Param("user") User user, @Param("year") Integer year); @Query("SELECT c FROM Conference c WHERE c.beginDate > :date") - List findAllActive(@Param("date") Date date); + Page findAllActive(Pageable pageable, @Param("date") Date date); @Query("SELECT case when count(c) > 0 then true else false end FROM Conference c JOIN c.papers p WHERE p.id = :paperId") boolean isPaperAttached(@Param("paperId") Integer paperId); diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index ef19f3b..6db366f 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -3,14 +3,9 @@ package ru.ulstu.activity.conference.service; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; import ru.ulstu.activity.common.service.AbstractActivityService; -import ru.ulstu.activity.conference.model.Conference; -import ru.ulstu.activity.conference.model.ConferenceDto; -import ru.ulstu.activity.conference.model.ConferenceFilterDto; -import ru.ulstu.activity.conference.model.ConferenceListDto; -import ru.ulstu.activity.conference.model.ConferenceUser; +import ru.ulstu.activity.conference.model.*; import ru.ulstu.activity.conference.repository.ConferenceRepository; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; @@ -32,6 +27,7 @@ import java.util.stream.Collectors; import static org.springframework.util.ObjectUtils.isEmpty; import static ru.ulstu.core.util.StreamApiUtils.convert; +import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service public class ConferenceService extends AbstractActivityService { @@ -239,12 +235,14 @@ public class ConferenceService extends AbstractActivityService findAllActiveDto() { - return convert(findAllActive(), ConferenceDto::new); + public PageableItems findAllActiveDto(int offset, int count) { + return convertPageable(findAllActive(offset, count), ConferenceDashboardDto::new); } - private List findAllActive() { - return conferenceRepository.findAllActive(new Date()); + private PageableItems findAllActive(int offset, int count) { + Page activeConferencePage = conferenceRepository + .findAllActive(new OffsetablePageRequest(offset, count), new Date()); + return new PageableItems<>(activeConferencePage.getTotalElements(), activeConferencePage.getContent()); } public boolean isAttachedToConference(Integer paperId) { @@ -253,34 +251,16 @@ public class ConferenceService extends AbstractActivityService inshoreSales = Arrays.asList(4074, 3455, 4112); - List nearshoreSales = Arrays.asList(3222, 3011, 3788); - List offshoreSales = Arrays.asList(7811, 7098, 6455); - - modelMap.addAttribute("inshoreSales", inshoreSales); - modelMap.addAttribute("nearshoreSales", nearshoreSales); - modelMap.addAttribute("offshoreSales", offshoreSales); + public Conference findConferenceById(Integer id) { + return conferenceRepository.getOne(id); } private void sendNotificationAfterUpdateDeadlines(Conference conference, List oldDeadlines) {