Merge branch 'master' into edit-User
This commit is contained in:
@ -1,20 +1,33 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import mops.gruppen2.domain.*;
|
||||
|
||||
import mops.gruppen2.domain.Exceptions.EventException;
|
||||
import mops.gruppen2.domain.event.*;
|
||||
import mops.gruppen2.security.Account;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import mops.gruppen2.domain.event.*;
|
||||
import mops.gruppen2.security.Account;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@Service
|
||||
public class ControllerService {
|
||||
|
||||
private final EventService eventService;
|
||||
private final UserService userService;
|
||||
|
||||
public ControllerService(EventService eventService, UserService userService) {
|
||||
private final UserService userService;
|
||||
private final InviteLinkRepositoryService inviteLinkRepositoryService;
|
||||
|
||||
public ControllerService(EventService eventService, InviteLinkRepositoryService inviteLinkRepositoryService) {
|
||||
this.eventService = eventService;
|
||||
this.userService = userService;
|
||||
this.inviteLinkRepositoryService = inviteLinkRepositoryService;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -34,9 +47,10 @@ public class ControllerService {
|
||||
visibility1 = Visibility.PUBLIC;
|
||||
} else {
|
||||
visibility1 = Visibility.PRIVATE;
|
||||
createInviteLink(group_id);
|
||||
}
|
||||
|
||||
CreateGroupEvent createGroupEvent = new CreateGroupEvent(group_id, account.getName(), null , GroupType.LECTURE, visibility1);
|
||||
CreateGroupEvent createGroupEvent = new CreateGroupEvent(group_id, account.getName(), null , GroupType.SIMPLE, visibility1);
|
||||
eventService.saveEvent(createGroupEvent);
|
||||
User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail());
|
||||
|
||||
@ -46,11 +60,23 @@ public class ControllerService {
|
||||
updateRole(user.getUser_id(), group_id);
|
||||
}
|
||||
|
||||
private void createInviteLink(Long group_id) {
|
||||
inviteLinkRepositoryService.saveInvite(group_id, UUID.randomUUID());
|
||||
}
|
||||
|
||||
|
||||
public void addUser(Account account, Long group_id){
|
||||
AddUserEvent addUserEvent = new AddUserEvent(group_id,account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail());
|
||||
eventService.saveEvent(addUserEvent);
|
||||
}
|
||||
|
||||
public void addUserList(List<User> users, Long group_id) {
|
||||
for (User user : users) {
|
||||
AddUserEvent addUserEvent = new AddUserEvent(group_id, user.getUser_id(), user.getGivenname(), user.getFamilyname(), user.getEmail());
|
||||
eventService.saveEvent(addUserEvent);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateTitle(Account account, Long group_id, String title){
|
||||
UpdateGroupTitleEvent updateGroupTitleEvent = new UpdateGroupTitleEvent(group_id,account.getName(),title);
|
||||
eventService.saveEvent(updateGroupTitleEvent);
|
||||
@ -87,9 +113,30 @@ public class ControllerService {
|
||||
DeleteUserEvent deleteUserEvent = new DeleteUserEvent(group_id, user.getUser_id());
|
||||
eventService.saveEvent(deleteUserEvent);
|
||||
}
|
||||
|
||||
|
||||
public void deleteGroupEvent(User user, Long group_id) {
|
||||
DeleteGroupEvent deleteGroupEvent = new DeleteGroupEvent(group_id, user.getUser_id());
|
||||
eventService.saveEvent(deleteGroupEvent);
|
||||
|
||||
|
||||
public void createLecture(Account account, String title, String description, Boolean visibility, List<User> users) {
|
||||
Visibility visibility1;
|
||||
Long group_id = eventService.checkGroup();
|
||||
|
||||
if (visibility) {
|
||||
visibility1 = Visibility.PUBLIC;
|
||||
} else {
|
||||
visibility1 = Visibility.PRIVATE;
|
||||
}
|
||||
|
||||
CreateGroupEvent createGroupEvent = new CreateGroupEvent(group_id, account.getName(), null, GroupType.LECTURE, visibility1);
|
||||
eventService.saveEvent(createGroupEvent);
|
||||
|
||||
addUser(account, group_id);
|
||||
updateTitle(account, group_id, title);
|
||||
updateDescription(account, group_id, description);
|
||||
updateRole(account, group_id);
|
||||
addUserList(users, group_id);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
24
src/main/java/mops/gruppen2/service/CsvService.java
Normal file
24
src/main/java/mops/gruppen2/service/CsvService.java
Normal file
@ -0,0 +1,24 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectReader;
|
||||
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
|
||||
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
|
||||
import mops.gruppen2.domain.User;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class CsvService {
|
||||
|
||||
public static List<User> read(InputStream stream) throws IOException {
|
||||
CsvMapper mapper = new CsvMapper();
|
||||
|
||||
CsvSchema schema = mapper.schemaFor(User.class).withHeader().withColumnReordering(true);
|
||||
ObjectReader reader = mapper.readerFor(User.class).with(schema);
|
||||
|
||||
return reader.<User>readValues(stream).readAll();
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,8 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import mops.gruppen2.domain.EventDTO;
|
||||
import mops.gruppen2.domain.Visibility;
|
||||
import mops.gruppen2.domain.dto.EventDTO;
|
||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
import mops.gruppen2.repository.EventRepository;
|
||||
@ -59,22 +59,17 @@ public class EventService {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sorgt dafür die Group_id immer um 1 zu erhöhen
|
||||
* Gibt die nächst höhere groupID zurück die belegt werden kann.
|
||||
* Gibt 1 zurück, falls keine Gruppe vorhanden ist.
|
||||
*
|
||||
* @return Gibt Long zurück
|
||||
*/
|
||||
public Long checkGroup() {
|
||||
Long tmpId = 1L;
|
||||
Iterable<EventDTO> eventDTOS = eventStore.findAll();
|
||||
for (EventDTO event : eventDTOS) {
|
||||
if (event.getGroup_id() == null) {
|
||||
return tmpId;
|
||||
}
|
||||
if (tmpId <= event.getGroup_id()) {
|
||||
tmpId++;
|
||||
}
|
||||
Long maxGroupID = eventStore.getMaxGroupID();
|
||||
if (maxGroupID == null) {
|
||||
return 1L;
|
||||
}
|
||||
return tmpId;
|
||||
return maxGroupID + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import mops.gruppen2.domain.EventDTO;
|
||||
import mops.gruppen2.domain.dto.EventDTO;
|
||||
import mops.gruppen2.domain.Exceptions.EventException;
|
||||
import mops.gruppen2.domain.Group;
|
||||
import mops.gruppen2.domain.Visibility;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
import mops.gruppen2.repository.EventRepository;
|
||||
import mops.gruppen2.security.Account;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -71,15 +72,21 @@ public class GroupService {
|
||||
return groups.get(group_id);
|
||||
}
|
||||
|
||||
private List<Long> removeUserGroups(List<Long> group_ids, List<Long> user_groups) {
|
||||
for (Long group_id: user_groups) {
|
||||
group_ids.remove(group_id);
|
||||
}
|
||||
return group_ids;
|
||||
}
|
||||
|
||||
/**
|
||||
* sucht alle Zeilen in der DB wo die Visibility gleich true ist und wandelt diese in
|
||||
* eine Liste von Gruppen
|
||||
* sucht alle Zeilen in der DB wo die Visibility true ist und entfernt alle Gruppen des Users.
|
||||
* Erstellt eine Liste aus Gruppen.
|
||||
* @return
|
||||
* @throws EventException
|
||||
*/
|
||||
|
||||
public List<Group> getAllGroupWithVisibilityPublic() throws EventException {
|
||||
List<Long> group_ids = eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE);
|
||||
public List<Group> getAllGroupWithVisibilityPublic(String user_id) throws EventException {
|
||||
List<Long> group_ids = removeUserGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE), eventRepository.findGroup_idsWhereUser_id(user_id));
|
||||
List<EventDTO> eventDTOS = eventRepository.findAllEventsOfGroups(group_ids);
|
||||
List<Event> events = eventService.translateEventDTOs(eventDTOS);
|
||||
List<Group> groups = projectEventList(events);
|
||||
@ -94,10 +101,10 @@ public class GroupService {
|
||||
* @return
|
||||
* @throws EventException
|
||||
*/
|
||||
public List<Group> findGroupWith(String search) throws EventException {
|
||||
public List<Group> findGroupWith(String search, Account account) throws EventException {
|
||||
List<Group> groups = new ArrayList<>();
|
||||
for (Group group: getAllGroupWithVisibilityPublic()) {
|
||||
if (group.getTitle().contains(search)|| group.getDescription().contains(search)){
|
||||
for (Group group: getAllGroupWithVisibilityPublic(account.getName())) {
|
||||
if (group.getTitle().toLowerCase().contains(search.toLowerCase()) || group.getDescription().toLowerCase().contains(search.toLowerCase())){
|
||||
groups.add(group);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
package mops.gruppen2.service;
|
||||
|
||||
import mops.gruppen2.domain.dto.InviteLinkDTO;
|
||||
import mops.gruppen2.repository.InviteLinkRepository;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Service
|
||||
public class InviteLinkRepositoryService {
|
||||
|
||||
private final InviteLinkRepository inviteLinkRepository;
|
||||
|
||||
public InviteLinkRepositoryService(InviteLinkRepository inviteLinkRepository) {
|
||||
this.inviteLinkRepository = inviteLinkRepository;
|
||||
}
|
||||
|
||||
public long findGroupIdByInvite(String link) {
|
||||
return inviteLinkRepository.findGroupIdByLink(link);
|
||||
}
|
||||
|
||||
public void saveInvite(Long group_id, UUID link) {
|
||||
inviteLinkRepository.save(new InviteLinkDTO(null, group_id, link.toString()));
|
||||
}
|
||||
|
||||
}
|
||||
@ -2,7 +2,6 @@ package mops.gruppen2.service;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import mops.gruppen2.domain.EventDTO;
|
||||
import mops.gruppen2.domain.event.Event;
|
||||
import mops.gruppen2.repository.EventRepository;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
Reference in New Issue
Block a user