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 ActionResult EditAnotacao( int ChamadoID, string Mensagem, string FilaAtendimentoAtualID, string _FilaAtendimentoID, string DescricaoFilaAtendimento, string IsCondomino, string _ChamadoStatusID, string DescricaoChamadoStatus) { if (ModelState.IsValid) { if (ViewBag.ValidateRequest) { ChamadoViewModel result = null; try { int?FilaAtendimentoID = null; if (FilaAtendimentoAtualID != _FilaAtendimentoID) { FilaAtendimentoID = int.Parse(_FilaAtendimentoID); } #region Incluir Anotação result = new ChamadoViewModel() { ChamadoID = ChamadoID, uri = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString(), ChamadoAnexoViewModel = new ChamadoAnexoViewModel(), ChamadoFilaViewModel = new ChamadoFilaViewModel(), ChamadoAnotacaoViewModel = new ChamadoAnotacaoViewModel() { ChamadoID = ChamadoID, Mensagem = Mensagem }, ChamadoStatusID = _ChamadoStatusID == null || _ChamadoStatusID == "" ? 0 : int.Parse(_ChamadoStatusID), FilaAtendimentoID = FilaAtendimentoID, DescricaoFilaAtendimento = DescricaoFilaAtendimento, DescricaoChamadoStatus = DescricaoChamadoStatus, DataRedirecionamento = Funcoes.Brasilia(), Rotas = new List <ChamadoFilaViewModel>(), Anexos = new List <ChamadoAnexoViewModel>(), mensagem = new Validate() { Code = 0 } }; if (FilaAtendimentoAtualID == _FilaAtendimentoID) { result.IsUsuarioFila = false; } else { result.IsUsuarioFila = true; } result.ChamadoAnotacaoViewModel.uri = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString(); FactoryLocalhost <ChamadoAnotacaoViewModel, ApplicationContext> factory = new FactoryLocalhost <ChamadoAnotacaoViewModel, ApplicationContext>(); result.Anotacoes = factory.Execute(new ChamadoAnotacaoBI(), result, ChamadoID); if (factory.Mensagem.Code > 0) { throw new App_DominioException(factory.Mensagem); } ChamadoAnotacaoModel model = new ChamadoAnotacaoModel(); ChamadoAnotacaoViewModel ChamadoAnotacaoViewModel = model.CreateRepository(Request); result.ChamadoAnotacaoViewModel.ChamadoID = ChamadoID; #endregion #region Emitir Alerta e enviar o e-mail para a fila destinatária FactoryLocalhost <AlertaRepository, ApplicationContext> factoryAlert = new FactoryLocalhost <AlertaRepository, ApplicationContext>(); AlertaBI bi = new AlertaBI(); AlertaRepository a = factoryAlert.Execute(new AlertaBI(), result); if (a.mensagem.Code > 0) { throw new Exception(a.mensagem.Message); } #endregion #region Recupera o ChamadoViewModel FactoryLocalhost <ChamadoViewModel, ApplicationContext> factoryChamado = new FactoryLocalhost <ChamadoViewModel, ApplicationContext>(); result = factoryChamado.Execute(new ChamadoEditBI(), result); #endregion //if (FilaAtendimentoAtualID != _FilaAtendimentoID) // result.IsUsuarioFila = false; //else // result.IsUsuarioFila = true; //result.IsCondomino = IsCondomino == "True" ? true : false; Success("Registro processado com sucesso"); } catch (App_DominioException ex) { ModelState.AddModelError("", ex.Result.MessageBase); // mensagem amigável ao usuário Error(ex.Result.Message); // Mensagem em inglês com a descrição detalhada do erro e fica no topo da tela } catch (Exception ex) { App_DominioException.saveError(ex, GetType().FullName); ModelState.AddModelError("", MensagemPadrao.Message(17).ToString()); // mensagem amigável ao usuário Error(ex.Message); // Mensagem em inglês com a descrição detalhada do erro e fica no topo da tela } return(View("_Anotacao", result)); } else { return(View()); } } else { //CondominoEditViewModel result = new CondominoEditViewModel() //{ // UnidadeViewModel = new UnidadeViewModel() // { // EdificacaoID = VeiculoViewModel.EdificacaoID, // UnidadeID = VeiculoViewModel.UnidadeID, // CondominioID = VeiculoViewModel.CondominioID // }, // CondominoPFViewModel = new CondominoPFViewModel() // { // CondominoID = VeiculoViewModel.CondominoID // }, // VeiculoViewModel = VeiculoViewModel //}; //Factory<CondominoEditViewModel, ApplicationContext> factory = new Factory<CondominoEditViewModel, ApplicationContext>(); //CondominoEditViewModel obj = factory.Execute(new EditarCondominoBI(), result); //result.Veiculos = obj.Veiculos; //Error("Erro de preenhcimento em campos"); return(View("_Anotacao", result)); } }