public void AddUserActionsToLikes(string userAction) { List <UserAction> listUserActions = Ratings.Where(s => s.Action.Equals(userAction)).ToList(); this.Likes.AddRange(listUserActions); foreach (UserAction uA in listUserActions) { RaterBase rater = Raters.FirstOrDefault(s => s.Id == uA.Rater.Id); if (rater != null) { rater.Likes.Add(uA.Ratee); } } }
public void RemoveUserActionsFromLikes(string userAction) { List <UserAction> listUserActions = Ratings.Where(s => s.Action.Equals(userAction)).ToList(); for (int index = listUserActions.Count() - 1, count = 0; count < listUserActions.Count() - 1; index--, count++) { this.Likes.RemoveAt(index); } for (int index = listUserActions.Count() - 1; index >= 0; index--) { UserAction uA = listUserActions[index]; RaterBase rater = Raters.FirstOrDefault(s => s.Id == uA.Rater.Id); if (rater != null) { rater.Likes.RemoveAt(rater.Likes.Count() - 1); } } }
public override void LoadData(string fileName, string actionLike, string actionDislike) { DateTime now = DateTime.Now; System.Console.WriteLine("LoadData() start time: " + now); string[] contents = System.IO.File.ReadAllLines(fileName); bool tags = false, article = false, user = false, ratings = false; foreach (string content in contents) { if (content.StartsWith("# Tags")) { tags = true; continue; } if (content.StartsWith("# Articles")) { article = true; continue; } if (content.StartsWith("# Users")) { user = true; article = false; tags = false; continue; } if (content.StartsWith("# User actions")) { ratings = true; user = false; article = false; tags = false; continue; } if (string.IsNullOrEmpty(content) == true || content.StartsWith("#")) { continue; } string[] splits = content.Split(","); if (tags == true) { int number = 1; foreach (string split in splits) { Tags.Add(new Tag() { Id = number++, Name = split.Trim() }); } tags = false; } if (article == true) { Article ratee = new Article() { Tags = new List <Tag>(), Name = splits[1].Trim(), Id = int.Parse(splits[0]), Likes = new List <RaterBase>(), Dislikes = new List <RaterBase>(), Views = new List <RaterBase>(), Downloads = new List <RaterBase>() }; Ratees.Add(ratee); for (int index = 2; index < splits.Count(); index++) { ratee.Tags.Add(this.Tags.FirstOrDefault(s => s.Name == splits[index].Trim())); } } if (user == true) { Raters.Add(new User { Id = int.Parse(splits[0]), Name = splits[1].Trim(), Likes = new List <RateeBase>(), Dislikes = new List <RateeBase>(), Views = new List <RateeBase>(), Downloads = new List <RateeBase>() }); } if (ratings == true) { UserAction rating = new UserAction { Action = splits[1], Ratee = this.Ratees.FirstOrDefault(s => s.Name == splits[5].Trim()), Rater = this.Raters.FirstOrDefault(s => s.Name == splits[3].Trim()), }; Ratings.Add(rating); if (rating.Action.Equals(actionLike)) { rating.Ratee.Likes.Add(rating.Rater); rating.Rater.Likes.Add(rating.Ratee); } else if (rating.Action.Equals(actionDislike)) { rating.Ratee.Dislikes.Add(rating.Rater); rating.Rater.Dislikes.Add(rating.Ratee); } else if (rating.Action.Equals("Download")) { Downloads.Add(rating); ((Article)rating.Ratee).Downloads.Add(rating.Rater); ((User)rating.Rater).Downloads.Add(rating.Ratee); ((Article)rating.Ratee).Likes.Add(rating.Rater); ((User)rating.Rater).Likes.Add(rating.Ratee); } else if (rating.Action.Equals("View")) { Views.Add(rating); ((Article)rating.Ratee).Views.Add(rating.Rater); ((User)rating.Rater).Views.Add(rating.Ratee); } } } System.Console.WriteLine("LoadData() time to process: " + DateTime.Now.Subtract(now)); InitializeStatistics("UpVote", "DownVote"); }