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 override ChamadoViewModel MapToRepository(Chamado entity) { ChamadoViewModel value = new ChamadoViewModel() { ChamadoID = entity.ChamadoID, ChamadoMotivoID = entity.ChamadoMotivoID, DescricaoChamadoMotivo = db.ChamadoMotivos.Find(entity.ChamadoMotivoID, sessaoCorrente.empresaId).Descricao, ChamadoStatusID = entity.ChamadoStatusID, DescricaoChamadoStatus = db.ChamadoStatuss.Find(entity.ChamadoStatusID, sessaoCorrente.empresaId).Descricao, FilaSolicitanteID = entity.FilaSolicitanteID, DescricaoFilaSolicitante = db.FilaAtendimentos.Find(entity.FilaSolicitanteID).Descricao, FilaCondominoID = DWMSessaoLocal.FilaCondominoID(sessaoCorrente, this.db), CondominioID = entity.CondominioID, CondominoID = entity.CondominoID, NomeCondomino = entity.CondominoID.HasValue ? db.Condominos.Find(entity.CondominoID).Nome : "", NomeCredenciado = entity.CredenciadoID.HasValue ? db.Credenciados.Find(entity.CredenciadoID).Nome : "", CredenciadoID = entity.CredenciadoID, EdificacaoID = entity.EdificacaoID, UnidadeID = entity.UnidadeID, DescricaoEdificacao = entity.UnidadeID.HasValue ? db.Edificacaos.Find(entity.EdificacaoID).Descricao : "", DataChamado = entity.DataChamado, Assunto = entity.Assunto, UsuarioID = entity.UsuarioID, NomeUsuario = entity.NomeUsuario, LoginUsuario = entity.LoginUsuario, Prioridade = entity.Prioridade, DataUltimaAnotacao = entity.DataUltimaAnotacao, MensagemOriginal = entity.MensagemOriginal, FilaAtendimentoID = entity.FilaAtendimentoID, DescricaoFilaAtendimento = db.FilaAtendimentos.Find(entity.FilaAtendimentoID).Descricao, DataRedirecionamento = entity.DataRedirecionamento, UsuarioFilaID = entity.UsuarioFilaID, NomeUsuarioFila = entity.NomeUsuarioFila, LoginUsuarioFila = entity.LoginUsuarioFila, mensagem = new Validate() { Code = 0, Message = "Registro incluído com sucesso", MessageBase = "Registro incluído com sucesso", MessageType = MsgType.SUCCESS } }; if (entity.CondominoID.HasValue) { value.UsuarioCondominoViewModel = new UsuarioViewModel() { empresaId = SessaoLocal.empresaId, usuarioId = db.Condominos.Find(entity.CondominoID).UsuarioID.Value }; } else if (entity.CredenciadoID.HasValue) { value.UsuarioCondominoViewModel = new UsuarioViewModel() { empresaId = SessaoLocal.empresaId, usuarioId = db.Credenciados.Find(entity.CredenciadoID).UsuarioID.Value }; } ListViewChamadoFila listChamadoFila = new ListViewChamadoFila(this.db, this.seguranca_db, sessaoCorrente.sessaoId); ListViewChamadoAnotacao listChamadoAnotacao = new ListViewChamadoAnotacao(this.db, this.seguranca_db, sessaoCorrente.sessaoId); ListViewChamadoAnexo listChamadoAnexo = new ListViewChamadoAnexo(this.db, this.seguranca_db, sessaoCorrente.sessaoId); if (entity.ChamadoID > 0) { value.Rotas = listChamadoFila.Bind(0, 200, value.ChamadoID); value.Anotacoes = listChamadoAnotacao.Bind(0, 200, value.ChamadoID); value.Anexos = listChamadoAnexo.Bind(0, 100, value.ChamadoID); } else { #region Rotas value.Rotas = new List <ChamadoFilaViewModel>(); ChamadoFilaModel ChamadoFilaModel = new ChamadoFilaModel(); ChamadoFilaModel.Create(this.db, this.seguranca_db, sessaoCorrente.sessaoId); foreach (ChamadoFila fila in entity.Rotas) { ChamadoFilaViewModel ChamadoFilaViewModel = ChamadoFilaModel.MapToRepository(fila); ((List <ChamadoFilaViewModel>)value.Rotas).Add(ChamadoFilaViewModel); } #endregion #region Anexos value.Anexos = new List <ChamadoAnexoViewModel>(); ChamadoAnexoModel ChamadoAnexoModel = new ChamadoAnexoModel(); ChamadoAnexoModel.Create(this.db, this.seguranca_db, sessaoCorrente.sessaoId); foreach (ChamadoAnexo anexo in entity.Anexos) { ChamadoAnexoViewModel ChamadoAnexoViewModel = ChamadoAnexoModel.MapToRepository(anexo); ((List <ChamadoAnexoViewModel>)value.Anexos).Add(ChamadoAnexoViewModel); } #endregion } #region Verifica se o usuário corrente é um usuário da Fila de atendimento atual value.IsUsuarioFila = false; if (value.UsuarioFilaID.HasValue && value.UsuarioFilaID.Value == SessaoLocal.usuarioId) { value.IsUsuarioFila = true; } else if (value.FilaAtendimentoID != DWMSessaoLocal.FilaCondominoID(sessaoCorrente, db)) { value.IsUsuarioFila = (from f in db.FilaAtendimentos join fu in db.FilaAtendimentoUsuarios on f.FilaAtendimentoID equals fu.FilaAtendimentoID where f.CondominioID == SessaoLocal.empresaId && f.FilaAtendimentoID == value.FilaAtendimentoID && fu.UsuarioID == SessaoLocal.usuarioId select fu.UsuarioID).Count() > 0; } #endregion #region Verifica se o usuário corrente é um condômino/credenciado value.IsCondomino = (SessaoLocal.CondominoID > 0 || SessaoLocal.CredenciadoID.HasValue); #endregion return(value); }