Exemplo n.º 1
0
        public LoginResponse Authenticate(LoginRequest login)
        {
            if (login == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            var             response = new LoginResponse();
            DBLeadsEntities _db      = new DBLeadsEntities();
            //valido los datos suministrados
            clientes cliente = _db.clientes.Where(c => c.cli_usuario.Equals(login.usuario) && c.cli_password.Equals(login.password) && c.cli_id.Equals(login.id_cliente)).FirstOrDefault();

            if (cliente == null)
            {
                response.message = "Datos inválidos";
                response.token   = "";
                response.status  = "FAIL";
                return(response);
            }
            else
            {
                //si los datos son correctos se genera un token y se almacena en la BD
                DateTime fecha = DateTime.Now;
                string   token = TokenGenerator.GenerateToken(fecha.ToString("ddMMyyyy hhmmss") + "-" + login.id_cliente);
                cliente.cli_token = token;
                _db.SaveChanges();
                response.message = "Token generado con éxito";
                response.token   = token;
                response.status  = "OK";
                return(response);
            }
        }
Exemplo n.º 2
0
        public SaveResponse SaveLead(SaveRequest request)
        {
            if (request == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            var             response = new SaveResponse();
            DBLeadsEntities _db      = new DBLeadsEntities();

            //valido el token y el id de cliente suministrado
            clientes cliente = _db.clientes.Where(c => c.cli_id.Equals(request.id_cliente) && c.cli_token.Equals(request.token) && c.cli_token != "" && c.cli_token != null).FirstOrDefault();

            if (cliente == null)
            {
                response.message = "No autorizado";
                response.status  = "FAIL";
                return(response);
            }
            else
            {
                //validacion de telefono
                if (String.IsNullOrEmpty(request.telefono))
                {
                    response.message = "El valor de telefono es obligatorio";
                    response.status  = "FAIL";
                    return(response);
                }

                if (request.telefono.Length != 10)
                {
                    response.message = "La longitud de telefono debe ser de 10";
                    response.status  = "FAIL";
                    return(response);
                }

                //validacion de intervalo entre registros
                DateTime fecha           = DateTime.Now;
                var      ultimo_registro = _db.leads.Where(m => m.cli_id == request.id_cliente && m.lea_telefono.Equals(request.telefono)).OrderByDescending(m => m.lea_fecha).FirstOrDefault();

                if (ultimo_registro != null)
                {
                    DateTime fecha_ultimo_registro = ultimo_registro.lea_fecha;
                    TimeSpan span = fecha.Subtract(fecha_ultimo_registro);
                    double   minutos_transcurridos = span.TotalMinutes;

                    if (minutos_transcurridos < cliente.cli_tiempo)
                    {
                        response.message = "El telefono " + request.telefono + " fue registrado hace menos de " + cliente.cli_tiempo.ToString() + " minutos.";
                        response.status  = "FAIL";
                        return(response);
                    }
                }


                //validacion de dominio
                if (!request.correo.EndsWith(cliente.cli_dominio, StringComparison.InvariantCultureIgnoreCase))
                {
                    response.message = "Se esperaba un correo con dominio " + cliente.cli_dominio;
                    response.status  = "FAIL";
                    return(response);
                }

                //almaceno el lead
                var lead = new leads.Models.leads();
                lead.lea_nombre   = request.nombre;
                lead.lea_correo   = request.correo;
                lead.lea_telefono = request.telefono;
                lead.cli_id       = request.id_cliente;
                lead.lea_fecha    = fecha;

                _db.leads.Add(lead);
                _db.SaveChanges();
                response.message = "Registro almacenado con éxito";
                response.status  = "OK";
                return(response);
            }
        }