protected void CarregarGridTransacoes() { Periodo = Session["Periodo"].ToString(); DateTime periodo = DateTime.ParseExact(Periodo, @"MMMM / yyyy", CultureInfo.GetCultureInfo("pt-BR")); Transacoes = TransacaoManager.GetGridTransacoes(Usuario, periodo.Month, periodo.Year); gridTransacoes.DataSource = Transacoes; gridTransacoes.DataBind(); }
protected void CarregarGridTransacoes() { Periodo = Session["Periodo"]?.ToString(); DateTime periodo = DateTime.ParseExact(Periodo, @"MMMM / yyyy", CultureInfo.GetCultureInfo("pt-BR")); Transacoes = TransacaoManager.GetGridTransacoes(Usuario, periodo.Month, periodo.Year).Where(x => x.Modo == TransacaoManager.MODO_TRANSACAO).ToList(); gridTransacoes.DataSource = Transacoes.Take(3).ToList(); gridTransacoes.DataBind(); }
private void UpdateSaldoScript(String modal, String message) { decimal saldo = TransacaoManager.GetSaldo(Usuario); System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append(@"<script type='text/javascript'>"); sb.Append("$('#lblSaldo').text('" + saldo.ToString("C2", CultureInfo.GetCultureInfo("pt-BR")) + "');"); sb.Append("$('#lblSaldo')[0].className = '" + (saldo < 0 ? "text-danger" : "text-success") + "';"); sb.Append("swal({ title: 'Concluído', text: '" + message + "!', type: 'success', timer: 2000 });"); sb.Append("$('#" + modal + "').modal('hide');"); sb.Append(@"</script>"); ScriptManager.RegisterClientScriptBlock(this, GetType(), "closeModalScript", sb.ToString(), false); }
// DELETE api/transacoes/{id} - remove a transação recebida no banco de dados: public void Delete(String id) { try { Transacao transacao = TransacaoManager.GetTransacaoById(Guid.Parse(id.Trim())); TransacaoManager.DeleteTransacao(transacao); } catch (Exception ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { ReasonPhrase = "Erro ao remover transação", Content = new StringContent(ex.Message) }); } }
// PUT api/transacoes/{id} - edita a transação recebida no banco de dados: public Transacao Put(String id, [FromBody] Transacao transacao) { try { transacao.IdTransacao = Guid.Parse(id.Trim()); TransacaoManager.EditTransacao(transacao); return(TransacaoManager.GetTransacaoById(transacao.IdTransacao)); } catch (Exception ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { ReasonPhrase = "Erro ao editar transação", Content = new StringContent(ex.Message) }); } }
// GET api/transacoes/{id} - exibe todas as transacoes de um usuário: public List <Transacao> Get(String id, int?mes = null, int?ano = null) { try { Guid guid = Guid.Parse(id.Trim()); Usuario usuario = UsuarioManager.GetUsuarioById(guid); if (usuario != null) { return(TransacaoManager.GetTransacoes(usuario, mes, ano)); } return(null); } catch (Exception) { return(null); } }
protected void BtnDeletarTransacao_Click(object sender, EventArgs e) { if (Guid.TryParse(txtDeletarTransacao.Value, out Guid guid)) { try { Transacao transacao = TransacaoManager.GetTransacaoById(guid); TransacaoManager.DeleteTransacao(transacao); UpdateSaldoScript("deletarTransacaoModal", "Lançamento removido com sucesso!"); } catch (Exception) { ShowMessageErrorScript("Ocorreu um erro ao remover o lançamento. Entre em contato com o administrador!"); StartComponentsScript("deletarTransacaoModal", new GridRowTransacao()); } } }
// 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); } }
protected void Page_Load(object sender, EventArgs e) { // Verifica se o usuário está logado: if (Session["Usuario"] != null) { Usuario usuario = (Usuario)Session["Usuario"]; UsuarioConectado = true; // Atualiza o nome e o saldo do usuário na página: lblNomeUsuario.Text = usuario.Nome; decimal saldo = TransacaoManager.GetSaldo(usuario); lblSaldo.Text = saldo.ToString("C2", CultureInfo.GetCultureInfo("pt-BR")); lblSaldo.CssClass = saldo < 0 ? "text-danger" : "text-success"; // Verifica se o usuário possui chamados respondidos e não validados e exibe um alerta ao usuário: List <Chamado> chamados = ChamadoManager.GetChamadosAbertosRespondidos(usuario); if (chamados.Count > 0) { lblChamados.Visible = true; lblChamados.Text = chamados.Count.ToString(); linkContato.Title = "Você tem mensagem(s) respondida(s)"; } // Verifica se o usuário selecionou um período na página e atualiza o período na Session: if (IsPostBack && ddListaPeriodo.SelectedIndex >= 0) { Session["Periodo"] = ddListaPeriodo.SelectedValue; } // Atualiza a lista de períodos com os meses que contêm transações do usuário: AtualizaListaPeriodos(usuario); // Seleciona na lista o período do escopo baseado na Session do usuário: if (Session["Periodo"] != null) { ddListaPeriodo.SelectedValue = Session["Periodo"].ToString(); } } else { UsuarioConectado = false; } }
// 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); } }