private void button7_Click(object sender, EventArgs e)
        {
            RelatorioMovimentacao f = new RelatorioMovimentacao();

            f.ShowDialog();
            f.Dispose();
        }
        private static async Task Main()
        {
            string conteudoLog = File.ReadAllText("logmovimentacao.txt");

            LogMovimentacaoLeitor logMovimentacaoLeitor = new LogMovimentacaoLeitor(conteudoLog);

            ApiMovimentacaoLeitor apiMovimentacaoLeitor = new ApiMovimentacaoLeitor(new DadosDaApi
            {
                UrlBase              = "https://my-json-server.typicode.com/cairano/backend-test",
                EndpointPagamentos   = "pagamentos",
                EndpointRecebimentos = "recebimentos"
            });

            RelatorioMovimentacaoServico relatorioMovimentacaoServico = new RelatorioMovimentacaoServico(new ILeitorDeMovimentacao[]
            {
                logMovimentacaoLeitor,
                apiMovimentacaoLeitor
            });

            RelatorioMovimentacao relatorioMovimentacao = await relatorioMovimentacaoServico.RetornarRelatorioAsync().ConfigureAwait(false);

            ExibirGastosPorCategoria(relatorioMovimentacao);
            ExibirCategoriaComMaisGastos(relatorioMovimentacao);
            ExibirMesComMaisGastos(relatorioMovimentacao);
            ExibirValoresDeMovimentacaoDoCliente(relatorioMovimentacao);
            ExibirLogDeMovimentacoes(relatorioMovimentacao);

            System.Console.ReadKey();
        }
        public void Criar_Deve_RetornarUmRelatorioCorreto()
        {
            List <Movimentacao> movimentacoes = new List <Movimentacao>
            {
                new Movimentacao(
                    data: new DateTime(1, 1, 1),
                    descricao: new DescricaoDeMovimentacao("descricao"),
                    valor: new ValorDeMovimentacao(-3),
                    categoria: new CategoriaDeMovimentacao("Categoria")
                    ),

                new Movimentacao(
                    data: new DateTime(1, 2, 3),
                    descricao: new DescricaoDeMovimentacao("descricao"),
                    valor: new ValorDeMovimentacao(7),
                    categoria: new CategoriaDeMovimentacao("cátegória")
                    )
            };

            RelatorioMovimentacao relatorioMovimentacao = RelatorioMovimentacao.Criar(movimentacoes);

            Assert.Equal(2, relatorioMovimentacao.Movimentacoes.Count);
            Assert.Equal("Categoria", relatorioMovimentacao.CategoriaComMaisGastos);
            Assert.Equal(1, relatorioMovimentacao.MesComMaisGastos);
            Assert.Equal(3, relatorioMovimentacao.QuantoGastou);
            Assert.Equal(7, relatorioMovimentacao.QuantoRecebeu);
            Assert.Equal(10, relatorioMovimentacao.MovimentacaoTotal);
        }
        public void Criar_Deve_RetornarNull_Quando_NaoHouveremMovimentacoes()
        {
            List <Movimentacao> movimentacoes = new List <Movimentacao>();

            RelatorioMovimentacao relatorioMovimentacao = RelatorioMovimentacao.Criar(movimentacoes);

            Assert.Null(relatorioMovimentacao);
        }
        private static void ExibirValoresDeMovimentacaoDoCliente(RelatorioMovimentacao relatorioMovimentacao)
        {
            ExibirTitulo("Valores de movimentação do cliente");

            System.Console.WriteLine("Quanto gastou: R$ {0}", relatorioMovimentacao.QuantoGastou);
            System.Console.WriteLine("Quanto recebeu: R$ {0}", relatorioMovimentacao.QuantoRecebeu);
            System.Console.WriteLine("Quanto movimentou: R$ {0}", relatorioMovimentacao.MovimentacaoTotal);
        }
        private static void ExibirMesComMaisGastos(RelatorioMovimentacao relatorioMovimentacao)
        {
            ExibirTitulo("Mês com mais gastos");

            string nomeDoMes = CultureInfo.CurrentUICulture.DateTimeFormat.GetMonthName(relatorioMovimentacao.MesComMaisGastos);

            System.Console.WriteLine(nomeDoMes);
        }
        private static void ExibirLogDeMovimentacoes(RelatorioMovimentacao relatorioMovimentacao)
        {
            ExibirTitulo("Movimentações");

            foreach (var movimentacao in relatorioMovimentacao.Movimentacoes)
            {
                string descricao = RetornarStringComTamanhoFixo(movimentacao.Descricao, 30);
                string valor     = RetornarStringComTamanhoFixo($"R$ {movimentacao.Valor.ToString("N")}", 10);

                System.Console.WriteLine("{0:dd/MM} - {1}\t\t{2}\t\t{3}", movimentacao.Data, descricao, valor, movimentacao.Categoria);
            }
        }
        private static void ExibirGastosPorCategoria(RelatorioMovimentacao relatorioMovimentacao)
        {
            ExibirTitulo("Gastos por categoria");

            foreach (KeyValuePair <string, decimal> gastosPorCategoriaPar in relatorioMovimentacao.GastosPorCategoria)
            {
                string categoria = RetornarStringComTamanhoFixo(gastosPorCategoriaPar.Key, 20);
                string gasto     = RetornarStringComTamanhoFixo($"R$ {gastosPorCategoriaPar.Value}", 10);

                System.Console.WriteLine("{0}\t{1}", categoria, gasto);
            }
        }
Exemple #9
0
        public async Task RetornarRelatorioAsync_Deve_ChamarRetornarRelatorioAsyncDeCadaLeitor()
        {
            Mock <ILeitorDeMovimentacao> mockLeitorDeMovimentacao1 = new Mock <ILeitorDeMovimentacao>();

            mockLeitorDeMovimentacao1
            .Setup(x => x.RetornarMovimentacoesAsync())
            .ReturnsAsync(new List <Movimentacao>());

            Mock <ILeitorDeMovimentacao> mockLeitorDeMovimentacao2 = new Mock <ILeitorDeMovimentacao>();

            mockLeitorDeMovimentacao2
            .Setup(x => x.RetornarMovimentacoesAsync())
            .ReturnsAsync(new List <Movimentacao>());

            RelatorioMovimentacaoServico relatorioServico = new RelatorioMovimentacaoServico(new ILeitorDeMovimentacao[] {
                mockLeitorDeMovimentacao1.Object,
                mockLeitorDeMovimentacao2.Object
            });

            RelatorioMovimentacao relatorio = await relatorioServico.RetornarRelatorioAsync().ConfigureAwait(false);

            mockLeitorDeMovimentacao1.Verify(x => x.RetornarMovimentacoesAsync(), Times.Once());
            mockLeitorDeMovimentacao2.Verify(x => x.RetornarMovimentacoesAsync(), Times.Once());
        }
        private static void ExibirCategoriaComMaisGastos(RelatorioMovimentacao relatorioMovimentacao)
        {
            ExibirTitulo("Categoria com mais gastos");

            System.Console.WriteLine(relatorioMovimentacao.CategoriaComMaisGastos);
        }