/// <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);
        }
Пример #2
0
        public async Task TestSkillsSettingsEdit()
        {
            var letsTradingDetails = new LetsTradingDetails {
                Skill = "Test"
            };
            var controller = new AccountController {
                ControllerContext = MockControllerContext()
            };
            var result = await controller.SkillsSettingsEdit(letsTradingDetails);

            var dump = await controller.RemoveSkill("Test");

            Assert.IsInstanceOf(typeof(RedirectToRouteResult), result);
        }
        public async Task <ActionResult> SkillsSettingsEdit(LetsTradingDetails letsTradingDetails)
        {
            await AddSkill(letsTradingDetails.Skill);

            return(RedirectToAction("UserProfile", "Account"));
        }
        public ActionResult Register(RegisterUserViewModel registerUser)
        {
            var recaptcha          = new ReCaptcha();
            var responseFromServer = recaptcha.OnActionExecuting();

            if (responseFromServer.StartsWith("true", StringComparison.Ordinal))
            {
                if (registerUser != null && ModelState.IsValid)
                {
                    var userByUsername = DatabaseContext.RegisteredUsers.Find(new BsonDocument {
                        { "Account.UserName", registerUser.Account.UserName }
                    }).ToList();

                    var userByEmail = DatabaseContext.RegisteredUsers.Find(new BsonDocument {
                        { "Account.Email", registerUser.Account.Email }
                    }).ToList();

                    if (userByUsername.Count == 0)
                    {
                        if (userByEmail.Count == 0)
                        {
                            var passwordEncryption = new PasswordHashAndSalt();
                            registerUser.Id = Guid.NewGuid().ToString();
                            registerUser.Account.Password        = passwordEncryption.getHashedPassword(registerUser.Account.Password);
                            registerUser.Account.ConfirmPassword = passwordEncryption.getHashedPassword(registerUser.Account.ConfirmPassword);
                            registerUser.Account.ImageId         = "586a7d67cf43d7340cb54670";
                            var tradingDetails = new LetsTradingDetails {
                                Id = registerUser.Id, Credit = 100
                            };
                            DatabaseContext.RegisteredUsers.InsertOne(registerUser);
                            DatabaseContext.LetsTradingDetails.InsertOne(tradingDetails);

                            using (var mail = new MailMessage())
                            {
                                mail.To.Add(registerUser.Account.Email);
                                mail.Subject = "Welcome to Royal Holloway LETS";
                                mail.Body    = "<p>Hello " + registerUser.About.FirstName + ",</p><h3>Thanks for joining Royal Holloway LETS</h3><p>Please find your account details below</p><p>Title : <b>" + registerUser.About.Title + "</b></p><p>First Name : <b>" + registerUser.About.FirstName + "</b></p><p>Last Name : <b>" + registerUser.About.LastName + "</b></p><p>Gender : <b>" + registerUser.About.Gender + "</b></p><p>User Name : <b>" + registerUser.Account.UserName + "</b></p><p>Kind Regards,<br/>Royal Holloway LETS</p>";
                                SendEmail(mail);
                                TempData.Add("Registered", "You have successfully signed up for Royal Holloway LETS, We have also sent you can email with your account details for your future reference.");
                            }

                            return(RedirectToAction("Login"));
                        }
                        else
                        {
                            registerUser.Account.Password        = null;
                            registerUser.Account.ConfirmPassword = null;
                            ModelState.AddModelError("Account.Email", "Sorry, The following email already exists in our system.");
                            return(View(registerUser));
                        }
                    }
                    else
                    {
                        registerUser.Account.Password        = null;
                        registerUser.Account.ConfirmPassword = null;
                        ModelState.AddModelError("Account.UserName", "Sorry, This username is not available.");

                        if (userByEmail.Count > 0)
                        {
                            ModelState.AddModelError("Account.Email", "Sorry, The following email already exists in our system.");
                        }

                        return(View(registerUser));
                    }
                }
            }
            else
            {
                registerUser.Account.Password        = null;
                registerUser.Account.ConfirmPassword = null;
                ModelState.AddModelError("ReCaptcha", "Incorrect CAPTCHA entered.");
                return(View(registerUser));
            }
            return(View());
        }