protected void Page_Load(object sender, EventArgs e) { if (Session["Usuario"] != null) { Usuario = (Usuario)Session["Usuario"]; if (!IsPostBack) { txtNome.Value = Usuario.Nome; txtNome.Disabled = true; txtEmail.Value = Usuario.Email; txtEmail.Disabled = true; txtAssunto.Focus(); } // 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(); } // Carrega o histórico de mensagens do usuário: CarregarMensagensUsuario(Usuario); } else { Usuario = null; if (!IsPostBack) { txtNome.Focus(); } } }
public FormResponderChamado(Chamado chamado) { try { Chamado = chamado; if (Chamado != null) { InitializeComponent(); lblTituloMensagem.Text = Chamado.Titulo; lblUsuario.Text = " - " + ChamadoManager.GetUsuario(Chamado).Nome + ":"; txtMensagem.Text = Chamado.Mensagem; txtMensagem.Height += txtMensagem.GetPositionFromCharIndex(txtMensagem.Text.Length - 1).Y + 3 + txtMensagem.Font.Height - txtMensagem.ClientSize.Height; txtResposta.Text = Chamado.MensagemResposta; int correcao = txtMensagem.Height - 20; lblResposta.Location = new Point(15, 92 + correcao); txtResposta.Location = new Point(17, 114 + correcao); txtResposta.Height -= correcao; } else { MessageBox.Show("Nenhum chamado foi encontrado para ser respondido.", "Chamado não encontrado.", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception ex) { MessageBox.Show("Erro ao abrir o formulário de chamado. " + Environment.NewLine + ex.Message, "Erro!!! Contate o administrador do sistema.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void BtnEnviar_Click(object sender, System.EventArgs e) { // Valida se o campo de resposta está preenchido: if (String.IsNullOrWhiteSpace(txtResposta.Text.Replace(Chamado.MensagemResposta, String.Empty))) { MessageBox.Show("A resposta não pode ser nula.", "A resposta é obrigatória!", MessageBoxButtons.OK, MessageBoxIcon.Error); txtResposta.Focus(); return; } try { Chamado.IdUsuarioSuporte = LoginInfo.Usuario.IdUsuario; Chamado.MensagemResposta = txtResposta.Text.Trim(); ChamadoManager.EditRespostaChamado(Chamado); // Envia a mensagem de resposta ao e-mail do usuário que abriu o chamado: String msg = String.Format( txtResposta.Text + Environment.NewLine + Environment.NewLine + "****************************************************************************************************" + Environment.NewLine + "Acesse o site do dominus e gerencie este retorno, enviando uma nova mensagem ou deixando o seu OK." + Environment.NewLine + Environment.NewLine + "Resposta enviada ao contato realizado em " + Chamado.DataCriacao.ToString(@"dd/MM/yyyy HH:mm:ss", CultureInfo.GetCultureInfo("pt-BR")) + Environment.NewLine + "Mensagem enviada: " + Environment.NewLine + Chamado.Mensagem + Environment.NewLine + "****************************************************************************************************" + Environment.NewLine + Environment.NewLine + "Este é um envio automático de e-mail. Não é necessário respondê-lo" ); Usuario usuario = UsuarioManager.GetUsuarioById(Chamado.IdUsuario); ChamadoManager.EnviarEmail(usuario.Email, "Retorno Dominus: " + Chamado.Titulo, msg); DialogResult = DialogResult.OK; Close(); } catch (Exception ex) { switch (ex.GetType().Name) { case "ChamadoUsuarioException": MessageBox.Show(ex.Message, "Erro ao encontrar o usuário", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case "ChamadoTituloException": MessageBox.Show(ex.Message, "Erro ao encontrar o título da mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case "ChamadoMensagemException": MessageBox.Show(ex.Message, "Revise o preenchimento da resposta", MessageBoxButtons.OK, MessageBoxIcon.Error); txtResposta.Focus(); break; default: MessageBox.Show("Erro ao enviar resposta. " + Environment.NewLine + ex.Message, "Erro!!! Contate o administrador do sistema.", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } } }
private void AdicionarMensagem(Chamado chamado, Panel panel) { Panel pnlMsg = new Panel { CssClass = "alert alert-primary mr-5" }; pnlMsg.Controls.Add(new Literal { Text = "<p><small> - " + Usuario.Nome + " (" + chamado.DataCriacao.ToString(@"dd/MM/yyyy HH:mm:ss", CultureInfo.GetCultureInfo("pt-BR")) + ")</small></p>" + chamado.Mensagem }); panel.Controls.Add(pnlMsg); if (chamado.IdUsuarioSuporte != null) { Panel pnlResp = new Panel { CssClass = "alert alert-info ml-5" }; pnlResp.Controls.Add(new Literal { Text = "<p><small> - Suporte DOMINUS (" + chamado.DataResposta?.ToString(@"dd/MM/yyyy HH:mm:ss", CultureInfo.GetCultureInfo("pt-BR")) + ")</small></p>" + chamado.MensagemResposta }); panel.Controls.Add(pnlResp); } Chamado chamadoAssociado = ChamadoManager.GetChamadoAssociado(chamado); if (chamadoAssociado != null) { AdicionarMensagem(chamadoAssociado, panel); } else if (chamado.IdUsuarioSuporte != null && chamado.Validado == ChamadoManager.CHAMADO_NAO_VALIDADO) { Button btnValidar = new Button { CssClass = "btn btn-primary mx-2", Text = "Finalizar Conversa", ToolTip = "Finalizar Conversa", OnClientClick = "ignorarForm();", CommandName = "FinalizarChamado", CommandArgument = chamado.IdChamado.ToString() }; btnValidar.Click += GerenciarChamado; Literal btnNovaMsg = new Literal { Text = "<button type='button' class='btn btn-primary mx-2' title='Escrever nova mensagem' onclick='openModalMsg(\"" + chamado.IdChamado.ToString() + "\");'>Escrever nova mensagem</button>", }; Panel pnl = new Panel(); pnl.Controls.Add(btnValidar); pnl.Controls.Add(btnNovaMsg); panel.Controls.Add(pnl); } }
protected void GerenciarChamado(object sender, EventArgs e) { try { Button btn = (Button)sender; switch (btn.CommandName) { case "FinalizarChamado": if (Guid.TryParse(btn.CommandArgument.ToString(), out Guid idChamado)) { Chamado chamado = ChamadoManager.GetChamadoById(idChamado); ChamadoManager.FinalizaChamado(chamado); Page.Response.Redirect(Page.Request.Url.ToString(), false); } break; case "NovaMensagemChamado": if (Guid.TryParse(txtRespChamado.Value.ToString(), out Guid idChamadoAssociado)) { Chamado chamadoAssociado = ChamadoManager.GetChamadoById(idChamadoAssociado); if (String.IsNullOrWhiteSpace(txtEnviarNovaMsg.Value) || txtEnviarNovaMsg.Value.Trim().Length > 1000) { lblNovaMsg.Text = "A mensagem deve ser preenchida (até 1000 caracteres)."; txtEnviarNovaMsg.Focus(); return; } ChamadoManager.AddChamado(new Chamado { IdUsuario = Usuario.IdUsuario, Titulo = chamadoAssociado.Titulo, Mensagem = txtEnviarNovaMsg.Value.Trim(), IdChamadoAssociado = chamadoAssociado.IdChamado }); Page.Response.Redirect(Page.Request.Url.ToString(), false); } break; default: break; } } catch (Exception ex) { throw ex; } }
protected void CarregarMensagensUsuario(Usuario usuario) { List <Chamado> chamados = ChamadoManager.GetChamadosPrimarios(usuario); if (chamados.Count == 0) { ExibirHistorico.Controls.Add(new Literal { Text = "<div class='card'><div class='card-header text-center'>Não há mensagens enviadas no seu histórico.</div></div>" }); return; } foreach (Chamado chamado in chamados) { ExibirHistorico.Controls.Add(CriarDialogoChamado(chamado)); } }
private void BtnResponderChamado_Click(object sender, EventArgs e) { FormResponderChamado form = new FormResponderChamado(Chamado); if (form.ShowDialog() == DialogResult.OK) { Chamado = ChamadoManager.GetChamadoById(Chamado.IdChamado); Usuario usuarioSuporte = ChamadoManager.GetUsuarioSuporte(Chamado); if (usuarioSuporte != null) { AdicionarMensagem(Chamado.MensagemResposta, usuarioSuporte.Nome, (DateTime)Chamado.DataResposta); } btnResponderChamado.Visible = Chamado.IdUsuarioSuporte == null; btnOk.DialogResult = DialogResult.OK; MessageBox.Show("A resposta do chamado foi gravada com sucesso.", "Chamado atualizado!", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void ExibirMensagem(Chamado chamado) { if (chamado.IdChamadoAssociado != null) { Chamado chamadoAssociado = ChamadoManager.GetChamadoById((Guid)chamado.IdChamadoAssociado); ExibirMensagem(chamadoAssociado); } Usuario usuario = ChamadoManager.GetUsuario(chamado); AdicionarMensagem(chamado.Mensagem, usuario.Nome, chamado.DataCriacao); Usuario usuarioSuporte = ChamadoManager.GetUsuarioSuporte(chamado); if (usuarioSuporte != null) { AdicionarMensagem(chamado.MensagemResposta, usuarioSuporte.Nome, (DateTime)chamado.DataResposta); } }
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; } }
private void CarregarGridChamados() { List <Chamado> chamados = ChamadoManager.GetChamadosAbertos(); gridChamados.DataSource = chamados.OrderByDescending(x => x.DataCriacao).ToList(); foreach (DataGridViewRow row in gridChamados.Rows) { try { // Verifica se o chamado já foi respondido: DataGridViewTextBoxCell suporte = (DataGridViewTextBoxCell)row.Cells["ChamadoIdUsuarioSuporte"]; row.Cells["ChamadoRespondido"].Value = !String.IsNullOrWhiteSpace(suporte.Value?.ToString()) ? "Sim" : "Não"; // Exibe a data de criação do chamado em um formato mais amigável: DataGridViewTextBoxCell dataCell = (DataGridViewTextBoxCell)row.Cells["ChamadoDataCriacao"]; row.Cells["ChamadoData"].Value = Convert.ToDateTime(dataCell.Value?.ToString()).ToString("dd/MM/yyyy"); } catch (Exception) { } } btnExibirChamado.Enabled = gridChamados.SelectedRows.Count > 0; btnResponderChamado.Enabled = gridChamados.SelectedRows.Count > 0 && gridChamados.SelectedRows[0].Cells["ChamadoRespondido"].Value?.ToString() == "Não"; }
private Panel CriarDialogoChamado(Chamado chamado) { Panel body = new Panel { ID = "id_" + chamado.IdChamado.ToString(), ClientIDMode = ClientIDMode.Static, CssClass = "collapse card-body" }; body.Attributes["data-parent"] = "#ExibirHistorico"; body.Attributes["aria-controls"] = "title_" + chamado.IdChamado.ToString(); AdicionarMensagem(chamado, body); HyperLink linkBody = new HyperLink { ID = "title_" + chamado.IdChamado.ToString(), ClientIDMode = ClientIDMode.Static, CssClass = "font-weight-bolder", NavigateUrl = "#id_" + chamado.IdChamado.ToString(), Text = chamado.Titulo, ToolTip = chamado.Titulo }; linkBody.Attributes["data-toggle"] = "collapse"; linkBody.Attributes["aria-expanded"] = "true"; linkBody.Attributes["aria-controls"] = "id_" + chamado.IdChamado.ToString(); Literal flagChamado = new Literal(); switch (ChamadoManager.GetStatusChamado(chamado)) { case ChamadoManager.STATUS_FINALIZADO: flagChamado.Text = " <span class='badge badge-success'>Finalizado</span>"; break; case ChamadoManager.STATUS_RESPONDIDO: flagChamado.Text = " <span class='blinking badge ml-2'>Respondido</span>"; break; case ChamadoManager.STATUS_SEM_RESPOSTA: flagChamado.Text = " <span class='badge badge-info ml-2'>Aguardando resposta do suporte</span>"; break; default: break; } Panel titulo = new Panel { CssClass = "card-header" }; titulo.Controls.Add(linkBody); titulo.Controls.Add(flagChamado); Panel pnlChamado = new Panel { ID = chamado.IdChamado.ToString(), CssClass = "card" }; pnlChamado.Controls.Add(titulo); pnlChamado.Controls.Add(body); return(pnlChamado); }
protected void BtnEnviar_Click(object sender, EventArgs e) { try { // Limpa a mensagem de alerta, caso haja algum texto: lblMsg.Text = String.Empty; lblMsg.CssClass = "text-danger"; // Valida se os campos estão preenchidos: if (String.IsNullOrWhiteSpace(txtNome.Value) || txtNome.Value.Trim().Length > 100) { lblMsg.Text = "O nome deve ser preenchido (até 100 caracteres)."; txtNome.Focus(); return; } if (String.IsNullOrWhiteSpace(txtEmail.Value) || txtEmail.Value.Trim().Length > 100 || !UsuarioManager.ValidarEmail(txtEmail.Value)) { lblMsg.Text = "O e-mail deve ser preenchido (até 100 caracteres)."; txtEmail.Focus(); return; } // Valida se os campos estão preenchidos: if (String.IsNullOrWhiteSpace(txtNome.Value) || txtNome.Value.Trim().Length > 100) { lblMsg.Text = "O nome deve ser preenchido (até 100 caracteres)."; txtNome.Focus(); return; } if (String.IsNullOrWhiteSpace(txtEmail.Value) || txtEmail.Value.Trim().Length > 100 || !UsuarioManager.ValidarEmail(txtEmail.Value)) { lblMsg.Text = "O e-mail deve ser preenchido (até 100 caracteres)."; txtEmail.Focus(); return; } if (String.IsNullOrWhiteSpace(txtAssunto.Value) || txtAssunto.Value.Trim().Length > 50) { lblMsg.Text = "O assunto deve ser preenchido (até 50 caracteres)."; txtAssunto.Focus(); return; } if (String.IsNullOrWhiteSpace(txtMensagem.Value) || txtMensagem.Value.Trim().Length > 1000) { lblMsg.Text = "A mensagem deve ser preenchida (até 1000 caracteres)."; txtMensagem.Focus(); return; } // Adiciona um chamado, caso o usuário esteja logado: if (Usuario != null) { Chamado chamado = new Chamado { IdUsuario = Usuario.IdUsuario, Titulo = txtAssunto.Value.Trim(), Mensagem = txtMensagem.Value.Trim() }; ChamadoManager.AddChamado(chamado); Page.Response.Redirect(Page.Request.Url.ToString(), false); } else { // Envia a mensagem de contato para a conta de e-mail do administrador do sistema: ChamadoManager.EnviarMensagemContato(txtNome.Value.Trim(), txtEmail.Value.Trim(), txtAssunto.Value.Trim(), txtMensagem.Value.Trim()); lblMsg.Text = "Sua mensagem foi enviada com sucesso."; lblMsg.CssClass = "text-success"; } } catch (Exception ex) { switch (ex.GetType().Name) { case "ChamadoUsuarioException": txtNome.Focus(); break; case "ChamadoTituloException": txtAssunto.Focus(); break; case "ChamadoMensagemException": txtMensagem.Focus(); break; default: throw ex; } lblMsg.Text = ex.Message; } }