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