Ejemplo n.º 1
0
 // POST api/transacoes - salva a transação recebida no banco de dados:
 public Transacao Post([FromBody] Transacao transacao)
 {
     try
     {
         if (transacao.IdTransacao == Guid.Empty)
         {
             transacao.IdTransacao = Guid.NewGuid();
         }
         TransacaoManager.AddTransacao(transacao);
         return(TransacaoManager.GetTransacaoById(transacao.IdTransacao));
     }
     catch (Exception ex)
     {
         throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
         {
             ReasonPhrase = "Erro ao criar transação",
             Content      = new StringContent(ex.Message)
         });
     }
 }
Ejemplo n.º 2
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);
            }
        }