package com.plannaplan.services; import java.util.HashMap; import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; import com.plannaplan.entities.Groups; import com.plannaplan.repositories.GroupRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class GroupService { @Autowired private GroupRepository repo; public GroupService() { } public Optional find(int time, int capacity, String room) { return this.repo.find(time, room, capacity); } public List getGroupsByCourse(Long id) { return this.repo.getByCourse(id); } public Groups save(Groups group) { return this.repo.save(group); } public void delete(Groups groups) { this.repo.delete(groups); } public int getGroupsAmmount() { return (int) this.repo.count(); } public Optional getGroupById(Long id) { return this.repo.findById(id); } public Optional findNotExistingGroup(List ids) { for (Long oneId : ids) { if (this.repo.existsById(oneId) == false) { return Optional.of(oneId); } } return Optional.empty(); } public HashMap getTakenPlaces(List groups) { HashMap respoonse = new HashMap<>(); // groups.forEach(group -> { // final Long id = group.getId(); // final Integer ammount = // this.repo.getAssignedAmount(id).orElse(Integer.valueOf(0)).intValue(); // respoonse.put(group, ammount); // }); List respoonse2 = this.repo.getAssignedAmounts( groups.stream().filter(Objects::nonNull).map(Groups::getId).collect(Collectors.toList())); return respoonse; } }