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