示例#1
0
        public static List <GridRowTransacao> GetGridTransacoes(Usuario usuario, int?mes = null, int?ano = null)
        {
            try
            {
                List <GridRowTransacao> gridTransacoes = new List <GridRowTransacao>();

                foreach (Transacao transacao in GetTransacoesEfetuadas(usuario, mes, ano))
                {
                    Categoria categoria = CategoriaManager.GetCategoriaById(transacao.IdCategoria);

                    gridTransacoes.Add(new GridRowTransacao
                    {
                        IdTransacao        = transacao.IdTransacao,
                        Identificacao      = transacao.Identificacao,
                        IdCategoria        = transacao.IdCategoria,
                        Categoria          = categoria.Nome,
                        DescricaoCategoria = categoria.Descricao,
                        IconeCategoria     = "Images/Categorias/" + categoria.Icone,
                        Modo         = MODO_TRANSACAO,
                        TipoFluxo    = transacao.TipoFluxo,
                        Descricao    = transacao.Descricao,
                        Data         = (DateTime)transacao.Data,
                        Valor        = (Decimal)transacao.Valor,
                        Provisionado = transacao.Provisionado,
                        Comentario   = transacao.Comentario
                    });
                }
                foreach (Transacao provisao in GetTransacoesProvisionadas(usuario, mes, ano))
                {
                    Categoria categoria = CategoriaManager.GetCategoriaById(provisao.IdCategoria);

                    gridTransacoes.Add(new GridRowTransacao
                    {
                        IdTransacao        = provisao.IdTransacao,
                        Identificacao      = provisao.Identificacao,
                        IdCategoria        = provisao.IdCategoria,
                        Categoria          = categoria.Nome,
                        DescricaoCategoria = categoria.Descricao,
                        IconeCategoria     = "Images/Categorias/" + categoria.Icone,
                        Modo         = MODO_PROVISAO,
                        TipoFluxo    = provisao.TipoFluxo,
                        Descricao    = provisao.Descricao,
                        Data         = (DateTime)provisao.DataProvisao,
                        Valor        = (Decimal)provisao.ValorProvisao,
                        Provisionado = provisao.Provisionado,
                        Comentario   = provisao.Comentario
                    });
                }

                // Retorna uma lista de transações de despesa do usuário fornecido:
                return(gridTransacoes.OrderByDescending(x => x.Data).ToList());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#2
0
        private static void ValidarDadosTransacao(Transacao transacao)
        {
            if (UsuarioManager.GetUsuarioById(transacao.IdUsuario) == null)
            {
                throw new TransacaoUsuarioException("Não foi possível salvar a transação com o usuário informado.");
            }

            if (CategoriaManager.GetCategoriaById(transacao.IdCategoria) == null)
            {
                throw new TransacaoUsuarioException("Não foi possível salvar a transação com a categoria informada.");
            }

            if (String.IsNullOrWhiteSpace(transacao.Descricao) || transacao.Descricao.Trim().Length > 100)
            {
                throw new TransacaoDescricaoException("A descrição deve ser preenchida (até 100 caracteres).");
            }

            if (transacao.Provisionado == TRANSACAO_PROVISIONADA)
            {
                if (transacao.ValorProvisao == null)
                {
                    throw new TransacaoValorException("O valor deve ser preenchido com um número decimal.");
                }

                if (transacao.DataProvisao == null)
                {
                    throw new TransacaoDataException("A data deve ser preenchida com uma data válida.");
                }
            }
            else
            {
                if (transacao.Valor == null)
                {
                    throw new TransacaoValorException("O valor deve ser preenchido com um número decimal.");
                }

                if (transacao.Data == null)
                {
                    throw new TransacaoDataException("A data deve ser preenchida com uma data válida.");
                }
            }
            if (!transacao.TipoFluxo.Equals(CategoriaManager.TIPO_FLUXO_RECEITA) && !transacao.TipoFluxo.Equals(CategoriaManager.TIPO_FLUXO_DESPESA))
            {
                throw new TransacaoTipoFluxoException("O tipo de fluxo deve ser 'Receita' ou 'Despesa'.");
            }

            if (transacao.Comentario.Trim().Length > 255)
            {
                throw new TransacaoDescricaoException("O comentário pode ter no máximo 255 caracteres).");
            }
        }
        private static void ValidarDadosPlanejamento(Planejamento planejamento)
        {
            if (UsuarioManager.GetUsuarioById(planejamento.IdUsuario) == null)
            {
                throw new PlanejamentoUsuarioException("Não foi possível salvar o planejamento com o usuário informado.");
            }

            if (CategoriaManager.GetCategoriaById(planejamento.IdCategoria) == null)
            {
                throw new PlanejamentoCategoriaException("Não foi possível salvar o planejamento com a categoria informada.");
            }

            if (planejamento.Mes < 1 || planejamento.Mes > 12)
            {
                throw new PlanejamentoMesException("O mês fornecido não é válido.");
            }

            if (planejamento.Valor <= 0)
            {
                throw new PlanejamentoValorException("O valor deve ser preenchido com um número decimal positivo.");
            }
        }
        public static List <GridRowPlanejamento> GetRowPlanejamentos(Usuario usuario, int mes, int ano)
        {
            try
            {
                List <GridRowPlanejamento> planejamentos = new List <GridRowPlanejamento>();
                List <Transacao>           transacoes    = TransacaoManager.GetTransacoesEfetuadas(usuario, mes, ano);

                foreach (Categoria categoria in CategoriaManager.GetCategorias().OrderByDescending(x => x.Nome).OrderBy(x => x.TipoFluxo))
                {
                    Decimal?     valorEfetivo = transacoes.Where(x => x.IdCategoria == categoria.IdCategoria).Sum(x => x.Valor);
                    Planejamento planejamento = GetPlanejamentoCategoriaByMesEAno(usuario, categoria, mes, ano);

                    if (valorEfetivo > 0 || planejamento != null)
                    {
                        planejamentos.Add(new GridRowPlanejamento
                        {
                            IdPlanejamento     = planejamento == null ? Guid.NewGuid() : planejamento.IdPlanejamento,
                            IdCategoria        = categoria.IdCategoria,
                            Categoria          = categoria.Nome,
                            DescricaoCategoria = categoria.Descricao,
                            IconeCategoria     = "Images/Categorias/" + categoria.Icone,
                            TipoFluxo          = categoria.TipoFluxo,
                            Mes            = mes,
                            Ano            = ano,
                            ValorRealizado = valorEfetivo != null ? (Decimal)valorEfetivo : 0,
                            ValorPlanejado = planejamento != null ? planejamento.Valor : 0
                        });
                    }
                }
                return(planejamentos);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public static void SavePlanejamento(Planejamento planejamento)
 {
     try
     {
         // A aplicação salva o planejamento substituindo o anterior, caso exista:
         Planejamento old = GetPlanejamentoCategoriaByMesEAno(UsuarioManager.GetUsuarioById(planejamento.IdUsuario), CategoriaManager.GetCategoriaById(planejamento.IdCategoria), planejamento.Mes, planejamento.Ano);
         if (old == null)
         {
             planejamento.IdPlanejamento = Guid.NewGuid();
             AddPlanejamento(planejamento);
         }
         else
         {
             planejamento.IdPlanejamento = old.IdPlanejamento;
             EditPlanejamento(planejamento);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }