Example #1
0
        public override void Salvar()
        {
            try
            {
                cde_DT_Requerida.DataMinima = Conexao.Banco.GetDate();

                cpc_DadosGerais.Controls.Validate();

                if (Parametros.Usuario == Parametros.Administrador && !Conexao.Banco.TB_DIV_USUARIOs.Any(a => a.LOGIN == Parametros.Usuario))
                {
                    throw new Exception("É necessário cadastrar o usuário administrador para efetuar o lançamento do chamado!");
                }

                chamado = new E_CHAMADO
                {
                    OPERACAO          = Operacao,
                    DEPARTAMENTO      = ccbe_Departamento.GetSelectedValue(),
                    CATEGORIA         = ccbe_Categoria.GetSelectedValue(),
                    DT_REQUERIDA      = cde_DT_Requerida.DateTime,
                    DS_CHAMADO        = cme_Descricao.Text.Treat(),
                    LOGIN_SOLICITANTE = Parametros.Usuario,
                    LOGIN_ATENDENTE   = ccbe_Atendente.GetSelectedValue().HasValue() ? ccbe_Atendente.GetSelectedValue() : null,
                    DS_RESUMO         = cte_Resumo.Text.Treat(),
                    ST_CHAMADO        = "A",
                    ANEXOS            = bs_Anexos.List.Cast <E_ANEXO>().ToList()
                };

                var transacao = 0;

                if (C_CHAMADO.Salvar(chamado, ref transacao))
                {
                    Finalizar();

                    Conexao.Reiniciar(); // Usada para remapear o DataContext.
                    Email.Enviar(Conexao.Banco.TB_DIV_CHAMADOs.FirstOrDefault(a => a.ID_CHAMADO == chamado.ID_CHAMADO), OperacaoEmail.Envio);
                }
            }
            catch (Exception excessao)
            {
                Mensagens.Alerta(excessao.Tratar());
            }
        }
Example #2
0
        public override void Salvar()
        {
            var excessaoValicadao = new Exception();

            try
            {
                var validacaoChamado = Conexao.Banco.TB_DIV_CHAMADOs.FirstOrDefault(a => a.ID_CHAMADO == chamado.ID_CHAMADO);

                if (validacaoChamado == null || validacaoChamado.ST_CHAMADO.Treat() == "C")
                {
                    excessaoValicadao = new Exception("O chamado selecionado foi cancelado!");
                }
                else if (validacaoChamado.ST_CHAMADO != "A" || validacaoChamado.TB_DIV_EVENTOs.Count > 0)
                {
                    excessaoValicadao = new Exception(String.Format("Este chamado já foi atendido pelo usuário: {0} - {1}", validacaoChamado.LOGIN_ATENDENTE, Conexao.Banco.TB_DIV_USUARIOs.FirstOrDefault(a => a.LOGIN == validacaoChamado.LOGIN_ATENDENTE).NM_USUARIO.Treat()));
                }
                else if (Parametros.IsAdministrator() && !Conexao.Banco.TB_DIV_USUARIOs.Any(a => a.LOGIN == Parametros.Usuario))
                {
                    excessaoValicadao = new Exception("É necessário cadastrar o usuário administrador para atender um chamado!");
                }

                if (excessaoValicadao.Message != new Exception().Message)
                {
                    throw excessaoValicadao;
                }

                chamado = new E_CHAMADO(validacaoChamado);

                cde_DT_Prevista.DataMinima = Conexao.Banco.GetDate();

                cpc_DadosGerais.Controls.Validate();

                chamado.OPERACAO   = Operacao.Alterar;
                chamado.PRIORIDADE = new E_PRIORIDADE {
                    ID_PRIORIDADE = ccbe_Prioridade.GetSelectedValue()
                };
                chamado.DT_PREVISTA     = cde_DT_Prevista.DateTime;
                chamado.DT_ATENDIMENTO  = Conexao.Banco.GetDate();
                chamado.DS_OBSERVACAO   = cme_Observacao.Text.Treat();
                chamado.LOGIN_ATENDENTE = Parametros.Usuario;

                var transacao = 0;

                if (C_CHAMADO.Salvar(chamado, ref transacao, new E_EVENTO
                {
                    DS_EVENTO = chamado.DS_OBSERVACAO,
                    DT_EVENTO = Conexao.Banco.GetDate(),
                    STATUS = cbce_ProximoStatus.GetSelectedValue(),
                    LOGIN_ATENDENTE = Parametros.Usuario
                }))
                {
                    if (ccbe_NovaCategoria.GetSelectedValue() != cte_Categoria.Text.GetValue())
                    {
                        C_TRANSFERENCIACATEGORIA.Salvar(new E_TRANSF_CATEGORIA
                        {
                            ID_CHAMADO       = chamado.ID_CHAMADO,
                            LOGIN            = Parametros.Usuario,
                            OPERACAO         = Utilidades.Operacao.Cadastrar,
                            ID_CATEGORIA_NEW = ccbe_NovaCategoria.GetSelectedValue().ToInt(),
                            ID_CATEGORIA_OLD = cte_Categoria.Text.GetValue().ToInt()
                        }, ref transacao);
                    }

                    Finalizar();

                    Email.Enviar(validacaoChamado, OperacaoEmail.Atendimento);
                }
            }
            catch (Exception excessao)
            {
                Mensagens.Alerta(excessao.Tratar());

                if (excessaoValicadao.Message == excessao.Message)
                {
                    Cancelar();
                }
            }
        }
