예제 #1
0
        public IHttpActionResult LogarUsuarioMobile(String email, String senha, String city, String countryCode, String isp, String org, String ip, String region, String modeloCel, String numeroIMEI, String operadora)
        {
            String novacity        = String.Empty;
            String novocountryCode = String.Empty;
            String novoisp         = String.Empty;
            String novoorg         = String.Empty;
            String novoip          = String.Empty;
            String novaregion      = String.Empty;
            String novomodeloCel   = String.Empty;
            String novonumeroIMEI  = String.Empty;
            String novaoperadora   = String.Empty;

            novacity        = !String.IsNullOrEmpty(city) ? city.Substring(0, city.Length > 50 ? 50 : city.Length) : String.Empty;
            novocountryCode = !String.IsNullOrEmpty(countryCode) ? countryCode.Substring(0, countryCode.Length > 50 ? 50 : countryCode.Length) : String.Empty;
            novoisp         = !String.IsNullOrEmpty(isp) ? isp.Substring(0, isp.Length > 50 ? 50 : isp.Length) : String.Empty;
            novoorg         = !String.IsNullOrEmpty(org) ? org.Substring(0, org.Length > 50 ? 50 : org.Length) : String.Empty;
            novoip          = !String.IsNullOrEmpty(ip) ? ip.Substring(0, ip.Length > 50 ? 50 : ip.Length) : String.Empty;
            novaregion      = !String.IsNullOrEmpty(region) ? region.Substring(0, region.Length > 50 ? 50 : region.Length) : String.Empty;
            novomodeloCel   = !String.IsNullOrEmpty(modeloCel) ? modeloCel.Substring(0, modeloCel.Length > 50 ? 50 : modeloCel.Length) : String.Empty;
            novonumeroIMEI  = !String.IsNullOrEmpty(numeroIMEI) ? numeroIMEI.Substring(0, numeroIMEI.Length > 20 ? 20 : numeroIMEI.Length) : String.Empty;
            novaoperadora   = !String.IsNullOrEmpty(operadora) ? operadora.Substring(0, operadora.Length > 20 ? 20 : operadora.Length) : String.Empty;

            var resultado = ValidarLogon(email, senha);

            if (resultado != null)
            {
                return(resultado);
            }

            try
            {
                IErroLoginRepository repositoryErro = container.Resolve <IErroLoginRepository>();

                var bloqueado = repositoryErro.CometeuMuitosErrosLogin(email);

                if (bloqueado)
                {
                    return(NotFound());
                }

                IUsuarioRepository repository = container.Resolve <IUsuarioRepository>();

                var ultimaAssinatura = String.Empty;
                var ultimoLogon      = String.Empty;
                var usuarioExistente = repository.ObterPeloEmailESenha(email, senha);
                if (usuarioExistente != null)
                {
                    if (!String.IsNullOrEmpty(usuarioExistente.Ativo) && usuarioExistente.Ativo == "N")
                    {
                        return(Json(new { erro = "S", mensagem = String.Format("Seu cadastro está inativado pelo seguinte motivo: {0}", usuarioExistente.MotivoInativo) }));
                    }

                    IAssinaturaRepository assinaturaRepo = container.Resolve <IAssinaturaRepository>();

                    var dataFim = assinaturaRepo.ObterDataFimAssinaturaMaisRecentePeloEmailDoUsuario(email);

                    if (!String.IsNullOrEmpty(dataFim))
                    {
                        ultimaAssinatura = dataFim;
                    }

                    IAtividadeRepository atividadeRepo = container.Resolve <IAtividadeRepository>();

                    var ultimoLogonBD = atividadeRepo.ObterUltimoLogonPeloEmail(email);

                    if (!String.IsNullOrEmpty(ultimoLogonBD))
                    {
                        ultimoLogon = ultimoLogonBD;
                    }

                    var atividadeAtual = new Atividade()
                    {
                        Usuario       = usuarioExistente,
                        IP            = ip,
                        Data          = DateTime.Now,
                        TipoAtividade = Convert.ToInt32(TipoAtividade.LogonUsuario),
                        Origem        = Convert.ToInt32(OrigemAcesso.Android),
                        Descricao     = "O usuário com o e-mail " + email + " logou no sistema.",
                        IMEI          = novonumeroIMEI,
                        Cidade        = novacity,
                        ModeloCelular = novomodeloCel,
                        Operadora     = novaoperadora,
                        Pais          = novocountryCode,
                        Provedor      = ObterProvedor(org, isp)
                    };

                    Task.Run(() =>
                    {
                        //SalvarAtividadeHelper.SalvarAtividade(atividadeAtual);
                    });

                    return(Json(new { erro = "N", mensagem = "OK", nome = usuarioExistente.Nome, email = usuarioExistente.Email, cadastrado = String.Format("{0:dd/MM/yyyy}", usuarioExistente.DataCadastro), dataassinatura = ultimaAssinatura, logon = ultimoLogon, codigoIndicacao = usuarioExistente.Id + 1000 }));
                }
                else
                {
                    ErroLogin erro = new ErroLogin();
                    erro.Email     = email;
                    erro.IMEI      = numeroIMEI;
                    erro.Data      = DateTime.Now;
                    erro.Operadora = operadora;
                    erro.IP        = ip;
                    erro.Senha     = senha;

                    //SalvarErroLoginHelper.SalvarErro(erro);
                    return(Json(new { erro = "S", mensagem = "E-mail não cadastrado ou senha incorreta." }));
                }
            }
            catch (Exception ex)
            {
                //SalvarErroSistemaHelper.SalvarErro(ex);
                String mensagem        = !String.IsNullOrEmpty(ex.Message) ? ex.Message : String.Empty;
                String mensagemInterna = ex.InnerException != null && String.IsNullOrEmpty(ex.InnerException.Message) ? ex.InnerException.Message : String.Empty;
                String assunto         = "Erro na API de Login de usuário ";
                String mensagem2       = String.Format("Exceção: {0} \n Exceção interna: {1}, \n Data/Hora: {2} \n Email: {3}: ", mensagem, mensagemInterna, DateTime.Now, email);

                //EmailHelper.EnviarEmail(assunto, "*****@*****.**", mensagem2);

                return(Json(new { erro = "S", mensagem = "Ocorreu um erro inesperado ao tentar realizar o seu login, não se preocupe, o suporte já foi acionado e vai resolver o problema e te informar assim que for verificado." }));
            }
        }
