package no.niths.services.school.interfaces;
import java.util.List;
import no.niths.domain.school.FadderGroup;
import no.niths.domain.school.Student;
import no.niths.services.interfaces.GenericService;
/**
* Service Class for FadderGroup
*
* <p>
* Inherits the basic CRUD actions and has methods
* for addLeader, removeLeader,
* removeAllLeaders, addChild,
* removeChild, removeChildren,
* addChildren, removeAllChildren
* and getStudentsNotInAGroup
* </p>
*/
public interface FadderGroupService extends GenericService<FadderGroup> {
/**
* Adds a leader (Student) to the fadderGroup
* @param groupId id for fadderGroup
* @param studentId id for leader
*/
void addLeader(Long groupId, Long studentId);
/**
* Removes a leader (Student) from a fadderGroup
* @param groupId id for fadderGroup
* @param studentId id for student
*/
void removeLeader(Long groupId, Long studentId);
/**
* Removes all leaders from a fadderGroup
* @param groupId id for fadderGroup
*/
void removeAllLeaders(Long groupId);
/**
* Adds a child (Student) to the fadderGroup
* @param groupId id for fadderGroup
* @param studentId id for student
*/
void addChild(Long groupId, Long studentId);
/**
* Removes a child (Student) from a fadderGroup
* @param groupId id for fadderGroup
* @param studentId id for student
*/
void removeChild(Long groupId, Long studentId);
/**
* Removes a list of children (Students) from a fadderGroup
* @param groupId id for fadderGroup
* @param studentIds list of ids for students
*/
void removeChildren(Long groupId, Long [] studentIds);
/**
* Removes all children from a fadderGroup
* @param groupId id for fadderGroup
*/
void removeAllChildren(Long groupId);
/**
* Returns all students without a fadder group
* @return list with students
*/
List<Student> getStudentsNotInAGroup();
/**
* Adds a list of children to the fadderGroup
* @param groupId id for fadderGroup
* @param studentIds list of ids for students
*/
void addChildren(Long groupId, Long[] studentIds);
}