public ActionResult Save(ProfileViewModel model)
        {
            var result = new ProfileViewModel();
            var validator = new ProfileViewModelValidator();
            var validationResult = validator.Validate(model);

            if (validationResult.IsValid)
            {
                var request = model.ConvertToUpdateProfileRequest();
                request.IdentityToken = this.FormsAuthentication.GetAuthenticationToken();
                var response = this.membershipService.UpdateProfile(request);
                result = response.ConvertToProfileViewModel();
                result.Message = response.Message;
            }
            else
            {
                result.MessageType = MessageType.Warning.ToString();
                result.Message = CommonResources.ProfileUpdateErrorMessage;
                result.FirstName = model.FirstName;
                result.LastName = model.LastName;
                result.NotifyOnOrderStatusChanged = model.NotifyOnOrderStatusChanged;
                result.NotifyOnPackageStatusChanged = model.NotifyOnPackageStatusChanged;
                result.BrokenRules = new List<BusinessRule>();
                foreach (var failure in validationResult.Errors)
                {
                    result.BrokenRules.Add(new BusinessRule(failure.PropertyName, failure.CustomState.ToString()));
                }
            }

            result.Email = this.FormsAuthentication.GetAuthenticationToken();

            var jsonNetResult = new JsonNetResult
            {
                Formatting = (Formatting)Newtonsoft.Json.Formatting.Indented,
                Data = result
            };
            return jsonNetResult;
        }