Example #3
0
        public static bool Salvar(E_CHAMADO chamado, ref int transacao, E_EVENTO evento = null)
        {
            try
            {
                Conexao.Iniciar(ref transacao);

                var id_chamado        = (int?)chamado.ID_CHAMADO;
                var id_categoria      = (int?)(chamado.CATEGORIA.HasValue() ? chamado.CATEGORIA.Split('-').FirstOrDefault().ToInt() as int? : null);
                var id_departamento   = (int?)(chamado.DEPARTAMENTO.HasValue() ? chamado.DEPARTAMENTO.Split('-').FirstOrDefault().ToInt() as int? : null);
                var login_solicitante = chamado.LOGIN_SOLICITANTE.Treat().Split('-').FirstOrDefault().Treat().Trim();
                var login_atendente   = chamado.LOGIN_ATENDENTE.Treat().Split('-').FirstOrDefault().Trim().Trim();

                Conexao.Banco.CAD_DIV_CHAMADO(chamado.OPERACAO.Value(),
                                              ref id_chamado,
                                              id_categoria,
                                              login_solicitante.HasValue() ? login_solicitante : null,
                                              login_atendente.HasValue() ? login_atendente : null,
                                              id_departamento,
                                              chamado.DS_CHAMADO,
                                              chamado.DS_OBSERVACAO,
                                              chamado.DS_SOLUCAO,
                                              chamado.DS_RESUMO,
                                              chamado.DS_SUGESTAO,
                                              chamado.NOTA,
                                              chamado.ESTIMATIVA_TEMPO,
                                              (chamado.PRIORIDADE ?? new E_PRIORIDADE()).ID_PRIORIDADE,
                                              chamado.ST_CHAMADO,
                                              chamado.DT_CHAMADO,
                                              chamado.DT_PREVISTA,
                                              chamado.DT_FINALIZADO,
                                              chamado.DT_ATENDIMENTO,
                                              chamado.DT_REQUERIDA);
                Conexao.Enviar();

                chamado.ID_CHAMADO = (int)id_chamado;

                if (evento != null)
                {
                    evento.ID_CHAMADO = chamado.ID_CHAMADO;
                    evento.OPERACAO   = Operacao.Cadastrar;

                    C_EVENTO.Salvar(evento, ref transacao);
                }

                if (chamado.ANEXOS != null && chamado.ANEXOS.Count > 0 && chamado.OPERACAO == Operacao.Cadastrar)
                {
                    foreach (var anexo in chamado.ANEXOS)
                    {
                        var id_anexo = (int?)anexo.ID_ANEXO;

                        Conexao.Banco.CAD_DIV_ANEXO(chamado.OPERACAO.Value(),
                                                    ref id_anexo,
                                                    anexo.ANEXO,
                                                    anexo.NM_ANEXO,
                                                    anexo.EXTENSAO);
                        Conexao.Enviar();
                        anexo.ID_ANEXO = (int)id_anexo;

                        Conexao.Banco.CAD_DIV_ANEXO_X_CHAMADO(chamado.OPERACAO.Value(),
                                                              id_chamado,
                                                              id_anexo);
                        Conexao.Enviar();
                    }
                }
            }
            catch (Exception excessao)
            {
                Conexao.Voltar(ref transacao);
                throw excessao;
            }

            Conexao.Finalizar(ref transacao);

            return(true);
        }