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