コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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;
                }
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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;
            }
        }
コード例 #6
0
        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));
            }
        }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
ファイル: Site.Master.cs プロジェクト: dominus2020/Dominus
        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;
            }
        }
コード例 #10
0
ファイル: FormChamados.cs プロジェクト: dominus2020/Dominus
        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";
        }
コード例 #11
0
        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 = "&nbsp;&nbsp;<span class='badge badge-success'>Finalizado</span>";
                break;

            case ChamadoManager.STATUS_RESPONDIDO:
                flagChamado.Text = "&nbsp;&nbsp;<span class='blinking badge ml-2'>Respondido</span>";
                break;

            case ChamadoManager.STATUS_SEM_RESPOSTA:
                flagChamado.Text = "&nbsp;&nbsp;<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);
        }
コード例 #12
0
        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;
            }
        }