public override ChamadoViewModel BeforeInsert(ChamadoViewModel value) { try { value = GetUsuario(value); value.empresaId = SessaoLocal.empresaId; value.DataChamado = Funcoes.Brasilia(); value.CondominioID = SessaoLocal.empresaId; value.ChamadoStatusID = 0; value.DataRedirecionamento = Funcoes.Brasilia(); // Se a fila de atendimento destino for a fila do condômino, então preencher o responsável pelo chamado (UsuarioID, Nome e Login) if (value.FilaAtendimentoID == DWMSessaoLocal.FilaCondominoID(sessaoCorrente, db)) { int UsuarioCondominoID = db.Condominos.Find(value.CondominoID).UsuarioID.Value; Usuario u = seguranca_db.Usuarios.Find(UsuarioCondominoID); value.UsuarioFilaID = u.usuarioId; value.NomeUsuarioFila = u.nome; value.LoginUsuarioFila = u.login; value.ChamadoFilaViewModel.UsuarioID = u.usuarioId; // login e nome do usuário serão recuperados do método beforeinsert do ChamadoFilaModel. } #region Executa o método BeforeInsert do ChamadoFila ChamadoFilaModel ChamadoFilaModel = new ChamadoFilaModel(); ChamadoFilaModel.Create(this.db, this.seguranca_db, SessaoLocal.sessaoId); value.ChamadoFilaViewModel = ChamadoFilaModel.BeforeInsert(value.ChamadoFilaViewModel); value.Rotas = new List <ChamadoFilaViewModel>(); ((List <ChamadoFilaViewModel>)value.Rotas).Add(value.ChamadoFilaViewModel); #endregion #region Executa o método BeforeInsert do ChamadoAnexo para cada elemento da coleção ChamadoAnexoModel ChamadoAnexoModel = new ChamadoAnexoModel(); ChamadoAnexoModel.Create(this.db, this.seguranca_db, SessaoLocal.sessaoId); int index = 0; while (index <= value.Anexos.Count() - 1) { ChamadoAnexoViewModel ChamadoAnexoViewModel = ChamadoAnexoModel.BeforeInsert(value.Anexos.ElementAt(index)); value.Anexos.ElementAt(index).UsuarioID = ChamadoAnexoViewModel.UsuarioID; value.Anexos.ElementAt(index).Nome = ChamadoAnexoViewModel.Nome; value.Anexos.ElementAt(index).Login = ChamadoAnexoViewModel.Login; index++; } #endregion } catch (Exception ex) { value.mensagem = new Validate() { Code = 999, Message = "Ocorreu um erro no evento interno que antecede a inclusão do chamado. Favor entrar em contato com o administrador do sistema", MessageBase = ex.Message }; } return(value); }
public override Validate Validate(ChamadoViewModel value, Crud operation) { value.mensagem = new Validate() { Code = 0, Message = MensagemPadrao.Message(0).ToString() }; if (value.CondominioID == 0) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Condomínio").ToString(); value.mensagem.MessageBase = "Condomínio deve ser informado"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (value.empresaId == 0) { value.mensagem.Code = 35; value.mensagem.Message = MensagemPadrao.Message(35).ToString(); value.mensagem.MessageBase = "Sua sessão expirou. Faça um novo login no sistema"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (value.ChamadoMotivoID == 0) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Motivo").ToString(); value.mensagem.MessageBase = "Motivo do chamado deve ser informado"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (value.ChamadoStatusID != 0 && operation == Crud.INCLUIR) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Situação").ToString(); value.mensagem.MessageBase = "Situação do chamado deve ser informada"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } // Se a fila solicitante ou a fila para atendimento for a fila do condômino // é preciso então que o ID do condômino ou do Credenciado estejam preenchidos // é preciso também que a Edificação e a Unidade também estejam preenchidas if (DWMSessaoLocal.FilaCondominoID(sessaoCorrente, db) == value.FilaSolicitanteID || DWMSessaoLocal.FilaCondominoID(sessaoCorrente, db) == value.FilaAtendimentoID) { if (value.CondominoID == 0) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Condômino").ToString(); value.mensagem.MessageBase = "Condômino deve ser informado"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (SessaoLocal.CredenciadoID > 0 && value.CredenciadoID == 0) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Residente").ToString(); value.mensagem.MessageBase = "Dependente deve ser informado"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (value.EdificacaoID == 0) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Edificação").ToString(); value.mensagem.MessageBase = "Edificação deve ser informada"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (value.UnidadeID == 0) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Unidade").ToString(); value.mensagem.MessageBase = "Unidade deve ser informada"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } } if (String.IsNullOrEmpty(value.Assunto) || value.Assunto.Trim().Length <= 10) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Assunto").ToString(); value.mensagem.MessageBase = "Assunto deve ser informado e deve ter mais de 10 caracteres"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (value.UsuarioID == 0) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "ID do Usuário").ToString(); value.mensagem.MessageBase = "Código identificador do Usuário que abriu o chamado deve ser informado"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (String.IsNullOrEmpty(value.NomeUsuario)) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Nome do Usuário").ToString(); value.mensagem.MessageBase = "Nome do Usuário que abriu o chamado deve ser informado"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (String.IsNullOrEmpty(value.LoginUsuario)) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Login do Usuário").ToString(); value.mensagem.MessageBase = "Login do Usuário que abriu o chamado deve ser informado"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (String.IsNullOrEmpty(value.Prioridade)) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Prioridade").ToString(); value.mensagem.MessageBase = "Prioridade do chamado deve ser informada"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (String.IsNullOrEmpty(value.MensagemOriginal)) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Mensagem").ToString(); value.mensagem.MessageBase = "Mensagem do chamado deve ser informada"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (value.FilaAtendimentoID == 0) { value.mensagem.Code = 5; value.mensagem.Message = MensagemPadrao.Message(5, "Fila de atendimento").ToString(); value.mensagem.MessageBase = "Fila de atendimento deve ser informada"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } if (value.FilaAtendimentoID == value.FilaSolicitanteID) { value.mensagem.Code = 49; value.mensagem.Message = MensagemPadrao.Message(49, "Solicitante", "Encaminhado para").ToString(); value.mensagem.MessageBase = "Fila do Solicitante dever ser diferente da Fila de Atendimento"; value.mensagem.MessageType = MsgType.WARNING; return(value.mensagem); } // Valida o ChamadoFila if (operation == Crud.INCLUIR) { ChamadoFilaModel ChamadoFilaModel = new ChamadoFilaModel(); ChamadoFilaModel.Create(this.db, this.seguranca_db, SessaoLocal.sessaoId); value.mensagem = ChamadoFilaModel.Validate(value.ChamadoFilaViewModel, Crud.INCLUIR); } // Validar Anexos ChamadoAnexoModel ChamadoAnexoModel = new ChamadoAnexoModel(); ChamadoAnexoModel.Create(this.db, this.seguranca_db, SessaoLocal.sessaoId); foreach (ChamadoAnexoViewModel cha in value.Anexos) { value.mensagem = ChamadoAnexoModel.Validate(cha, Crud.INCLUIR); if (value.mensagem.Code > 0) { break; } } ; return(value.mensagem); }
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); }
public override Chamado MapToEntity(ChamadoViewModel value) { Chamado entity = null; if (value.ChamadoID > 0) { entity = Find(value); } else { entity = new Chamado(); } entity.ChamadoID = value.ChamadoID; entity.ChamadoMotivoID = value.ChamadoMotivoID; entity.ChamadoStatusID = value.ChamadoStatusID; entity.FilaSolicitanteID = value.FilaSolicitanteID; entity.CondominioID = value.CondominioID; entity.CondominoID = value.CondominoID == 0 ? null : value.CondominoID; entity.CredenciadoID = value.CredenciadoID == 0 ? null : value.CredenciadoID; entity.EdificacaoID = value.EdificacaoID; entity.UnidadeID = value.UnidadeID; entity.DataChamado = value.DataChamado; entity.Assunto = value.Assunto; entity.MensagemOriginal = value.MensagemOriginal; entity.UsuarioID = value.UsuarioID; entity.NomeUsuario = value.NomeUsuario; entity.LoginUsuario = value.LoginUsuario; entity.Prioridade = value.Prioridade; entity.DataUltimaAnotacao = value.DataUltimaAnotacao; entity.FilaAtendimentoID = value.FilaAtendimentoID; entity.DataRedirecionamento = value.DataRedirecionamento; entity.UsuarioFilaID = value.UsuarioFilaID; entity.NomeUsuarioFila = value.NomeUsuarioFila; entity.LoginUsuarioFila = value.LoginUsuarioFila; // Executa o MapToEntity do ChamadoFila if (value.ChamadoFilaViewModel != null) { ChamadoFilaModel ChamadoFilaModel = new ChamadoFilaModel(); ChamadoFilaModel.Create(this.db, this.seguranca_db, SessaoLocal.sessaoId); entity.Rotas = new List <ChamadoFila>(); entity.Rotas.Add(ChamadoFilaModel.MapToEntity(value.ChamadoFilaViewModel)); } // Mapear anexos if (entity.Anexos == null || entity.Anexos.Count == 0) { ChamadoAnexoModel ChamadoAnexoModel = new ChamadoAnexoModel(); ChamadoAnexoModel.Create(this.db, this.seguranca_db, SessaoLocal.sessaoId); entity.Anexos = new List <ChamadoAnexo>(); foreach (ChamadoAnexoViewModel cha in value.Anexos) { ChamadoAnexo ChamadoAnexo = ChamadoAnexoModel.MapToEntity(cha); entity.Anexos.Add(ChamadoAnexo); } ; } return(entity); }