예제 #2
0
        public IHttpActionResult Logar(String email, String senha, String ip)
        {
            var resultado = ValidarLogon(email, senha);

            if (resultado != null)
            {
                return(resultado);
            }

            try
            {
                IUsuarioRepository repository = container.Resolve <IUsuarioRepository>();

                var ultimaAssinatura = String.Empty;
                var ultimoLogon      = String.Empty;
                var usuarioExistente = repository.ObterPeloEmailESenha(email, senha);
                if (usuarioExistente != null)
                {
                    if (!String.IsNullOrEmpty(usuarioExistente.Ativo) && usuarioExistente.Ativo == "N")
                    {
                        return(Json(new { erro = "S", mensagem = String.Format("Seu cadastro está inativado pelo seguinte motivo: {0}", usuarioExistente.MotivoInativo) }));
                    }

                    IAssinaturaRepository assinaturaRepo = container.Resolve <IAssinaturaRepository>();

                    var dataFim = assinaturaRepo.ObterDataFimAssinaturaMaisRecentePeloEmailDoUsuario(email);

                    if (!String.IsNullOrEmpty(dataFim))
                    {
                        ultimaAssinatura = dataFim;
                    }

                    IAtividadeRepository atividadeRepo = container.Resolve <IAtividadeRepository>();

                    var ultimoLogonBD = atividadeRepo.ObterUltimoLogonPeloEmail(email);

                    if (!String.IsNullOrEmpty(ultimoLogonBD))
                    {
                        ultimoLogon = ultimoLogonBD;
                    }

                    var atividadeAtual = new Atividade()
                    {
                        Usuario = usuarioExistente, IP = ip, Data = DateTime.Now, TipoAtividade = Convert.ToInt32(TipoAtividade.LogonUsuario), Origem = Convert.ToInt32(OrigemAcesso.Web), Descricao = "O usuário com o e-mail " + email + " logou no sistema."
                    };

                    container.Resolve <AtividadeCRUDService>().Salvar(atividadeAtual);

                    return(Json(new { erro = "N", mensagem = "OK", nome = usuarioExistente.Nome, email = usuarioExistente.Email, cadastrado = String.Format("{0:dd/MM/yyyy}", usuarioExistente.DataCadastro), dataassinatura = ultimaAssinatura, logon = ultimoLogon, codigoIndicacao = usuarioExistente.Id + 1000 }));
                }
                else
                {
                    return(Json(new { erro = "S", mensagem = "E-mail não cadastrado ou senha incorreta." }));
                }
            }
            catch (Exception ex)
            {
                container.Resolve <ErroSistemaCRUDService>().Salvar(ex);
                String mensagem        = !String.IsNullOrEmpty(ex.Message) ? ex.Message : String.Empty;
                String mensagemInterna = ex.InnerException != null && String.IsNullOrEmpty(ex.InnerException.Message) ? ex.InnerException.Message : String.Empty;
                String assunto         = "Erro na API de Login de usuário ";
                String mensagem2       = String.Format("Exceção: {0} \n Exceção interna: {1}, \n Data/Hora: {2} \n Email: {3}: ", mensagem, mensagemInterna, DateTime.Now, email);

                container.Resolve <IEmailService>().EnviarEmail(Constantes.EMAIL_DESTINATARIO, Constantes.EMAIL_REMETENTE, "Suporte ", assunto, mensagem2, false);

                return(Json(new { erro = "S", mensagem = "Ocorreu um erro inesperado ao tentar realizar o seu login, não se preocupe, o suporte já foi acionado e vai resolver o problema e te informar assim que for verificado." }));
            }
        }