예제 #1
0
        public async Task <IActionResult> Get(CancellationToken ct)
        {
            var retorno = await _copaFilmeBase.GetFilmesAsync(ct);

            var map = _mapper.Map <IEnumerable <FilmeViewModel> >(retorno);

            return(Ok(map.OrderBy(x => x.titulo)));
        }
예제 #2
0
        public async Task <KeyValuePair <FilmesResponse, FilmesResponse> > GetVencedorCopaFilme(string[] idsFilmes, CancellationToken ct)
        {
            if (idsFilmes.Length % 2 != 0)
            {
                throw new FormatException();
            }

            var retorno = await CopaFilmeBase.GetFilmesAsync(ct);

            // Ordenar os filmes alfabeticamente
            var selecao = retorno.Where(x => idsFilmes.Contains(x.id))
                          .OrderBy(x => x.titulo).ToList();

            // Fazer com que os filmes disputem em eliminatórias da seguinte forma: o filme na primeira
            // posição disputará contra o da última posição, o segundo com o penúltimo
            var selecaoPrincipal = selecao.Select((x, i) => new { elemt = x, index = i })
                                   .Take((int)idsFilmes.Length / 2)
                                   .Select(x => new KeyValuePair <FilmesResponse, FilmesResponse>(x.elemt, selecao[(idsFilmes.Length - 1) - x.index]))
                                   .ToList();

            // Fase de Eliminatórias
            return(CalcularVencedor(selecaoPrincipal));
        }