public ChamadoViewModel Run(Repository value)
        {
            ChamadoViewModel r      = (ChamadoViewModel)value;
            ChamadoViewModel result = new ChamadoViewModel()
            {
                mensagem = new Validate()
                {
                    Code = -1, Message = "Registro processado com sucesso"
                }
            };

            try
            {
                int _empresaId = sessaoCorrente.empresaId;

                ChamadoModel model = new ChamadoModel();
                model.Create(this.db, this.seguranca_db, r.sessionId);
                result = model.MapToRepository(this.db.Chamados.Find(r.ChamadoID));

                #region Valida permissão do usuário para editar o chamado
                if ((SessaoLocal.CondominoID > 0 || SessaoLocal.CredenciadoID > 0) && !(result.CondominioID == _empresaId &&
                                                                                        (result.CondominoID.HasValue && result.CondominoID == SessaoLocal.CondominoID ||
                                                                                         result.CredenciadoID.HasValue && result.CredenciadoID == SessaoLocal.CredenciadoID ||
                                                                                         result.UsuarioID == SessaoLocal.usuarioId ||
                                                                                         result.UsuarioFilaID.HasValue && result.UsuarioFilaID == SessaoLocal.usuarioId ||
                                                                                         result.Rotas.Where(info => info.UsuarioID == SessaoLocal.usuarioId).Count() > 0)))
                {
                    // Verifica se o usuário está em alguma fila de atendimento
                    bool HeIsAtTheFila = false;
                    foreach (ChamadoFilaViewModel fil in result.Rotas)
                    {
                        int FilaAtendimentoID = fil.FilaAtendimentoID;
                        if ((from fila in db.FilaAtendimentos
                             join filaUsu in db.FilaAtendimentoUsuarios on fila.FilaAtendimentoID equals filaUsu.FilaAtendimentoID
                             where fila.CondominioID == SessaoLocal.empresaId &&
                             fila.FilaAtendimentoID == FilaAtendimentoID &&
                             filaUsu.UsuarioID == SessaoLocal.usuarioId
                             select fila).Count() > 0)
                        {
                            HeIsAtTheFila = true;
                        }
                    }
                    if (!HeIsAtTheFila)
                    {
                        result = null;
                    }
                }

                result.mensagem.Code = -1; // se for igual a zero vai executar no factorylocalhost o db.savechanges

                #endregion
            }
            catch (ArgumentException ex)
            {
                result.mensagem = new Validate()
                {
                    Code = 999, Message = MensagemPadrao.Message(999).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"))
                {
                    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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }