//Adds new Report to Reports Table public Task <Reports> AddReportPost(int postId, int userId, string comment) { FilterDefinition <Reports> filter = GetPostIdFilter(postId); Report[] reportArray = new Report[] { new Report() { UserId = userId, Comment = comment } }; Reports reports = new Reports() { PostId = postId, ReportsArray = reportArray, IsResolved = false }; bool isEntityPresent = db.Reports.CheckAndCreateEntityBool(reports, filter); if (isEntityPresent) { Report[] initialReports = db.Reports.Find(filter).FirstOrDefault().ReportsArray; Task <Reports> updateTask = MongoArrayUtils <Reports> .AddToArrayWithCount <Report>(db.Reports, filter, REPORTS_ARRAY, reportArray, initialReports, COUNT); return(updateTask); } return(null); }
//Remove Bookmarks from Bookmarks Table public Task <Bookmarks> RemoveBookmarks(int userId, params int[] postIds) { FilterDefinition <Bookmarks> filter = GetUserIdFilter(userId); Task <Bookmarks> removeTask = MongoArrayUtils <Bookmarks> .RemoveFromArray <int>(db.Bookmarks, filter, POST_IDS, postIds); return(removeTask); }
//Returns array public IEnumerable <int> GetLikesInRange(int postId, int count, int skip = 0) { FilterDefinition <Likes> filter = GetPostIdFilter(postId); IEnumerable <int> array = MongoArrayUtils <Likes> .ArrayIntSplice(db.Likes, USER_IDS, filter, count, skip); return(array); }
//Remove a user's like from a post public Task <Likes> RemoveLike(int postId, params int[] userIds) { FilterDefinition <Likes> filter = GetPostIdFilter(postId); Task <Likes> task = MongoArrayUtils <Likes> .RemoveFromArray(db.Likes, filter, USER_IDS, userIds); return(task); }
public IEnumerable <int> GetBookmarksInRange(int userId, int count = 10, int skip = 0) { FilterDefinition <Bookmarks> filter = GetUserIdFilter(userId); IEnumerable <int> array = MongoArrayUtils <Bookmarks> .ArrayIntSplice(db.Bookmarks, POST_IDS, filter, count, skip); return(array); }
//returns a collection of bookmarks for a user public Task <Bookmarks> UpdateBookmark(int userId, int oldPostId, int newPostId) { FilterDefinition <Bookmarks> filter = GetUserIdFilter(userId); Task <Bookmarks> task = MongoArrayUtils <Bookmarks> .UpdateInArray <int>(db.Bookmarks, filter, POST_IDS, oldPostId, newPostId); return(task); }
//returns a collection of PostID's that contain tag public IEnumerable <int> GetPostsByTag(string tagText, int count = 10, int skip = 0) { FilterDefinition <Tags> filter = GetTagTextFilter(tagText); IEnumerable <int> array = MongoArrayUtils <Tags> .ArrayIntSplice(db.Tags, POST_IDS, filter, count, skip); return(array); }
//Removes tag from Tags table public Task <Tags> RemoveTag(string tagText, int postId) { FilterDefinition <Tags> filter = GetTagTextFilter(tagText); Task <Tags> task = MongoArrayUtils <Tags> .RemoveFromArray <int>(db.Tags, filter, POST_IDS, new int[] { postId }); return(task); }
//Retrieves a collection of Reported Posts public IEnumerable <int> GetReportedPosts(int skip = 0, int count = 10) { FilterDefinition <Reports> filter = Builders <Reports> .Filter.Eq(IS_RESOLVED, false); IEnumerable <int> array = MongoArrayUtils <Reports> .ArrayIntSplice(db.Reports, REPORTS_ARRAY, filter, count, skip); return(array); }
//Add bookmarks to Bookmarks Table public Task <Bookmarks> AddBookmarks(int userId, params int[] postIds) { Bookmarks bookmark = new Bookmarks() { UserId = userId, PostIds = postIds }; FilterDefinition <Bookmarks> filter = GetUserIdFilter(userId); bool isEntityPresent = db.Bookmarks.CheckAndCreateEntityBool(bookmark, filter); if (isEntityPresent) { int[] initialValues = db.Bookmarks.Find(filter).FirstOrDefault().PostIds; Task <Bookmarks> updateTask = MongoArrayUtils <Bookmarks> .AddToArrayWithCount(db.Bookmarks, filter, POST_IDS, postIds, initialValues, COUNT); } return(null); }
//Adds a new tag to Tags Table private Task <Tags> AddTag(string tagText, params int[] postIds) { Tags tag = new Tags() { Tag = tagText, PostIds = postIds }; FilterDefinition <Tags> filter = GetTagTextFilter(tagText); bool isEntityPresent = db.Tags.CheckAndCreateEntityBool(tag, filter); if (isEntityPresent) { Task <Tags> task = MongoArrayUtils <Tags> .AddToArray <int>(db.Tags, filter, POST_IDS, postIds); return(task); } return(null); }
//Add a user's like to a Post public Task <Likes> AddLike(int postId, params int[] userIds) { Likes like = new Likes() { PostId = postId, UserIds = userIds }; FilterDefinition <Likes> filter = GetPostIdFilter(postId); //Checks to see if an instance of Like is available bool isEntityPresent = db.Likes.CheckAndCreateEntityBool(like, filter); if (isEntityPresent) { Task <Likes> task = MongoArrayUtils <Likes> .AddToArray <int>(db.Likes, filter, USER_IDS, userIds); int likesCount = db.Posts.FirstOrDefault(e => e.PostId == postId).LikesCount; postRepo.UpdatePostLikesCount(postId); return(task); } return(null); }