public ChamadoAnotacaoViewModel Run(Repository value) { ChamadoViewModel repository = (ChamadoViewModel)value; ChamadoAnotacaoViewModel r = repository.ChamadoAnotacaoViewModel; ChamadoAnotacaoViewModel result = new ChamadoAnotacaoViewModel() { uri = r.uri, empresaId = sessaoCorrente.empresaId, ChamadoID = r.ChamadoID, DataAnotacao = Funcoes.Brasilia(), Mensagem = r.Mensagem, UsuarioID = SessaoLocal.usuarioId, mensagem = new Validate() { Code = 0, Message = "Registro processado com sucesso" } }; try { int _empresaId = sessaoCorrente.empresaId; ChamadoAnotacaoModel model = new ChamadoAnotacaoModel(); if (String.IsNullOrEmpty(value.sessionId)) { model.Create(this.db, this.seguranca_db); } else { model.Create(this.db, this.seguranca_db, value.sessionId); } result = model.Insert(result); if (result.mensagem.Code > 0) { throw new App_DominioException(result.mensagem); } #region Encaminha o chamado para a Fila de Atendimento if (repository.FilaAtendimentoID.HasValue && repository.FilaAtendimentoID != 0) { ChamadoFilaModel ChamadoFilaModel = new ChamadoFilaModel(); if (String.IsNullOrEmpty(value.sessionId)) { ChamadoFilaModel.Create(this.db, this.seguranca_db); } else { ChamadoFilaModel.Create(this.db, this.seguranca_db, value.sessionId); } ChamadoFilaViewModel ChamadoFilaViewModel = new ChamadoFilaViewModel() { empresaId = SessaoLocal.empresaId, uri = r.uri, ChamadoID = repository.ChamadoID, FilaAtendimentoID = repository.FilaAtendimentoID.Value, }; if (repository.FilaAtendimentoID == DWMSessaoLocal.FilaCondominoID(this.sessaoCorrente, this.db)) { Chamado Chamado = db.Chamados.Find(repository.ChamadoID); if (Chamado.CredenciadoID.HasValue) { ChamadoFilaViewModel.UsuarioID = db.Credenciados.Find(Chamado.CredenciadoID).UsuarioID; } else if (Chamado.CondominoID.HasValue) { ChamadoFilaViewModel.UsuarioID = db.Condominos.Find(Chamado.CondominoID).UsuarioID; } } ChamadoFilaViewModel = ChamadoFilaModel.Insert(ChamadoFilaViewModel); if (ChamadoFilaViewModel.mensagem.Code > 0) { throw new App_DominioException(ChamadoFilaViewModel.mensagem); } } #endregion #region Altera o Status do Chamado ChamadoModel ChamadoModel = new ChamadoModel(); if (String.IsNullOrEmpty(value.sessionId)) { ChamadoModel.Create(this.db, this.seguranca_db); } else { ChamadoModel.Create(this.db, this.seguranca_db, value.sessionId); } ChamadoViewModel ChamadoViewModel = ChamadoModel.getObject(repository); if (ChamadoViewModel.ChamadoStatusID != repository.ChamadoStatusID) { ChamadoViewModel.ChamadoStatusID = repository.ChamadoStatusID; ChamadoViewModel.empresaId = SessaoLocal.empresaId; ChamadoViewModel.uri = r.uri; ChamadoViewModel = ChamadoModel.Update(ChamadoViewModel); if (ChamadoViewModel.mensagem.Code > 0) { throw new App_DominioException(ChamadoViewModel.mensagem); } } #endregion db.SaveChanges(); seguranca_db.SaveChanges(); // result.mensagem.Code = -1; // Tem que devolver -1 porque na Superclasse, se devolver zero, vai executar novamente o SaveChanges. } catch (ArgumentException ex) { result.mensagem = new Validate() { Code = 997, Message = MensagemPadrao.Message(997).ToString(), MessageBase = ex.Message }; } catch (App_DominioException ex) { result.mensagem = ex.Result; if (ex.InnerException != null) { result.mensagem.MessageBase = new App_DominioException(ex.InnerException.Message ?? ex.Message, GetType().FullName).Message; } else { result.mensagem.MessageBase = new App_DominioException(ex.Result.Message, GetType().FullName).Message; } } catch (DbUpdateException ex) { result.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message; if (result.mensagem.MessageBase.ToUpper().Contains("REFERENCE") || result.mensagem.MessageBase.ToUpper().Contains("FOREIGN")) { if (result.mensagem.MessageBase.ToUpper().Contains("DELETE")) { result.mensagem.Code = 16; result.mensagem.Message = MensagemPadrao.Message(16).ToString(); result.mensagem.MessageType = MsgType.ERROR; } else { result.mensagem.Code = 28; result.mensagem.Message = MensagemPadrao.Message(28).ToString(); result.mensagem.MessageType = MsgType.ERROR; } } else if (result.mensagem.MessageBase.ToUpper().Contains("PRIMARY")) { result.mensagem.Code = 37; result.mensagem.Message = MensagemPadrao.Message(37).ToString(); result.mensagem.MessageType = MsgType.WARNING; } else if (result.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY")) { result.mensagem.Code = 54; result.mensagem.Message = MensagemPadrao.Message(54).ToString(); result.mensagem.MessageType = MsgType.WARNING; } else { result.mensagem.Code = 44; result.mensagem.Message = MensagemPadrao.Message(44).ToString(); result.mensagem.MessageType = MsgType.ERROR; } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { result.mensagem = new Validate() { Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First() }; } catch (Exception ex) { result.mensagem.Code = 17; result.mensagem.Message = MensagemPadrao.Message(17).ToString(); // result.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message; result.mensagem.MessageType = MsgType.ERROR; } return(result); }
public AlertaRepository Run(Repository value) { ChamadoViewModel c = (ChamadoViewModel)value; AlertaRepository r = new AlertaRepository(); try { EmpresaSecurity <SecurityContext> security = new EmpresaSecurity <SecurityContext>(); security.Create(this.seguranca_db); sessaoCorrente = security._getSessaoCorrente(seguranca_db, value.sessionId); #region Recupera o número do chamado if (c.ChamadoID == 0) { c.ChamadoID = (from cham in db.Chamados where cham.CondominioID == sessaoCorrente.empresaId && cham.UsuarioID == sessaoCorrente.usuarioId select cham.ChamadoID).Max(); } else { ChamadoModel ChamadoModel = new ChamadoModel(); ChamadoModel.Create(this.db, this.seguranca_db); c = ChamadoModel.getObject(c); } #endregion #region Enviar E-mail de notificação int EmailTemplateID = int.Parse(db.Parametros.Find(sessaoCorrente.empresaId, (int)Enumeracoes.Enumeradores.Param.EMAIL_TEMPLATE_CHAMADO).Valor); string _Edificacao = c.EdificacaoID > 0 && c.FilaSolicitanteID == DWMSessaoLocal.FilaCondominoID(sessaoCorrente, db) ? " - " + db.Edificacaos.Find(c.EdificacaoID).Descricao + " " + c.UnidadeID.ToString() : ""; EmailLogViewModel EmailLogViewModel = new EmailLogViewModel() { uri = value.uri, empresaId = sessaoCorrente.empresaId, EmailTipoID = (int)Enumeracoes.Enumeradores.EmailTipo.CHAMADO, CondominioID = sessaoCorrente.empresaId, EdificacaoID = c.EdificacaoID, UnidadeID = c.UnidadeID, GrupoCondominoID = null, DataEmail = Funcoes.Brasilia(), Nome = c.NomeUsuario + _Edificacao, Assunto = db.EmailTipos.Find((int)Enumeracoes.Enumeradores.EmailTipo.CHAMADO, sessaoCorrente.empresaId).Assunto + " " + c.ChamadoID.ToString() + " - " + c.Assunto, EmailMensagem = db.EmailTemplates.Find(EmailTemplateID).EmailMensagem, Repository = c }; EmailNotificacaoBI notificacaoBI = new EmailNotificacaoBI(this.db, this.seguranca_db); EmailLogViewModel = notificacaoBI.Run(EmailLogViewModel); if (EmailLogViewModel.mensagem.Code > 0) { throw new App_DominioException(EmailLogViewModel.mensagem); } EmailLogViewModel.Repository = c; IEnumerable <EmailLogViewModel> EmailLogPessoas = notificacaoBI.List(EmailLogViewModel); #endregion foreach (EmailLogViewModel log in EmailLogPessoas) { Alerta alerta = new Alerta() { usuarioId = log.UsuarioID.Value, sistemaId = sessaoCorrente.sistemaId, dt_emissao = Funcoes.Brasilia(), linkText = c.Assunto, url = "../Chamado/Index?id=" + c.ChamadoID.ToString(), mensagem = "<b>" + Funcoes.Brasilia().ToString("dd/MM/yyyy HH:mm") + "h</b><p>" + c.Assunto + "</p>" }; seguranca_db.Alertas.Add(alerta); } r.mensagem = new Validate() { Code = 0 }; } catch (DbUpdateException ex) { r.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message; if (r.mensagem.MessageBase.ToUpper().Contains("REFERENCE")) { if (r.mensagem.MessageBase.ToUpper().Contains("DELETE")) { r.mensagem.Code = 16; r.mensagem.Message = MensagemPadrao.Message(16).ToString(); r.mensagem.MessageType = MsgType.ERROR; } else { r.mensagem.Code = 28; r.mensagem.Message = MensagemPadrao.Message(28).ToString(); r.mensagem.MessageType = MsgType.ERROR; } } else if (r.mensagem.MessageBase.ToUpper().Contains("PRIMARY")) { r.mensagem.Code = 37; r.mensagem.Message = MensagemPadrao.Message(37).ToString(); r.mensagem.MessageType = MsgType.WARNING; } else if (r.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY")) { r.mensagem.Code = 54; r.mensagem.Message = MensagemPadrao.Message(54).ToString(); r.mensagem.MessageType = MsgType.WARNING; } else { r.mensagem.Code = 44; r.mensagem.Message = MensagemPadrao.Message(44).ToString(); r.mensagem.MessageType = MsgType.ERROR; } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { r.mensagem = new Validate() { Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First() }; } catch (Exception ex) { r.mensagem.Code = 17; r.mensagem.Message = MensagemPadrao.Message(17).ToString(); r.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message; r.mensagem.MessageType = MsgType.ERROR; } return(r); }