diff --git a/src/main/java/mops/gruppen2/controller/APIController.java b/src/main/java/mops/gruppen2/controller/APIController.java index 92d4de2..93bcc90 100644 --- a/src/main/java/mops/gruppen2/controller/APIController.java +++ b/src/main/java/mops/gruppen2/controller/APIController.java @@ -1,23 +1,18 @@ package mops.gruppen2.controller; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.javafaker.Faker; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.ProductSwaggerExample; import mops.gruppen2.domain.apiWrapper.UpdatedGroupRequestMapper; import mops.gruppen2.domain.event.Event; -import mops.gruppen2.service.APIFormatter; +import mops.gruppen2.service.APIFormatterService; import mops.gruppen2.service.EventService; import mops.gruppen2.service.GroupService; import mops.gruppen2.service.SerializationService; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; /** @@ -37,22 +32,27 @@ public class APIController { this.groupService = groupService; } - @GetMapping("/updatedGroups/{status}") + @GetMapping("/updateGroups/{status}") @ApiOperation(value = "Gibt alle Gruppen zurück in denen sich etwas geändert hat") public UpdatedGroupRequestMapper updateGroup(@ApiParam("Status des Anfragestellers") @PathVariable Long status) throws EventException { List events = eventService.getNewEvents(status); - UpdatedGroupRequestMapper updatedGroupRequestMapper = APIFormatter.wrapp(eventService.getMaxEvent_id(), groupService.projectEventList(events)); + UpdatedGroupRequestMapper updatedGroupRequestMapper = APIFormatterService.wrapp(eventService.getMaxEvent_id(), groupService.projectEventList(events)); return updatedGroupRequestMapper; } - @GetMapping("/getGroups/{teilnehme}") + @GetMapping("/getGroupIdsOfUser/{teilnehmer}") @ApiOperation(value = "Gibt alle Gruppen zurück in denen sich ein Teilnehmer befindet") - public List getGroupsOfUser(@ApiParam("Der Teilnehmer") @PathVariable String userId) throws EventException { - List asd = new ArrayList<>(); - - return asd; + public List getGroupsOfUser(@ApiParam("Der Teilnehmer") @PathVariable String teilnehmer) throws EventException { + return eventService.getGroupsOfUser(teilnehmer); } + @GetMapping("/getGroup/{groupId}") + @ApiOperation(value = "Gibt alle die Gruppe mit der als Parameter mitgegebenden groupId zurück") + public Group getGroupFromId(@ApiParam("Die GruppenId der gefordeten Gruppe") @PathVariable Long groupId) throws EventException{ + List eventList = eventService.getEventsOfGroup(groupId); + List groups = groupService.projectEventList(eventList); + return groups.get(0); + } } diff --git a/src/main/java/mops/gruppen2/repository/EventRepository.java b/src/main/java/mops/gruppen2/repository/EventRepository.java index 609b417..6629440 100644 --- a/src/main/java/mops/gruppen2/repository/EventRepository.java +++ b/src/main/java/mops/gruppen2/repository/EventRepository.java @@ -16,11 +16,11 @@ public interface EventRepository extends CrudRepository { @Query("select * from event where group_id =:id") List findEventDTOByGroup_id(@Param("id") Long group_id); - @Query("SELECT * FROM event WHERE event_id > :status") - public Iterable findNewEventSinceStatus(@Param("status") Long status); + @Query("SELECT DISTINCT group_id FROM event WHERE event_id > :status") + public List findNewEventSinceStatus(@Param("status") Long status); @Query("SELECT * FROM event WHERE group_id IN (:groupIds) ") - public Iterable findAllEventsOfGroups(@Param("groupIds") List groupIds); + public List findAllEventsOfGroups(@Param("groupIds") List groupIds); @Query("SELECT MAX(event_id) FROM event") public Long getHighesEvent_ID(); diff --git a/src/main/java/mops/gruppen2/service/APIFormatter.java b/src/main/java/mops/gruppen2/service/APIFormatterService.java similarity index 77% rename from src/main/java/mops/gruppen2/service/APIFormatter.java rename to src/main/java/mops/gruppen2/service/APIFormatterService.java index c18c6e9..5665bdf 100644 --- a/src/main/java/mops/gruppen2/service/APIFormatter.java +++ b/src/main/java/mops/gruppen2/service/APIFormatterService.java @@ -2,10 +2,12 @@ package mops.gruppen2.service; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.apiWrapper.UpdatedGroupRequestMapper; +import org.springframework.stereotype.Service; import java.util.List; -public class APIFormatter { +@Service +public class APIFormatterService { static public UpdatedGroupRequestMapper wrapp(Long status, List groupList){ return new UpdatedGroupRequestMapper(status, groupList); } diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java index c958493..e45644d 100644 --- a/src/main/java/mops/gruppen2/service/EventService.java +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -70,10 +70,9 @@ public class EventService { * @return Liste von Events */ public List getNewEvents(Long status){ - Iterable newEventDTOS = eventStore.findNewEventSinceStatus(status); - List groupIdsThatChanged = this.getAllGroupIds(newEventDTOS); + List groupIdsThatChanged = eventStore.findNewEventSinceStatus(status); - Iterable groupEventDTOS = eventStore.findAllEventsOfGroups(groupIdsThatChanged); + List groupEventDTOS = eventStore.findAllEventsOfGroups(groupIdsThatChanged); return translateEventDTOs(groupEventDTOS); } @@ -96,19 +95,17 @@ public class EventService { return events; } - private List getAllGroupIds(Iterable eventDTOS){ - List idsOfChangedGroups = new ArrayList<>(); - for (EventDTO eventDTO : eventDTOS){ - if (!idsOfChangedGroups.contains(eventDTO.getGroup_id())) { - idsOfChangedGroups.add(eventDTO.getGroup_id()); - - } - } - return idsOfChangedGroups; - } - public Long getMaxEvent_id(){ return eventStore.getHighesEvent_ID(); } + public List getGroupsOfUser(String userID) { + return eventStore.findGroup_idsWhereUser_id(userID); + } + + public List getEventsOfGroup(Long groupId) { + List eventDTOList = eventStore.findEventDTOByGroup_id(groupId); + return translateEventDTOs(eventDTOList); + } + }