Пример #1
0
        public ResLogin QuickSignUp(ReqQuickSignUp req)
        {
            var res = Call <ResLogin, ReqQuickSignUp>(req, MethodBase.GetCurrentMethod().Name);

            this.SessionId = res.SessionId;
            HttpContext.Current.Session["Member"] = res.Member;
            return(res);
        }
Пример #2
0
        public ResLogin QuickSignUp(ReqQuickSignUp req)
        {
            if (string.IsNullOrWhiteSpace(req.Email) || !req.Email.IsEmail())
            {
                throw new APIException("Email address is invalid", ErrorTypes.ValidationError);
            }
            if ((req.Password ?? "").Length < 6)
            {
                throw new APIException("Password length cannot be less than six");
            }
            if (req.Password != req.PasswordAgain)
            {
                throw new APIException("Passwords do not match", ErrorTypes.ValidationError);
            }

            if (!string.IsNullOrWhiteSpace(Session.MemberId))
            {
                throw new APIException("You are already a member", ErrorTypes.ValidationError,
                                       ErrorCodes.ExistingMemberCannotSignUp);
            }

            Member member = Provider.Database.Read <Member>("Email={0} AND ClientId = {1}", req.Email,
                                                            this.ApiClient.ClientId);

            if (member != null)
            {
                throw new APIException("The email address is registered. Please login before proceeding.",
                                       ErrorTypes.ValidationError, ErrorCodes.ExistingMemberCannotSignUp);
            }

            member = new Member
            {
                FirstName     = req.FirstName,
                LastName      = req.LastName,
                Email         = req.Email,
                Password      = Utility.MD5(req.Password),
                MemberType    = MemberTypes.Individual,
                State         = MemberStates.WaitingEmailConfirmation,
                LastLoginDate = Provider.Database.Now,
                ClientId      = this.ApiClient.ClientId,
                StaffMemberId = Provider.Api.GetNextIdleStaffMemberId(Departments.Marketing)
            };
            member.Save();

            member.SendConfirmationCode();

            var res = new ResLogin {
                Member = new MemberInfo()
            };

            member.CopyPropertiesWithSameName(res.Member);

            this.Session.MemberId   = member.Id;
            this.Session.LoginDate  = Provider.Database.Now;
            this.Session.LastAccess = Provider.Database.Now;
            this.Session.Save();

            res.SessionId = this.Session.Id;

            return(res);
        }