package org.iatoki.judgels.uriel.services;
import org.iatoki.judgels.play.Page;
import org.iatoki.judgels.uriel.ContestTeam;
import org.iatoki.judgels.uriel.ContestTeamCoach;
import org.iatoki.judgels.uriel.ContestTeamCoachNotFoundException;
import org.iatoki.judgels.uriel.ContestTeamMember;
import org.iatoki.judgels.uriel.ContestTeamMemberNotFoundException;
import org.iatoki.judgels.uriel.ContestTeamNotFoundException;
import java.io.File;
import java.io.IOException;
import java.util.List;
public interface ContestTeamService {
boolean isUserInAnyTeamByContestJid(String contestJid, String userJid);
boolean isUserCoachInAnyTeamByContestJid(String contestJid, String coachJid);
boolean isUserCoachByUserJidAndTeamJid(String coachJid, String teamJid);
ContestTeam findContestTeamByContestTeamId(long contestTeamId) throws ContestTeamNotFoundException;
ContestTeamCoach findContestTeamCoachByContestTeamCoachId(long contestTeamCoachId) throws ContestTeamCoachNotFoundException;
ContestTeamMember findContestTeamMemberByContestTeamMemberId(long contestTeamMemberId) throws ContestTeamMemberNotFoundException;
Page<ContestTeam> pageContestTeamsByContestJid(String contestJid, long pageIndex, long pageSize, String orderBy, String orderDir, String filterString);
Page<ContestTeam> pageContestTeamsByContestJidAndCoachJid(String contestJid, String coachJid, long pageIndex, long pageSize, String orderBy, String orderDir);
List<ContestTeam> findAllContestTeams(String contestJid);
List<ContestTeam> findContestTeamsByContestJidAndCoachJid(String contestJid, String coachJid);
List<ContestTeamCoach> findContestTeamCoachesByTeamJid(String contestTeamJid);
List<ContestTeamMember> findContestTeamMembersByTeamJid(String contestTeamJid);
List<ContestTeamMember> findContestTeamMembersByContestJidAndCoachJid(String contestJid, String coachJid);
String getTeamAvatarImageURL(String imageName);
void createContestTeam(long contestId, String name);
void createContestTeam(long contestId, String name, File teamImage, String extension) throws IOException;
void updateContestTeam(long contestTeamId, String name);
void updateContestTeam(long contestTeamId, String name, File teamImage, String extension) throws IOException;
void createContestTeamCoach(String contestTeamJid, String coachJid);
void removeContestTeamCoachByContestTeamCoachId(long contestTeamCoachId);
void createContestTeamMember(String contestTeamJid, String memberJid);
void removeContestTeamMemberByContestTeamMemberId(long contestTeamMemberId);
void startTeamAsCoach(String contestJid, String teamJid);
}