public ActionResult DeleteConfirmed(int id)
        {
            LinkDb linkDb = db.LinkDb.Find(id);

            db.LinkDb.Remove(linkDb);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "id,network_id,source_id,target_id,date_modified")] LinkDb linkDb)
 {
     if (ModelState.IsValid)
     {
         db.Entry(linkDb).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.network_id = new SelectList(db.NetworkDb, "id", "name", linkDb.network_id);
     ViewBag.source_id  = new SelectList(db.VertexDb, "id", "identifier", linkDb.source_id);
     ViewBag.target_id  = new SelectList(db.VertexDb, "id", "identifier", linkDb.target_id);
     return(View(linkDb));
 }
        // GET: LinkDbs/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LinkDb linkDb = db.LinkDb.Find(id);

            if (linkDb == null)
            {
                return(HttpNotFound());
            }
            return(View(linkDb));
        }
        // GET: LinkDbs/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LinkDb linkDb = db.LinkDb.Find(id);

            if (linkDb == null)
            {
                return(HttpNotFound());
            }
            ViewBag.network_id = new SelectList(db.NetworkDb, "id", "name", linkDb.network_id);
            ViewBag.source_id  = new SelectList(db.VertexDb, "id", "identifier", linkDb.source_id);
            ViewBag.target_id  = new SelectList(db.VertexDb, "id", "identifier", linkDb.target_id);
            return(View(linkDb));
        }
        public IHttpActionResult FlickrNetwork([FromBody] FormFlickrFollowers form)
        {
            //data rozpoczęcia pobierania
            var data = DateTime.Now;
            //liczba wykonanych zapytan
            int queries = 0;
            //dodac pobieranie id serwisu z bazy danych
            var serviceObj = network.ServiceDb.Where <ServiceDb>(x => x.name == "Flickr").ToList();
            var serviceId  = serviceObj[0].id;
            //utworzenie uzytkownika Flickr
            Flickr user = new Flickr();
            //podmienic pozniej na credentials z bazy danych
            var credentials = network.Credentials.Where <Credentials>(x => x.service_id == serviceId).ToList();

            user.ApiKey    = credentials[0].key;
            user.ApiSecret = credentials[0].secret;
            //pobieranie followersow uzytkownika z formularza
            var flickrFollowers = user.ContactsGetPublicList(form.InitialVertex);
            int numberOfPages   = flickrFollowers.Pages;

            queries++;
            //dodanie uzytkownika poczatkowego do tabeli vertex
            IsUserIdInVertex(form.InitialVertex, serviceObj[0].id);
            //pobranie id uzytkonika poczatkowego w tabeli vertex
            var userId = network.VertexDb.Where <VertexDb>(x => x.identifier == form.InitialVertex && x.service_id == serviceId).ToList();

            //zapis pierwszej partii do bazy danych
            foreach (var follower in flickrFollowers)
            {
                IsUserIdInVertex(follower.UserId, serviceObj[0].id, follower.UserName);
                var followerId = network.VertexDb.Where <VertexDb>(x => x.identifier == follower.UserId && x.service_id == serviceId).ToList();
                var link       = new LinkDb();
                link.date_modified = data;
                link.network_id    = form.NetworkID;
                link.source_id     = followerId[0].id;
                link.target_id     = userId[0].id;
                network.LinkDb.Add(link);
            }
            network.SaveChanges();
            //zapis reszty danych
            for (int i = 2; i <= numberOfPages; i++)
            {
                flickrFollowers = user.ContactsGetPublicList(form.InitialVertex, i, 1000);
                foreach (var follower in flickrFollowers)
                {
                    IsUserIdInVertex(follower.UserId, serviceObj[0].id, follower.UserName);
                    var followerId = network.VertexDb.Where <VertexDb>(x => x.identifier == follower.UserId && x.service_id == serviceId).ToList();
                    var link       = new LinkDb();
                    link.date_modified = data;
                    link.network_id    = form.NetworkID;
                    link.source_id     = followerId[0].id;
                    link.target_id     = userId[0].id;
                    network.LinkDb.Add(link);
                }
                network.SaveChanges();
            }
            //utworzenie listy followersow
            var followersList = flickrFollowers.ToList();
            //lista uzytych followersow
            List <Contact> usedFollowers = new List <Contact>();
            Contact        initialUser   = new Contact();

            initialUser.UserId = form.InitialVertex;
            usedFollowers.Add(initialUser);
            //usedFollowers.Add(form.initialVertex);
            while (queries < form.NumberQueries && followersList.Any())
            {
                queries++;
                var newInitialVertex = followersList[0];
                userId          = network.VertexDb.Where <VertexDb>(x => x.identifier == newInitialVertex.UserId && x.service_id == serviceId).ToList();
                flickrFollowers = user.ContactsGetPublicList(newInitialVertex.UserId);
                usedFollowers.Add(newInitialVertex);
                followersList = followersList.Union(flickrFollowers).Except(usedFollowers).ToList();
                foreach (var follower in flickrFollowers)
                {
                    IsUserIdInVertex(follower.UserId, serviceObj[0].id, follower.UserName);
                    var followerId = network.VertexDb.Where <VertexDb>(x => x.identifier == follower.UserId && x.service_id == serviceId).ToList();
                    var link       = new LinkDb();
                    link.date_modified = data;
                    link.network_id    = form.NetworkID;
                    link.source_id     = followerId[0].id;
                    link.target_id     = userId[0].id;
                    network.LinkDb.Add(link);
                }
                network.SaveChanges();

                //zapis kolejnych partii danych
                numberOfPages = flickrFollowers.Pages;
                for (int i = 2; i <= numberOfPages; i++)
                {
                    flickrFollowers = user.ContactsGetPublicList(newInitialVertex.UserId, i, 1000);
                    followersList   = followersList.Union(flickrFollowers).Except(usedFollowers).ToList();
                    foreach (var follower in flickrFollowers)
                    {
                        IsUserIdInVertex(follower.UserId, serviceObj[0].id, follower.UserName);
                        var followerId = network.VertexDb.Where <VertexDb>(x => x.identifier == follower.UserId && x.service_id == serviceId).ToList();
                        var link       = new LinkDb();
                        link.date_modified = data;
                        link.network_id    = form.NetworkID;
                        link.source_id     = followerId[0].id;
                        link.target_id     = userId[0].id;
                        network.LinkDb.Add(link);
                    }
                    network.SaveChanges();
                }
            }
            return(Ok());
        }
