public ActionResult RegisterHouseholdMembers(string emailaddress, string inviter, string addressid, string firstname, string lastname) { var addressIdInt = Int32.Parse(addressid); bool inviterUserFound = new UserService().FoundOriginalUserForAddressById(addressIdInt); if (inviterUserFound) { var model = new HouseholdMemberModel { Email = emailaddress, ConfirmEmail = emailaddress, //hidden on form FirstName = firstname, LastName = lastname, AddressId = addressIdInt }; return View(model); } return RedirectToAction("Index", "Home"); }
public ActionResult RegisterHouseholdMembers(HouseholdMemberModel householdMemberModel) { AddressModel address = new UserService().GetAddressById(householdMemberModel.AddressId); //Don't allow duplicate user var tryToFindUser = Membership.GetUserNameByEmail(householdMemberModel.Email); if (string.IsNullOrEmpty(tryToFindUser)) { var id = Guid.NewGuid(); Boolean isFBUser = false; Boolean isApproved = true; Int32 FBUserId = 0; // create the ASP membership user MembershipCreateStatus status; var membershipUser = Membership.CreateUser(username: householdMemberModel.Email, password: householdMemberModel.Password, email: householdMemberModel.Email, passwordQuestion: null, passwordAnswer: null, isApproved: isApproved, providerUserKey: id, status: out status ); // Check inviter user role and the same role for invited user var addressHolderUserEmail = new UserService().GetUserNameHolderForAddress(householdMemberModel.AddressId); if (!string.IsNullOrWhiteSpace(addressHolderUserEmail)) { if (Roles.IsUserInRole(addressHolderUserEmail, "Supplier") && membershipUser != null) { Roles.AddUserToRole(membershipUser.Email, "Supplier"); } } if (status == MembershipCreateStatus.Success) { // create the GM user var user = new UserModel { Id = id, FirstName = householdMemberModel.FirstName, LastName = householdMemberModel.LastName, AddressModel = address, AddressId = address.Id, Instance_Id = address.Instance_Id, SendEmailOffers = householdMemberModel.SendEmailOffers, SendEmailUpdates = householdMemberModel.SendEmailUpdates, IsFBAccount = isFBUser, FBUserId = FBUserId, IsAdditionalAccountHolder = true }; // Give them the New Member Bonus int numBonusPoints = Convert.ToInt16(ConfigurationManager.AppSettings["BonusPoints.NewMember.Points"]); string descBonusPoints = Convert.ToString(ConfigurationManager.AppSettings["BonusPoints.NewMember.Description"]); int? transactionTypeId = Convert.ToInt16(ConfigurationManager.AppSettings["TransactionType.ShareHeart"]); // store it var newUser = new UserService().CreateUser(user, numBonusPoints, descBonusPoints, transactionTypeId); int numBonusInvitationAcceptedPoints = Convert.ToInt16(ConfigurationManager.AppSettings["BonusPoints.InviteMember.Points"]); string descInvitationAcceptedBonusPoints = Convert.ToString(ConfigurationManager.AppSettings["BonusPoints.InviteMember.Description"]); bool addPoints = new UserService().InvitationAcceptedAddBonusPoints(addressHolderUserEmail, numBonusInvitationAcceptedPoints, descInvitationAcceptedBonusPoints, transactionTypeId); SendVerifyEmail(membershipUser.Email, user.FirstName, user.Id, true); bool isProduction = Convert.ToBoolean(ConfigurationManager.AppSettings["MailChimp.ListId"]); if (isProduction) { // Add them to the relevant MailChimp List MailChimpManager mc = new MailChimpManager(ConfigurationManager.AppSettings["MailChimp.APIKey"]); EmailParameter email = new EmailParameter() { Email = user.Email }; EmailParameter results = mc.Subscribe(ConfigurationManager.AppSettings["MailChimp.ListId"], email); } return RedirectToAction("RegisterAccountSuccess"); } else { ModelState.AddModelError("", ErrorCodeToString(status)); return View(householdMemberModel); } } else { // email has already been registered in the system ModelState.AddModelError("", "User with the same email address has already been registered with GreenMoney."); return View(householdMemberModel); } }
public ActionResult AdditionalUsers(HouseholdMemberModel householdMemberModel) { LayoutViewModel.ActiveLink = Links.AccountAdditionalUsers; //TODO check model state etc. var currentUser = new UserService().GetUserById(new Guid(LayoutViewModel.ProviderUserKey)); var isValid = !string.IsNullOrWhiteSpace(householdMemberModel.Email) && !string.IsNullOrWhiteSpace(householdMemberModel.ConfirmEmail) && !string.IsNullOrWhiteSpace(householdMemberModel.FirstName) && !string.IsNullOrWhiteSpace(householdMemberModel.LastName); if (isValid) { // create invite additional members url var url = Url.Action("RegisterHouseholdMembers", "Account", new { emailaddress = householdMemberModel.Email, inviter = currentUser.FirstName, addressid = currentUser.AddressModel.Id, firstname = householdMemberModel.FirstName, lastname = householdMemberModel.LastName }, Request.Url.Scheme); // email content var userModel = new InviteUserModel { Email = householdMemberModel.Email, FirstName = householdMemberModel.FirstName, LastName = householdMemberModel.LastName, User_Id = currentUser.Id }; // Give them the Invite Member Bonus int numBonusPoints = Convert.ToInt16(ConfigurationManager.AppSettings["BonusPoints.InviteMember.Points"]); string descBonusPoints = Convert.ToString(ConfigurationManager.AppSettings["BonusPoints.InviteMember.Description"]); int? transactionTypeId = Convert.ToInt16(ConfigurationManager.AppSettings["TransactionType.ShareHeart"]); InviteUserModel invited = new UserService().InviteHouseholdMembers(userModel, numBonusPoints, descBonusPoints, transactionTypeId); //Send email to invite members to register EmailService.SendEmailAdditionalMemberInvitation(householdMemberModel.Email, householdMemberModel.InviterName, url); } return RedirectToAction("AdditionalUsers"); }