package org.academiadecodigo.bootcamp.fxlogin.service.bootcamp;

import org.academiadecodigo.bootcamp.fxlogin.model.Bootcamp;
import org.academiadecodigo.bootcamp.fxlogin.model.Cadet;
import org.academiadecodigo.bootcamp.fxlogin.persistence.TransactionException;
import org.academiadecodigo.bootcamp.fxlogin.service.Service;

import java.util.List;
import java.util.Set;

/**
 * MIT License
 * (c) 2017 Ricardo Constantino
 */

public interface BootcampService extends Service {
    void createBootcamp(Integer id, Bootcamp.Location location, String start, String end) throws TransactionException;

    void addBootcamp(Bootcamp bootcamp) throws TransactionException;

    void addCodeCadet(Integer bootcampId, Cadet cadet) throws TransactionException;

    void addCodeCadets(Integer bootcampId, Cadet... cadets) throws TransactionException;

    Bootcamp getById(Integer bootcampId);

    List<Bootcamp> listBootcamps();

    Set<Cadet> listCodeCadets(Integer bootcampId);

    void setSelectedBootcamp(Integer bootcampId);

    Integer getSelectedBootcamp();
}