Example #6
0
        public IHttpActionResult TwitterNetwork([FromBody] FormTwitterNetwork form)
        {
            //data utworzenia krawedzi
            var data = DateTime.Now;
            //ilosc zapytań
            int queries = 0;
            //akredytacja
            var credentials = network.Credentials.Where <Credentials>(x => x.ServiceDb.name == "Twitter").ToList();

            Auth.SetApplicationOnlyCredentials(credentials[0].key, credentials[0].secret, true);
            //okiełznanie limitów twitter
            RateLimit.RateLimitTrackerMode      = RateLimitTrackerMode.TrackOnly;
            TweetinviEvents.QueryBeforeExecute += (sender, args2) =>
            {
                var queryRateLimits = RateLimit.GetQueryRateLimit(args2.QueryURL);

                // Some methods are not RateLimited. Invoking such a method will result in the queryRateLimits to be null
                if (queryRateLimits != null)
                {
                    if (queryRateLimits.Remaining > 0)
                    {
                        // We have enough resource to execute the query
                        return;
                    }
                    else
                    {
                        while (queryRateLimits.Remaining < 1)
                        {
                            foreach (var cred in network.Credentials.Where <Credentials>(x => x.ServiceDb.name == "Twitter").ToList())
                            {
                                var credential = Auth.SetApplicationOnlyCredentials(cred.key, cred.secret, true);
                                queryRateLimits = RateLimit.GetQueryRateLimit(args2.QueryURL, credential);
                                if (queryRateLimits.Remaining > 0)
                                {
                                    args2.TwitterQuery.TwitterCredentials = Auth.SetApplicationOnlyCredentials(cred.key, cred.secret, true);
                                    break;
                                }
                            }
                        }
                    }
                }
            };
            //wybor id serwisu
            var serviceObj = network.ServiceDb.Where <ServiceDb>(x => x.name == "Twitter").ToList();
            var serviceId  = serviceObj[0].id;
            //utworzenie uzytkownika poczatkowego twittera
            var userName = Tweetinvi.User.GetUserFromId(form.InitialVertex);

            if (userName != null)
            {
                IsUserIdInVertex(form.InitialVertex, serviceObj[0].id, userName.ScreenName);
            }
            else
            {
                IsUserIdInVertex(form.InitialVertex, serviceObj[0].id);
            }
            var userId = network.VertexDb.Where <VertexDb>(x => x.identifier == form.InitialVertex.ToString() && x.service_id == serviceId).ToList();
            //tworzenie listy followersow i friendsow wierzcholka poczatkowego
            var twitterFollowers = Tweetinvi.User.GetFollowerIds(form.InitialVertex, form.QueryLimit);
            var twitterFriends   = Tweetinvi.User.GetFriendIds(form.InitialVertex, form.QueryLimit);

            queries = queries + 2;
            //zapis followersow dobazy danych
            foreach (var follower in twitterFollowers)
            {
                //dodawnie nowego uzytkownika do wierzcholkow
                var followerName = Tweetinvi.User.GetUserFromId(follower);
                if (followerName != null)
                {
                    IsUserIdInVertex(follower, serviceObj[0].id, followerName.ScreenName);
                }
                else
                {
                    IsUserIdInVertex(follower, serviceObj[0].id);
                }
                //pobranie id wiersza bazy z wierzcholkami
                var followerId = network.VertexDb.Where <VertexDb>(x => x.identifier == follower.ToString() && x.service_id == serviceId).ToList();
                var link       = new LinkDb();
                link.date_modified = data;
                link.network_id    = form.NetworkID;
                link.source_id     = followerId[0].id;
                link.target_id     = userId[0].id;
                network.LinkDb.Add(link);
            }
            network.SaveChanges();
            //zapis friendsow do bazy danych
            foreach (var friend in twitterFriends)
            {
                //dodawnie nowego uzytkownika do wierzcholkow
                var followerName = Tweetinvi.User.GetUserFromId(friend);
                if (followerName != null)
                {
                    IsUserIdInVertex(friend, serviceObj[0].id, followerName.ScreenName);
                }
                else
                {
                    IsUserIdInVertex(friend, serviceObj[0].id);
                }
                //pobranie id wiersza b azy z wierzcholkami
                var friendId = network.VertexDb.Where <VertexDb>(x => x.identifier == friend.ToString() && x.service_id == serviceId).ToList();
                var link     = new LinkDb();
                link.date_modified = data;
                link.network_id    = form.NetworkID;
                link.source_id     = userId[0].id;
                link.target_id     = friendId[0].id;
                network.LinkDb.Add(link);
            }
            network.SaveChanges();
            //utworzenie list uzytkownikow
            //List<long> usersTwitter = twitterFollowers.Union(twitterFriends).ToList();
            List <long> twitterFollowersList = twitterFollowers.ToList();
            List <long> twitterFriendsList   = twitterFriends.ToList();
            List <long> usedUsers            = new List <long>();

            usedUsers.Add(form.InitialVertex);
            //rozpoczynamy pobieranie dla kolejnych wierzcholkow
            while (queries < form.NumberQueries && (twitterFriendsList.Any() || twitterFollowersList.Any()))
            {
                var  rand  = new Random();
                bool bool1 = (twitterFriendsList.Any()) ? true : false;
                bool bool2 = (twitterFollowersList.Any()) ? true : false;
                if (rand.Next(100) % 2 == 1 && bool1 == true)
                {
                    queries = queries + 2;
                    var newInitialVertexId = twitterFriendsList[0];
                    userId = network.VertexDb.Where <VertexDb>(x => x.identifier == newInitialVertexId.ToString() && x.service_id == serviceId).ToList();
                    usedUsers.Add(newInitialVertexId);
                    var newUsersFriends   = Tweetinvi.User.GetFriendIds(newInitialVertexId, form.QueryLimit);
                    var newUsersFollowers = Tweetinvi.User.GetFollowerIds(newInitialVertexId, form.QueryLimit);
                    twitterFriendsList   = twitterFriendsList.Union(newUsersFriends).Except(usedUsers).ToList();
                    twitterFollowersList = twitterFollowersList.Union(newUsersFollowers).Except(usedUsers).ToList();
                    //zapis followersow dobazy danych
                    foreach (var follower in newUsersFollowers)
                    {
                        //dodawnie nowego uzytkownika do wierzcholkow
                        var followerName = Tweetinvi.User.GetUserFromId(follower);
                        if (followerName != null)
                        {
                            IsUserIdInVertex(follower, serviceObj[0].id, followerName.ScreenName);
                        }
                        else
                        {
                            IsUserIdInVertex(follower, serviceObj[0].id);
                        }
                        //pobranie id wiersza b azy z wierzcholkami
                        var followerId = network.VertexDb.Where <VertexDb>(x => x.identifier == follower.ToString() && x.service_id == serviceId).ToList();
                        var link       = new LinkDb();
                        link.date_modified = data;
                        link.network_id    = form.NetworkID;
                        link.source_id     = followerId[0].id;
                        link.target_id     = userId[0].id;
                        network.LinkDb.Add(link);
                    }
                    network.SaveChanges();
                    //zapis friendsow do bazy danych
                    foreach (var friend in newUsersFriends)
                    {
                        //dodawnie nowego uzytkownika do wierzcholkow
                        var followerName = Tweetinvi.User.GetUserFromId(friend);
                        if (followerName != null)
                        {
                            IsUserIdInVertex(friend, serviceObj[0].id, followerName.ScreenName);
                        }
                        else
                        {
                            IsUserIdInVertex(friend, serviceObj[0].id);
                        }
                        //pobranie id wiersza b azy z wierzcholkami
                        var friendId = network.VertexDb.Where <VertexDb>(x => x.identifier == friend.ToString() && x.service_id == serviceId).ToList();
                        var link     = new LinkDb();
                        link.date_modified = data;
                        link.network_id    = form.NetworkID;
                        link.source_id     = userId[0].id;
                        link.target_id     = friendId[0].id;
                        network.LinkDb.Add(link);
                    }
                    network.SaveChanges();
                }
                else if (rand.Next(100) % 2 == 0 && bool2 == true)
                {
                    queries = queries + 2;;
                    var newInitialVertexId = twitterFollowersList[0];
                    userId = network.VertexDb.Where <VertexDb>(x => x.identifier == newInitialVertexId.ToString() && x.service_id == serviceId).ToList();
                    usedUsers.Add(newInitialVertexId);
                    var newUsersFriends   = Tweetinvi.User.GetFriendIds(newInitialVertexId, form.QueryLimit);
                    var newUsersFollowers = Tweetinvi.User.GetFollowerIds(newInitialVertexId, form.QueryLimit);
                    twitterFriendsList   = twitterFriendsList.Union(newUsersFriends).Except(usedUsers).ToList();
                    twitterFollowersList = twitterFollowersList.Union(newUsersFollowers).Except(usedUsers).ToList();
                    //zapis followersow dobazy danych
                    foreach (var follower in newUsersFollowers)
                    {
                        //dodawnie nowego uzytkownika do wierzcholkow
                        var followerName = Tweetinvi.User.GetUserFromId(follower);
                        if (followerName != null)
                        {
                            IsUserIdInVertex(follower, serviceObj[0].id, followerName.ScreenName);
                        }
                        else
                        {
                            IsUserIdInVertex(follower, serviceObj[0].id);
                        }
                        //pobranie id wiersza b azy z wierzcholkami
                        var followerId = network.VertexDb.Where <VertexDb>(x => x.identifier == follower.ToString() && x.service_id == serviceId).ToList();
                        var link       = new LinkDb();
                        link.date_modified = data;
                        link.network_id    = form.NetworkID;
                        link.source_id     = followerId[0].id;
                        link.target_id     = userId[0].id;
                        network.LinkDb.Add(link);
                    }
                    network.SaveChanges();
                    //zapis friendsow do bazy danych
                    foreach (var friend in newUsersFriends)
                    {
                        //dodawnie nowego uzytkownika do wierzcholkow
                        var followerName = Tweetinvi.User.GetUserFromId(friend);
                        if (followerName != null)
                        {
                            IsUserIdInVertex(friend, serviceObj[0].id, followerName.ScreenName);
                        }
                        else
                        {
                            IsUserIdInVertex(friend, serviceObj[0].id);
                        }
                        //pobranie id wiersza b azy z wierzcholkami
                        var friendId = network.VertexDb.Where <VertexDb>(x => x.identifier == friend.ToString() && x.service_id == serviceId).ToList();
                        var link     = new LinkDb();
                        link.date_modified = data;
                        link.network_id    = form.NetworkID;
                        link.source_id     = userId[0].id;
                        link.target_id     = friendId[0].id;
                        network.LinkDb.Add(link);
                    }
                    network.SaveChanges();
                }
            }
            return(Ok());
        }