/// <summary> /// This method is used to create the list of recommended posts on the user timeline. /// </summary> /// <param name="currentuser">Logged in user details</param> /// <param name="usersPersonalDetails">Users personal details</param> /// <param name="usersTradingDetails">Users trading details</param> /// <returns>Creates and returns a recommended user list</returns> private static List <UsersTimeLinePost> GetUserTimelineRecommendedPosts(LetsTradingDetails currentuser, List <RegisterUserViewModel> usersPersonalDetails, List <LetsTradingDetails> usersTradingDetails) { var currentUser = currentuser; var userList = new List <LetsUser>(); var timelinePostsList = new List <UsersTimeLinePost>(); //Building a list that contains all the users personal details and trading details foreach (var userPersonalDetails in usersPersonalDetails) { var userTradingDetails = usersTradingDetails.Find(item => item.Id.Equals(userPersonalDetails.Id)); var letsUser = new LetsUser { UserPersonalDetails = userPersonalDetails, UserTradingDetails = userTradingDetails }; userList.Add(letsUser); } foreach (var user in userList) { if (user.UserTradingDetails.Requests != null) { foreach (var request in user.UserTradingDetails.Requests) { if (string.IsNullOrEmpty(request.IsAssignedTo) && !request.HasDeleted) { foreach (var tag in request.Tags) { if (currentUser.Skills.Contains(tag)) { var timelinePost = new UsersTimeLinePost { ImageId = user.UserPersonalDetails.Account.ImageId, UserName = user.UserPersonalDetails.Account.UserName, FirstName = user.UserPersonalDetails.About.FirstName, LastName = user.UserPersonalDetails.About.LastName, Request = request }; if (!timelinePostsList.Contains(timelinePost)) { timelinePostsList.Add(timelinePost); } } } } } } } timelinePostsList = timelinePostsList.OrderBy(post => post.Request.Date).ToList(); return(timelinePostsList); }
public async Task <ActionResult> PostRequest(string title, string description, int budget, string tags) { var username = User.Identity.Name; var userByUsername = await DatabaseContext.RegisteredUsers.Find(new BsonDocument { { "Account.UserName", username } }).ToListAsync(); var userTradingDetails = await DatabaseContext.LetsTradingDetails.Find(new BsonDocument { { "_id", userByUsername[0].Id } }).ToListAsync(); if (userTradingDetails[0].Credit > 0) { userTradingDetails[0].Request = new RequestPost(); if (userTradingDetails[0].Requests == null) { userTradingDetails[0].Requests = new List <RequestPost>(); } userTradingDetails[0].Request.Id = userTradingDetails[0].Requests.Count(); userTradingDetails[0].Request.HasDeleted = false; userTradingDetails[0].Request.HasCompleted = false; userTradingDetails[0].Request.JobCompleted = false; userTradingDetails[0].Request.Date = DateTime.Now; userTradingDetails[0].Request.Description = description; userTradingDetails[0].Request.Title = title; userTradingDetails[0].Request.Budget = budget; var tagArray = tags.Split(','); var tagList = new List <string>(tagArray.Length); tagList.AddRange(tagArray); tagList.Reverse(); userTradingDetails[0].Request.Tags = tagList; userTradingDetails[0].Requests.Add(userTradingDetails[0].Request); await DatabaseContext.LetsTradingDetails.ReplaceOneAsync(r => r.Id == userTradingDetails[0].Id, userTradingDetails[0]); var letsUser = new LetsUser { UserPersonalDetails = userByUsername[0], UserTradingDetails = userTradingDetails[0] }; return(View("NewPostedRequest", letsUser)); } else { return(null); } }
public async Task <ActionResult> UserProfile() { var username = User.Identity.Name; var userByUsername = await DatabaseContext.RegisteredUsers.Find(new BsonDocument { { "Account.UserName", username } }).ToListAsync(); var userTradingDetails = await DatabaseContext.LetsTradingDetails.Find(new BsonDocument { { "_id", userByUsername[0].Id } }).ToListAsync(); var letsUser = new LetsUser { UserPersonalDetails = userByUsername[0], UserTradingDetails = userTradingDetails[0] }; return(View(letsUser)); }