Пример #1
0
        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");
        }
Пример #2
0
        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);

            }
        }
Пример #3
0
        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");
        }