// 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) }); } }
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); } }