# Backend para gerenciar times de futebol
Você é responsável por construir o backend de um novo gerenciador de times de futebol. Após fecharem o escopo do projeto, você e sua equipe definiram a interface
que o software deve implementar. A interface é a seguinte:
public interface IManageSoccerTeams
{
void AddTeam(long id, string name, DateTime createDate, string mainShirtColor, string secondaryShirtColor);
void AddPlayer(long id, long teamId, string name, DateTime birthDate, int skillLevel, decimal salary);
void SetCaptain(long playerId);
long GetTeamCaptain(long teamId);
string GetPlayerName(long playerId);
string GetTeamName(long teamId);
long GetHigherSalaryPlayer(long teamId);
decimal GetPlayerSalary(long playerId);
List<long> GetTeamPlayers(long teamId);
long GetBestTeamPlayer(long teamId);
long GetOlderTeamPlayer(long teamId);
List<long> GetTeams();
List<long> GetTopPlayers(int top);
string GetVisitorShirtColor(long teamId, long visitorTeamId);
}
Os dados devem ficar armazenados na memória.
- Parâmetros com
*
são obrigatórios. Um parâmetro obrigatório significa que ele deve ser informado na chamada do método. - Os parâmetros, com exceção de identificadores, são sempre íntegros e farão sentido.
Realiza a inclusão de um novo time.
long
id
* Identificador do timestring
name
* Nome do TimeDateTime
dataCriacao
* Data de criação do timestring
corUniformePrincipal
* Cor do uniforme principal do timestring
corUniformeSecundario
* Cor do uniforme secundário do time
Exceções
- Caso o
id
já exista, retornarCodenation.Challenge.Exceptions.IdentificadorUtilizadoException
Realiza a inclusão de um novo jogador.
long
id
* Identificador do Jogadorlong
teamId
* Identificador do timestring
name
* Nome do JogadorDateTime
birthDate
* Data de nascimento do Jogadorint
skillLevel
* Nível de habilidade do jogador (0 a 100)decimal
salary
* Salário do jogador
Exceções
- Caso o
id
já exista, retornarCodenation.Challenge.Exceptions.IdentificadorUtilizadoException
- Caso o time informado não exista, retornar
Codenation.Challenge.Exceptions.TimeNaoEncontradoException
Define um jogador como capitão do seu time. Um time deve ter apenas um capitão, por tanto o capitão anterior voltará a ser apenas jogador.
long
playerId
* Identificador do jogador.
Exceções
- Caso o jogador informado não exista, retornar
Codenation.Challenge.Exceptions.JogadorNaoEncontradoException
Mostra o id
do capitão do time.
long
teamId
* Identificador do Time
Exceções
- Caso o time informado não exista, retornar
Codenation.Challenge.Exceptions.TimeNaoEncontradoException
- Caso o time informado não tenha um capitão, retornar
Codenation.Challenge.Exceptions.CapitaoNaoInformadoException
Retorna o name
do jogador.
long
playerId
* Identificador do jogador
Exceções
- Caso o jogador informado não exista, retornar
Codenation.Challenge.Exceptions.JogadorNaoEncontradoException
Retorna o name
do time.
long
teamId
* Identificador do Time
Exceções
- Caso o time informado não exista, retornar
Codenation.Challenge.Exceptions.TimeNaoEncontradoException
Retorna a lista com o id
de todos os jogadores do time, ordenada pelo id
.
long
teamId
* Identificador do Time
Exceções
- Caso o time informado não exista, retornar
Codenation.Challenge.Exceptions.TimeNaoEncontradoException
Retorna o id
do melhor jogador do time. Utilizar o menor id
como critério de desempate.
long
teamId
* Identificador do time.
Exceções
- Caso o time informado não exista, retornar
Codenation.Challenge.Exceptions.TimeNaoEncontradoException
Retorna o id
do jogador mais velho do time. Usar o menor id
como critério de desempate.
long
teamId
* Identificador do time
Exceções
- Caso o time informado não exista, retornar
Codenation.Challenge.Exceptions.TimeNaoEncontradoException
Retorna uma lista com o id
de todos os times cadastrado, ordenada pelo id
.
Retornar uma lista vazia caso não encontre times cadastrados.
Retorna o id
do jogador com maior salário do time. Usar o menor id
como critério de desempate.
long
teamId
* Identificador do time.
Exceções
- Caso o time informado não exista, retornar
Codenation.Challenge.Exceptions.TimeNaoEncontradoException
Retorna o salário
do jogador.
long
playerId
* Identificador do jogador
Exceções
- Caso o jogador informado não exista, retornar
Codenation.Challenge.Exceptions.JogadorNaoEncontradoException
Retorna uma lista com o id
dos top
melhores jogadores, utilizar o menor id
como critério de desempate.
int
top
* Quantidade de jogares na lista
Exceções
- Caso não exista nenhum jogador cadastrado, retornar uma lista vazia.
Retorna a cor da camisa do time adversário.
Caso a mainShirtColor
do time da casa seja igual a mainShirtColor
do time de fora, retornar secondaryShirtColor
do time de fora.
Caso a mainShirtColor
do time da casa seja diferente da mainShirtColor
do time de fora, retornar mainShirtColor
do time de fora.
long
teamId
* Identificador do time da casalong
visitorTeamId
* Identificador do time de fora
Exceções
- Caso o time da casa ou o time de fora informado não existam, retornar
Codenation.Challenge.Exceptions.TimeNaoEncontradoException
Neste desafio você aprenderá:
- Variáveis e métodos
- Operadores matemáticos
- Controle de fluxo
- Listas
- Métodos de ordenação
- Tratamento de exceções
Para este desafio você precisará :
- .NET Core 2.0+
- Visual Studio ou Visual Studio Code
Para instalar o .NET Core e o Visual Studio, confira os links na seção de conteúdo. O Visual Studio Code é uma opção mais leve para programar, porém o Visual Studio 2019 é mais completo.