public void ObterContagemRestauranteMaisVotadoTeste()
        {
            // 1. Seta o dia com uma data válida.
            Dia dia = new Dia(new DateTime(2015, 08, 11), null);
            // 2. Cadastra 5 colaboradores
            Colaborador colaborador1 = new Colaborador(
                1000,
                "Colaborador Um",
                "*****@*****.**",
                "senha1");

            Colaborador colaborador2 = new Colaborador(
                2000,
                "Colaborador Dois",
                "*****@*****.**",
                "senha2");

            Colaborador colaborador3 = new Colaborador(
                3000,
                "Colaborador Três",
                "*****@*****.**",
                "senha3");

            Colaborador colaborador4 = new Colaborador(
                4000,
                "Colaborador Quatro",
                "*****@*****.**",
                "senha4");

            Colaborador colaborador5 = new Colaborador(
                5000,
                "Colaborador Cinco",
                "*****@*****.**",
                "senha5");

            dia.VerificarRestaurantes();
            // 3. Cadastra dois restaurantes Morte Lenta e Bandejão.
            Restaurante morteLenta = new Restaurante(
                1000,
                "Morte Lenta");

            Restaurante bandejao = new Restaurante(
                2000,
                "Bandejão");

            // 4. Contabiliza os votos de cada colaborador para seu restaurante preferido.
            // Voto(Colaborador, Restaurante)
            dia.Voto(colaborador3, bandejao);
            dia.Voto(colaborador1, morteLenta);
            dia.Voto(colaborador4, morteLenta);
            dia.Voto(colaborador2, morteLenta);
            dia.Voto(colaborador5, bandejao);

            // 5. Pergunta se o Nome do Restaurante mais votados é igual ao Bandejão.
            // O restaurante mais votado do dia é igual ao 3000 (Morte Lenta).
            // 5 votos contabilizados: 3 votos para o Morte lenta e 2 para o Bandejão.
            Assert.AreEqual(dia.ObterRestauranteMaisVotado(), morteLenta.Id);
        }
        // Cria-se 6 restaurante fictícios e insere numa lista para carregar na tela.
        static Restaurante()
        {
            // 1. Cria-se os objetos.
            Restaurante morteLenta = new Restaurante(
                1000,
                "Morte Lenta");

            Restaurante bandejao = new Restaurante(
                2000,
                "Bandejão");

            Restaurante tiaLouca = new Restaurante(
                3000,
                "Restaurante da Tia Louca");

            Restaurante gangueCalcaBranca = new Restaurante(
                4000,
                "Gangue da Calça Branca");

            Restaurante voceNaoTemCoragem = new Restaurante(
                5000,
                "Você Não Tem Coragem");

            Restaurante carpano = new Restaurante(
                6000,
                "Carpano Restaurante");

            // 2. Insere-os na lista de Restaurantes a serem votados.
            Restaurantes = new List<Restaurante>();
            Restaurantes.Add(gangueCalcaBranca);
            Restaurantes.Add(voceNaoTemCoragem);
            Restaurantes.Add(tiaLouca);
            Restaurantes.Add(bandejao);
            Restaurantes.Add(morteLenta);
            Restaurantes.Add(carpano);
        }
 private List<Restaurante> AjustarRestaurantes(List<Restaurante> Restaurantes, Restaurante restauranteMaisVotado)
 {
     // Se não teve votação e nenhum restaurante foi escolhido, retorna a lista de todos dos restaurantes cadastrados.
     if (restauranteMaisVotado == null && DiaAnterior.Restaurantes.Count.Equals(0))
         Restaurantes = Restaurante.Restaurantes;
     // Se mesmo assim não teve nenhum voto para o restaurante, vai retornar a lista com os restaurantes do dia anterior.
     else if (restauranteMaisVotado == null)
         Restaurantes = DiaAnterior.Restaurantes;
     else
     {
         // Busca os restaurantes votados no dia anterior.
         List<Restaurante> restaurantesAnteriores = DiaAnterior.Restaurantes;
         // Faz uma cópia dos restaurantes anteriores
         List<Restaurante> copiaRestaurantesAnteriores = new List<Restaurante>(restaurantesAnteriores);
         // Remove da lista dos restaurantes anteriores os mais votados.
         copiaRestaurantesAnteriores.Remove(restauranteMaisVotado);
         // Então retorna a lista de restaurantes sem os mais votados, por consequência não se exibe mais
         // para o colaborador votar.
         Restaurantes = copiaRestaurantesAnteriores;
     }
     return Restaurantes;
 }
 public void Voto(Colaborador colaborador, Restaurante restaurante)
 {
     // Verifica se o colaborador já votou. "Um profissional só pode votar em um restaurante por dia."
     if (!ColaboradorVotou(colaborador))
         Votos.Add(colaborador, restaurante);
 }
        public void ObterRestauranteMaisVotadoTeste()
        {
            Dia dia = new Dia(new DateTime(2015, 08, 10), null);
            Colaborador colaborador1 = new Colaborador(
                1000,
                "Colaborador Um",
                "*****@*****.**",
                "senha1");

            Colaborador colaborador2 = new Colaborador(
                2000,
                "Colaborador Dois",
                "*****@*****.**",
                "senha2");

            Colaborador colaborador3 = new Colaborador(
                3000,
                "Colaborador Três",
                "*****@*****.**",
                "senha3");

            Colaborador colaborador4 = new Colaborador(
                4000,
                "Colaborador Quatro",
                "*****@*****.**",
                "senha4");

            Colaborador colaborador5 = new Colaborador(
                5000,
                "Colaborador Cinco",
                "*****@*****.**",
                "senha5");

            dia.VerificarRestaurantes();
            Restaurante morteLenta = new Restaurante(
                1000,
                "Morte Lenta");

            Restaurante bandejao = new Restaurante(
                2000,
                "Bandejão");

            Restaurante carpano = new Restaurante(
                6000,
                "Carpano Restaurante");

            Restaurante gangueCalcaBranca = new Restaurante(
                4000,
                "Gangue da Calça Branca");

            Restaurante tiaLouca = new Restaurante(
                3000,
                "Restaurante da Tia Louca");

            // Resultado: Bandejão = 3, Morte Lenta = 2, Carpano = 2, Gangue da Calça Branca = 1, Tia Louca = 2
            dia.Voto(colaborador1, morteLenta);
            dia.Voto(colaborador2, morteLenta);
            dia.Voto(colaborador3, bandejao);
            dia.Voto(colaborador4, carpano);
            dia.Voto(colaborador5, gangueCalcaBranca);

            dia.Voto(colaborador1, bandejao);
            dia.Voto(colaborador3, carpano);
            dia.Voto(colaborador2, bandejao);
            dia.Voto(colaborador5, tiaLouca);
            dia.Voto(colaborador4, tiaLouca);
            Assert.AreEqual(dia.ObterRestauranteMaisVotado().Id, bandejao.Id);
        }
        public void TestarVotacaoESeOColaboradorJaVotouTeste()
        {
            Dia dia = new Dia(new DateTime(2015, 08, 5), null);
            Colaborador colaborador1 = new Colaborador(
                1000,
                "Colaborador Um",
                "*****@*****.**",
                "senha1");

            // Todos os restaurantes disponíveis no dia.
            dia.VerificarRestaurantes();
            Restaurante morteLenta = new Restaurante(
                1000,
                "Morte Lenta");

            // Voto(Colaborador colaborador, Restaurante restaurante)
            dia.Voto(colaborador1, morteLenta);
            Assert.IsTrue(dia.ColaboradorVotou(colaborador1));
        }
        public void RestauranteEscolhidoUmaVezSomenteNaSemanaTeste()
        {
            // 1. Vamos setar o dia 27 de Agosto, quinta-feira. Null, significa que no dia anterior não
            // houve votação.
            Dia dia = new Dia(new DateTime(2015, 8, 27), null);
            // 2. Criamos os 5 colaboradores
            Colaborador colaborador1 = new Colaborador(
                1000,
                "Colaborador Um",
                "*****@*****.**",
                "senha1");

            Colaborador colaborador2 = new Colaborador(
                2000,
                "Colaborador Dois",
                "*****@*****.**",
                "senha2");

            Colaborador colaborador3 = new Colaborador(
                3000,
                "Colaborador Três",
                "*****@*****.**",
                "senha3");

            Colaborador colaborador4 = new Colaborador(
                4000,
                "Colaborador Quatro",
                "*****@*****.**",
                "senha4");

            Colaborador colaborador5 = new Colaborador(
                5000,
                "Colaborador Cinco",
                "*****@*****.**",
                "senha5");

            // 3. Verificamos os restaurantes do dia. Vai trazer os 6 cadastrados, pois o dia
            // foi passado como null. Observe o item 1. (Dia dia = new Dia(new DateTime(2015, 8, 27), null).
            dia.VerificarRestaurantes();
            // 4. Vamos criar dois para a votação.
            Restaurante morteLenta = new Restaurante(
                1000,
                "Morte Lenta");

            Restaurante bandejao = new Restaurante(
                2000,
                "Bandejão");
            // 5. Espera-se encontrar 6 restaurantes na lista dia.Restaurantes.
            Assert.AreEqual(dia.Restaurantes.Count, 6);
            // 6. Vamos votar agora duas vezes no "Morte Lenta" e uma vez no "Bandejão".
            dia.Voto(colaborador1, morteLenta);
            dia.Voto(colaborador2, morteLenta);
            dia.Voto(colaborador3, bandejao);

            // 7. O próximo dia será 28 de Agosto, sexta-feira.
            Dia proximoDia = new Dia(new DateTime(2015, 8, 28), dia);
            // 8. Nesta verificação serão passados 3 votos na sexta-feira. O mais votado foi o "Morte Lenta".
            // A lista de restaurantes retorna com 5, ou seja sem o "Morte Lenta".
            proximoDia.VerificarRestaurantes();
            Assert.AreEqual(proximoDia.Restaurantes.Count, 5);
        }