Ejemplo n.º 1
0
        private void StartComponentsScript(String modal, GridRowTransacao rowTransacao)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append(@"<script type='text/javascript'>");

            if (!String.IsNullOrWhiteSpace(rowTransacao.TipoFluxo))
            {
                sb.Append("listarCategorias('" + rowTransacao.TipoFluxo + "');");
            }

            if (!rowTransacao.IdCategoria.Equals(Guid.Empty))
            {
                sb.Append("$('#listCategorias').val('" + rowTransacao.IdCategoria.ToString() + "');");
            }

            if (!String.IsNullOrWhiteSpace(rowTransacao.IconeCategoria))
            {
                sb.Append("$('#imgCategoria')[0].src = '" + rowTransacao.IconeCategoria + "';");
                sb.Append("$('#imgCategoria')[0].title = '" + rowTransacao.Categoria + "';");
            }

            sb.Append("$('.fieldMoney').mask('#.##0,00', { reverse: true });");
            sb.Append("$('#txtData').datepicker({ dateFormat: 'dd/mm/yy' });");
            sb.Append("$('#" + modal + "').modal('show');");
            sb.Append(@"</script>");
            ScriptManager.RegisterClientScriptBlock(this, GetType(), "startScript", sb.ToString(), false);
        }
Ejemplo n.º 2
0
        protected void GridTransacoes_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
        {
            try
            {
                int              rowIndex     = Convert.ToInt32(e.CommandArgument);
                Guid             idTransacao  = (Guid)gridTransacoes.DataKeys[rowIndex].Value;
                GridRowTransacao rowTransacao = Transacoes.FirstOrDefault(x => x.IdTransacao.Equals(idTransacao));

                if (rowTransacao != null)
                {
                    txtIdTransacao.Value  = idTransacao.ToString();
                    txtIdCategoria.Value  = rowTransacao.IdCategoria.ToString();
                    txtDescricao.Value    = rowTransacao.Descricao;
                    txtData.Value         = rowTransacao.Data.ToString(@"dd/MM/yyyy", CultureInfo.GetCultureInfo("pt-BR"));
                    txtValor.Value        = rowTransacao.Valor.ToString("N", CultureInfo.GetCultureInfo("pt-BR"));
                    txtComentario.Value   = rowTransacao.Comentario;
                    rdoTransacao.Checked  = rowTransacao.Provisionado == TransacaoManager.TRANSACAO_EFETUADA;
                    rdoProvisao.Checked   = rowTransacao.Provisionado == TransacaoManager.TRANSACAO_PROVISIONADA;
                    rdoReceita.Checked    = rowTransacao.TipoFluxo == CategoriaManager.TIPO_FLUXO_RECEITA;
                    rdoDespesa.Checked    = rowTransacao.TipoFluxo == CategoriaManager.TIPO_FLUXO_DESPESA;
                    chkRepetirMes.Checked = false;
                    txtRepetirMes.Text    = "3";
                    if (!String.IsNullOrWhiteSpace(rowTransacao.Identificacao))
                    {
                        txtValor.Disabled     = true;
                        txtData.Disabled      = true;
                        rdoTransacao.Disabled = true;
                        rdoProvisao.Disabled  = true;
                    }
                    txtDeletarTransacao.Value = idTransacao.ToString();

                    if (e.CommandName.Equals("editTransacao"))
                    {
                        StartComponentsScript("gerenciarTransacaoModal", rowTransacao);
                    }
                    else if (e.CommandName.Equals("deleteTransacao"))
                    {
                        StartComponentsScript("deletarTransacaoModal", rowTransacao);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 3
0
        // Método que carrega a lista de períodos das transações do usuário:
        private void AtualizaListaPeriodos(Usuario usuario)
        {
            DateTime periodo = DateTime.Now;

            if (Session["Periodo"] != null)
            {
                periodo = DateTime.ParseExact(Session["Periodo"].ToString(), @"MMMM / yyyy", CultureInfo.GetCultureInfo("pt-BR"));
            }

            // Define as variáveis dos extremos do período, inicializando com a data atual:
            DateTime dataInicio = DateTime.Now.AddMonths(-2) < periodo?DateTime.Now.AddMonths(-2) : periodo;

            DateTime dataFim = DateTime.Now.AddMonths(2) > periodo?DateTime.Now.AddMonths(2) : periodo;

            // Define a lista de transações do usuário:
            List <GridRowTransacao> transacoes = TransacaoManager.GetGridTransacoes(usuario);

            if (transacoes.Count > 0)
            {
                // Define a primeira e última transações do usuário baseadas na data:
                GridRowTransacao primeiraTransacao = transacoes.Last();
                GridRowTransacao ultimaTransacao   = transacoes.First();

                // Atualiza as datas de início e fim da lista de períodos com as datas das transações:
                if ((DateTime)primeiraTransacao.Data < dataInicio)
                {
                    dataInicio = (DateTime)primeiraTransacao.Data;
                }
                if ((DateTime)ultimaTransacao.Data > dataFim)
                {
                    dataFim = (DateTime)ultimaTransacao.Data;
                }
            }

            // Limpa a lista atual e adiciona os períodos de acordo com as datas de início e fim:
            ddListaPeriodo.Items.Clear();
            while (dataInicio.Year < dataFim.Year || (dataInicio.Year == dataFim.Year && dataInicio.Month <= dataFim.Month))
            {
                String   data = dataInicio.ToString(@"MMMM / yyyy", CultureInfo.GetCultureInfo("pt-BR"));
                ListItem item = new ListItem(data);
                ddListaPeriodo.Items.Add(item);
                dataInicio = dataInicio.AddMonths(1);
            }
        }
Ejemplo n.º 4
0
        protected void BtnSalvarTransacao_Click(object sender, EventArgs e)
        {
            GridRowTransacao rowTransacao;

            if (Guid.TryParse(txtIdTransacao.Value, out Guid guid))
            {
                rowTransacao = Transacoes.FirstOrDefault(x => x.IdTransacao.Equals(guid));
            }
            else
            {
                rowTransacao = new GridRowTransacao
                {
                    TipoFluxo   = rdoReceita.Checked ? CategoriaManager.TIPO_FLUXO_RECEITA : CategoriaManager.TIPO_FLUXO_DESPESA,
                    IdCategoria = !String.IsNullOrWhiteSpace(txtIdCategoria.Value) ? Guid.Parse(txtIdCategoria.Value) : Guid.Empty
                };
            }
            try
            {
                // Limpa a mensagem de alerta, caso haja algum texto:
                lblMsg.Text = String.Empty;

                if (!Decimal.TryParse(txtValor.Value.Replace(".", ""), NumberStyles.AllowDecimalPoint, CultureInfo.GetCultureInfo("pt-BR"), out Decimal valor))
                {
                    txtValor.Focus();
                    lblMsg.Text = "Insira um número válido para o valor.";
                    StartComponentsScript("gerenciarTransacaoModal", rowTransacao);
                    return;
                }
                if (!rdoReceita.Checked && !rdoDespesa.Checked)
                {
                    lblMsg.Text = "O tipo do lançamento deve ser definido.";
                    StartComponentsScript("gerenciarTransacaoModal", rowTransacao);
                    return;
                }
                if (!rdoTransacao.Checked && !rdoProvisao.Checked)
                {
                    lblMsg.Text = "O modo do lançamento deve ser definido.";
                    StartComponentsScript("gerenciarTransacaoModal", rowTransacao);
                    return;
                }
                DateTime data;
                try
                {
                    data = DateTime.ParseExact(txtData.Value, @"dd/MM/yyyy", CultureInfo.GetCultureInfo("pt-BR"));
                }
                catch (Exception)
                {
                    lblMsg.Text = "A data deve ser preenchida com uma data válida (dd/mm/aaaa).";
                    StartComponentsScript("gerenciarTransacaoModal", rowTransacao);
                    return;
                }
                if (chkRepetirMes.Checked && !Int32.TryParse(txtRepetirMes.Text, out int num))
                {
                    lblMsg.Text = "O número de meses deve ser um número inteiro. Coloque um número válido ou desmarque esta opção.";
                    StartComponentsScript("gerenciarTransacaoModal", rowTransacao);
                    return;
                }

                Transacao transacao = new Transacao();
                if (!rowTransacao.IdTransacao.Equals(Guid.Empty))
                {
                    transacao = TransacaoManager.GetTransacaoById(guid);
                }
                transacao.IdUsuario    = Usuario.IdUsuario;
                transacao.IdCategoria  = Guid.Parse(txtIdCategoria.Value);
                transacao.Descricao    = txtDescricao.Value;
                transacao.TipoFluxo    = rdoReceita.Checked ? CategoriaManager.TIPO_FLUXO_RECEITA : CategoriaManager.TIPO_FLUXO_DESPESA;
                transacao.Comentario   = txtComentario.Value;
                transacao.Provisionado = rdoProvisao.Checked ? TransacaoManager.TRANSACAO_PROVISIONADA : TransacaoManager.TRANSACAO_EFETUADA;
                if (String.IsNullOrWhiteSpace(transacao.Identificacao))
                {
                    if (transacao.Provisionado == TransacaoManager.TRANSACAO_EFETUADA)
                    {
                        transacao.Valor         = valor;
                        transacao.Data          = data;
                        transacao.ValorProvisao = null;
                        transacao.DataProvisao  = null;
                    }
                    else
                    {
                        transacao.Valor         = null;
                        transacao.Data          = null;
                        transacao.ValorProvisao = valor;
                        transacao.DataProvisao  = data;
                    }
                }
                if (!transacao.IdTransacao.Equals(Guid.Empty))
                {
                    TransacaoManager.EditTransacao(transacao);
                }
                else
                {
                    TransacaoManager.AddTransacao(transacao);
                }
                if (chkRepetirMes.Checked && Int32.TryParse(txtRepetirMes.Text, out int numMeses))
                {
                    for (int i = 0; i < Math.Min(numMeses, 12); i++)
                    {
                        if (transacao.Provisionado == TransacaoManager.TRANSACAO_EFETUADA)
                        {
                            transacao.Data = transacao.Data?.AddMonths(1);
                        }
                        else
                        {
                            transacao.DataProvisao = transacao.DataProvisao?.AddMonths(1);
                        }

                        TransacaoManager.AddTransacao(transacao);
                    }
                }
                UpdateSaldoScript("gerenciarTransacaoModal", "Lançamento salvo com sucesso!");
            }
            catch (Exception ex)
            {
                switch (ex.GetType().Name)
                {
                case "TransacaoUsuarioException":
                case "TransacaoCategoriaException":
                case "TransacaoDescricaoException":
                case "TransacaoValorException":
                case "TransacaoDataException":
                case "TransacaoTipoFluxoException":
                case "TransacaoComentarioException":
                    ShowMessageErrorScript(ex.Message);
                    break;

                default:
                    ShowMessageErrorScript("Ocorreu um erro ao salvar o lançamento. Entre em contato com o administrador!");
                    break;
                }
                StartComponentsScript("gerenciarTransacaoModal", rowTransacao);
            }
        }