public ResponseDTO <AlunoMedsoft> GetAcessoAluno(string register, int idAplicacao, string appVersion) { var response = new ResponseDTO <AlunoMedsoft> { Retorno = new AlunoMedsoft() }; try { var funcionarioEntity = new FuncionarioEntity(); var pessoaEntity = new PessoaEntity(); var cliente = new Cliente(); using (MiniProfiler.Current.Step("Obtendo dados do usuario")) { cliente = CacheClienteGetByFilters(register, idAplicacao); } if (cliente == null || cliente.ID == 0) { SetResponse(false, TipoErroAcesso.CadastroInexistente.GetDescription(), _alunoRepository.GetMensagensLogin(idAplicacao, (int)TipoMensagemMEDSOFT.USUARIO_NAO_CADASTRADO), TipoErroAcesso.CadastroInexistente); return(response); } var golden = 0; var tipoPessoa = new Pessoa.EnumTipoPessoa(); var tipoPerfil = new EnumTipoPerfil(); var isExAluno = false; float tempoInadimplenciaTimeout = 0; using (MiniProfiler.Current.Step("Obtendo dados do usuario")) { golden = _clienteRepository.UserGolden(cliente.Register, Aplicacoes.MsProMobile); tipoPessoa = pessoaEntity.GetPersonType(cliente.Register); tipoPerfil = funcionarioEntity.GetTipoPerfilUsuario(cliente.ID); isExAluno = _alunoRepository.IsExAlunoTodosProdutos(cliente.ID); tempoInadimplenciaTimeout = new ConfigBusiness(new ConfigEntity()).GetTempoInadimplenciaTimeoutParametro(); } var aluno = new AlunoMedsoft { ID = cliente.ID, Nome = cliente.Nome, NickName = cliente.NickName, Register = cliente.Register, Senha = cliente.Senha, Foto = cliente.Foto, FotoPerfil = cliente.FotoPerfil, IsGolden = golden > 0, TipoPessoa = tipoPessoa, TipoPerfil = tipoPerfil, ExAluno = isExAluno, tokenLogin = Util.AuthJWT.GeraJwt(cliente.ID, Constants.doisDiasEmMinutos), TempoInadimplenciaTimeout = tempoInadimplenciaTimeout, LstOrdemVendaMsg = cliente.LstOrdemVendaMsg }; var anoLetivoAtual = Utilidades.GetYear(); var anoSeguinte = anoLetivoAtual + 1; var anoAnterior = anoLetivoAtual - 1; var anoAnteriorAntesDataLimite = Utilidades.IsAntesDatalimiteCache(anoAnterior, idAplicacao); var anoDireitoVitalicio = Convert.ToInt32(ConfigurationProvider.Get("Settings:anoComDireitoVitalicio")); var anosPermitidos = new List <int>(); for (var ano = anoDireitoVitalicio; ano <= anoSeguinte; ano++) { anosPermitidos.Add(ano); } if (anoAnteriorAntesDataLimite) { anosPermitidos.Add(anoAnterior); } response.LstOrdemVendaMsg = cliente.LstOrdemVendaMsg; response.Retorno = aluno; response.Sucesso = true; return(response); } catch { throw; } }
public AlunoMedsoft GetAcessoAluno(string register, string senha, int idAplicacao, string appVersion, string tokenDevice, int idDevice) { var response = new AlunoMedsoft(); try { var funcionarioEntity = new FuncionarioEntity(); var pessoaEntity = new PessoaEntity(); var cliente = new Cliente(); using (MiniProfiler.Current.Step("Obtendo dados do usuario")) { cliente = CacheClienteGetByFilters(register, idAplicacao); } if (cliente == null || cliente.ID == 0) { SetResponse(false, TipoErroAcesso.CadastroInexistente.GetDescription(), _alunoRepository.GetMensagensLogin(idAplicacao, (int)TipoMensagemMEDSOFT.USUARIO_NAO_CADASTRADO), TipoErroAcesso.CadastroInexistente); return(response); } var aluno = new AlunoMedsoft(); using (MiniProfiler.Current.Step("Obtendo informações do tipo de usuário")) { var golden = _clienteRepository.UserGolden(cliente.Register, Aplicacoes.MsProMobile); var tipoPessoa = pessoaEntity.GetPersonType(cliente.Register); var tipoPerfil = funcionarioEntity.GetTipoPerfilUsuario(cliente.ID); var isExAluno = false; if (!_alunoRepository.IsAlunoPendentePagamento(cliente.ID)) { isExAluno = _alunoRepository.IsExAlunoTodosProdutosCache(cliente.ID); } var tempoInadimplenciaTimeout = new ConfigBusiness(new ConfigEntity()).GetTempoInadimplenciaTimeoutParametro(); aluno = new AlunoMedsoft { ID = cliente.ID, Nome = cliente.Nome.TrimEnd(), NickName = cliente.NickName, Register = cliente.Register.TrimEnd(), Senha = cliente.Senha, Foto = cliente.Foto, FotoPerfil = cliente.FotoPerfil, IsGolden = golden > 0, TipoPessoa = tipoPessoa, TipoPerfil = tipoPerfil, ExAluno = isExAluno, tokenLogin = Util.AuthJWT.GeraJwt(cliente.ID, Constants.doisDiasEmMinutos), TempoInadimplenciaTimeout = tempoInadimplenciaTimeout, LstOrdemVendaMsg = cliente.LstOrdemVendaMsg }; if (aluno.Senha == string.Empty) { SetResponse(false, TipoErroAcesso.SemSenhaCadastrada.GetDescription(), _alunoRepository.GetMensagensLogin(idAplicacao, (int)TipoMensagemMEDSOFT.CADASTRAR_SENHA_MEDSOFTPRO), TipoErroAcesso.SemSenhaCadastrada); return(aluno); } if (!aluno.IsGolden && aluno.Senha != senha) { SetResponse(false, TipoErroAcesso.SenhaIncorreta.GetDescription(), _alunoRepository.GetMensagensLogin(idAplicacao, (int)TipoMensagemMEDSOFT.ACESSO_NEGADO_SENHA_INCORRETA), TipoErroAcesso.SenhaIncorreta); return(aluno); } if (cliente.RetornoStatus == Cliente.StatusRetorno.SemAcesso || cliente.RetornoStatus == Cliente.StatusRetorno.Cancelado) { if (string.IsNullOrEmpty(cliente.MensagemRetorno)) { SetResponse(false, TipoErroAcesso.SemProdutosContratados.GetDescription(), _alunoRepository.GetMensagensLogin(idAplicacao, (int)TipoMensagemMEDSOFT.SEM_PRODUTOS), TipoErroAcesso.SemProdutosContratados); } else { SetResponse(false, cliente.TituloMensagemRetorno, cliente.MensagemRetorno, cliente.ETipoErro); } return(response); } else if (!string.IsNullOrEmpty(cliente.MensagemRetorno)) { SetResponse(true, cliente.TituloMensagemRetorno, cliente.MensagemRetorno, cliente.ETipoErro); } } var produtosPermitidos = new List <Produto.Produtos>(); var produtosContradados = new List <Produto>(); using (MiniProfiler.Current.Step("Obtendo informações de produtos contratados")) { produtosPermitidos = _alunoRepository.GetProdutosPermitidosLogin(idAplicacao); produtosContradados = ProdutoEntity.GetProdutosContratadosPorAnoCache(cliente.ID, false, 0, true, idAplicacao); } var anoLetivoAtual = Utilidades.GetYear(); var anoSeguinte = anoLetivoAtual + 1; var anoAnterior = anoLetivoAtual - 1; var anoAnteriorAntesDataLimite = Utilidades.IsAntesDatalimiteCache(anoAnterior, idAplicacao); var anoDireitoVitalicio = Convert.ToInt32(ConfigurationProvider.Get("Settings:anoComDireitoVitalicio")); var anosPermitidos = new List <int>(); for (var ano = anoDireitoVitalicio; ano <= anoSeguinte; ano++) { anosPermitidos.Add(ano); } if (anoAnteriorAntesDataLimite) { anosPermitidos.Add(anoAnterior); } var hasPermitidos = produtosContradados .Any(p => produtosPermitidos.Contains((Produto.Produtos)p.IDProduto) && anosPermitidos.Contains(p.Ano.Value)); if (!hasPermitidos) { SetResponse(false, TipoErroAcesso.SemProdutosContratados.GetDescription(), _alunoRepository.GetMensagensLogin(idAplicacao, (int)TipoMensagemMEDSOFT.SEM_PRODUTOS), TipoErroAcesso.SemProdutosContratados); return(response); } bool isVersaoBloqueada = string.IsNullOrEmpty(appVersion) ? _configRepository.GetDeveBloquearAppVersaoNulaCache() : new VersaoAppPermissaoBusiness(_versaoAppRepository).IsVersaoBloqueada(appVersion, idAplicacao); if (isVersaoBloqueada) { SetResponse(false, TipoErroAcesso.VersaoAppDesatualizada.GetDescription(), _alunoRepository.GetMensagensLogin(idAplicacao, (int)TipoMensagemMEDSOFT.APLICATIVO_DESATUALIZADO), TipoErroAcesso.VersaoAppDesatualizada); return(response); } var permissaoDevice = new PermissaoDevice(); using (MiniProfiler.Current.Step("Verificando permissões de acesso de usuário")) { permissaoDevice = new AlunoEntity().GetPermissaoAcesso(idAplicacao, aluno.ID, tokenDevice, (Utilidades.TipoDevice)idDevice); aluno.PermiteAcesso = (aluno.IsGolden || permissaoDevice.PermiteAcesso == 1); aluno.PermiteTroca = (!aluno.IsGolden && permissaoDevice.PermiteTroca == 1); } if (!aluno.PermiteAcesso && !aluno.PermiteTroca) { SetResponse(false, TipoErroAcesso.DeviceBloqueado.GetDescription(), _alunoRepository.GetMensagensLogin(idAplicacao, (int)TipoMensagemMEDSOFT.DISPOSITIVO_BLOQUEADO), TipoErroAcesso.DeviceBloqueado); return(response); } if (!aluno.LstOrdemVendaMsg.Any(x => x.PermiteAcesso == 1)) { SetResponse(false, TipoErroAcesso.BloqueadoInadimplencia.GetDescription(), cliente.MensagemRetorno, TipoErroAcesso.BloqueadoInadimplencia); return(response); } LogLogin log = new LogLogin { Matricula = aluno.ID, AplicacaoId = idAplicacao, AcessoId = 0 }; new LogEntity().InsertAcessoLogin(log); SetResponse(true); return(aluno); } catch { throw; } }