コード例 #1
0
        public IEnumerable GetChatUsers(string username)
        {
            using (var db = new SocialNetworkEntities())
            {
                var users = db.UserProfiles
                    .Where(u => u.ChatMessages.Select(m => m.Friednship).Select(f => f.FirstUser.Username).ToList().Contains(username)
                    || u.ChatMessages.Select(m => m.Friednship).Select(f => f.SecondUser.Username).ToList().Contains(username))
                    .Distinct()
                    .OrderBy(u => u.Username)
                    .Select(u => new { Username = u.Username })
                    .ToList();

                return users;
            }
        }
コード例 #2
0
        public IEnumerable GetPostsByUser(string username)
        {
            using (var db = new SocialNetworkEntities())
            {
                var posts = db.Posts
                    .Where(p => p.UserProfiles.Select(u => u.Username).ToList().Contains(username))
                    .Select(p => new
                    {
                        PostedOn = p.PostingDate,
                        Content = p.Content,
                        Usernames = p.UserProfiles.Select(u => u.Username).ToList()
                    })
                    .ToList();

                return posts;
            }
        }
コード例 #3
0
        public IEnumerable GetUsersAfterCertainDate(int year)
        {
            using (var db = new SocialNetworkEntities())
            {
                var users = db.UserProfiles
                    .Where(u => u.RegistrationDate.Year >= year)
                    .Select(u => new
                    {
                        u.Username,
                        u.FirstName,
                        u.LastName,
                        NumberOfImages = u.Images.Count
                    })
                    .ToList();

                return users;
            }
        }
コード例 #4
0
        public IEnumerable GetFriendships(int page = 1, int pageSize = 25)
        {
            using (var db = new SocialNetworkEntities())
            {
                var friendships = db.Friendships
                    .OrderBy(f => f.DateApproved)
                    .Skip(pageSize * page)
                    .Take(pageSize)
                    .Select(f => new
                    {
                        FirstUserUsername = f.FirstUser.Username,
                        FirstUserImage = f.FirstUser.Images.FirstOrDefault().URL,
                        SecondUserUsername = f.SecondUser.Username,
                        SecondUserImage = f.SecondUser.Images.FirstOrDefault().URL,
                    })
                    .ToList();

                return friendships;
            }
        }
コード例 #5
0
        public static void Import(SocialNetworkEntities db, IEnumerable<SocialNetworkXML.Models.Friendship> friendships)
        {
            var userNamesAdded = new HashSet<string>();
            var counter = 0;

            foreach (var friendship in friendships)
            {
                // FirstUser
                var firstUser = new UserProfile();

                if (userNamesAdded.Contains(friendship.FirstUser.Username))
                {
                    firstUser = db.UserProfiles.Where(u => u.Username == friendship.FirstUser.Username).First();
                }
                else
                {
                    firstUser = new UserProfile()
                    {
                        Username = friendship.FirstUser.Username,
                        FirstName = friendship.FirstUser.FirstName,
                        LastName = friendship.FirstUser.LastName,
                        RegistrationDate = friendship.FirstUser.RegisteredOn,
                    };

                    userNamesAdded.Add(firstUser.Username);

                    var images = new HashSet<Image>();

                    foreach (var image in friendship.FirstUser.Images)
                    {
                        images.Add(new Image()
                        {
                            URL = image.ImageUrl,
                            FileExtension = image.FileExtension,
                        });
                    }

                    firstUser.Images = images;
                }

                // Second user
                var secondUser = new UserProfile();

                if (userNamesAdded.Contains(friendship.SecondUser.Username))
                {
                    secondUser = db.UserProfiles.Where(u => u.Username == friendship.SecondUser.Username).First();
                }
                else
                {
                    secondUser = new UserProfile()
                    {
                        Username = friendship.SecondUser.Username,
                        FirstName = friendship.SecondUser.FirstName,
                        LastName = friendship.SecondUser.LastName,
                        RegistrationDate = friendship.SecondUser.RegisteredOn,
                    };

                    userNamesAdded.Add(secondUser.Username);

                    var imagesOfSecondUser = new HashSet<Image>();

                    foreach (var image in friendship.SecondUser.Images)
                    {
                        imagesOfSecondUser.Add(new Image()
                        {
                            URL = image.ImageUrl,
                            FileExtension = image.FileExtension,
                        });
                    }

                    secondUser.Images = imagesOfSecondUser;
                }

                // Friendship
                var friendshipToAdd = new Friendship()
                {
                    IsApproved = friendship.Approved,
                    DateApproved = friendship.FriendsSince,
                    FirstUser = firstUser,
                    SecondUser = secondUser,
                };

                db.Friendships.Add(friendshipToAdd);

                // Messages
                foreach (var message in friendship.Messages)
                {
                    var author = new UserProfile();

                    if (firstUser.Username == message.Author)
                    {
                        author = firstUser;
                    }
                    else
                    {
                        author = secondUser;
                    }

                    var messageToAdd = new ChatMessage()
                    {
                        Content = message.Content,
                        DateTimeOfSending = message.SentOn,
                        DateTimeOfSeeing = message.SeenOn,
                        Author = author,
                        Friednship = friendshipToAdd,
                    };

                    db.ChatMessages.Add(messageToAdd);

                    if (counter == 100)
                    {
                        db.SaveChanges();
                        db.Dispose();
                        db = new SocialNetworkEntities();
                        db.Configuration.AutoDetectChangesEnabled = false;
                        db.Configuration.ValidateOnSaveEnabled = false;
                        counter = 0;
                        Console.Write(".");
                    }

                    counter++;
                }

                db.SaveChanges();
            }
        }
コード例 #6
0
 public SocialNetworkService(SocialNetworkEntities db)
 {
     this.context = db;
 }