public IHttpActionResult UpdateProfile(ProfileUpdateRequest request) { var response = new ProfileUpdateResponse(); try { var isValidRequest = false; var emailChanged = false; var memberId = request.GetMemberId(); var member = MembershipAdapter.GetMember(memberId); if (request.IsValidModel()) { if (member.Exists()) { if (member.ConfirmedRegistration()) { if (memberId == member.Id) { isValidRequest = true; emailChanged = !string.Equals(request.Email, member.Email, StringComparison.InvariantCultureIgnoreCase); } } } } if (isValidRequest) { var memberProfile = new MemberProfile { MemberId = member.Id, TimeZoneId = request.TimeZoneId, Alias = request.Alias, Gender = request.Gender, BirthDate = request.BirthDate }; memberProfile = MembershipAdapter.UpdateProfile(memberProfile); if (emailChanged) { var memberEmailChange = MembershipAdapter.GetMemberEmailChange(member.Id); if (memberEmailChange.Exists()) { if (!string.Equals(memberEmailChange.Email, request.Email, StringComparison.InvariantCultureIgnoreCase)) { memberEmailChange.Email = request.Email; MembershipAdapter.UpdateEmailChange(memberEmailChange); } } else { memberEmailChange.MemberId = member.Id; memberEmailChange.Email = request.Email; MembershipAdapter.CreateEmailChange(memberEmailChange); } var memberTokens = MembershipAdapter.GetMemberTokens(member.Id, TokenTypes.EmailChange, true); var memberToken = new MemberToken(); memberToken.MemberId = member.Id; memberToken.TokenType = TokenTypes.EmailChange; memberToken.RequestDate = DateTime.Now.ToUniversalTime(); if (memberTokens.Any()) { memberToken.Token = memberTokens.ElementAt(0).Token; memberToken = MembershipAdapter.UpdateToken(memberToken); } else { memberToken.Token = Guid.NewGuid(); memberToken = MembershipAdapter.CreateToken(memberToken); } var email = new EmailChangeEmail { DomainName = ConfigHelper.DomainName, DomainBaseUrl = ConfigHelper.DomainBaseUrl, Alias = request.Alias, ConfirmationToken = memberToken.Token }; var emailBuilder = new EmailBuilder(EmailReference.HTML.Templates.Main, EmailReference.HTML.Contents.EmailChange); var emailBody = emailBuilder.BuildBody<EmailChangeEmail>(email); var emailResult = EmailHelper.SendEmail(ConfigHelper.NoReplayEmailAddress, ConfigHelper.DomainName, request.Email, member.Profile.Alias, email.Subject, emailBody, true); } response.IsSuccessful = true; response.StatusMessage = "Update profile succeeded"; } else { response.IsSuccessful = false; response.StatusMessage = "Update profile was unsuccessful"; response.Errors.AddRange(request.GetErrors()); } } catch (Exception ex) { this.Log<ProfileUpdateRequest>(LogCategories.Error, request, ex.Message); response.IsSuccessful = false; response.StatusMessage = this.StatusMessageForExpection; response.Errors.Add(ex.Message); } return Ok(response); }
public void UpdateProfile() { var memberId = this.RequestUserInput<string>("Enter member ID: ", string.Empty); var email = this.RequestUserInput<string>("Enter email: ", string.Empty); var alias = this.RequestUserInput<string>("Enter alias: ", string.Empty); var timeZoneId = this.RequestTimeZone("Enter time zone ID: ", TimeZones.CentralStandardTime); var genderId = this.RequestGender("Enter gender type: ", null); var birthDate = this.RequestDate("Enter birth date: ", null); var request = new ProfileUpdateRequest { MemberId = memberId, Email = email, Alias = alias, TimeZoneId = timeZoneId.Value, Gender = genderId, BirthDate = birthDate }; var response = proxy.UpdateProfile(request); this.OutputResponse(response); }