Exemplo n.º 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());
            }
        }
Exemplo n.º 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();
                }
            }
        }