private static void GetUpdatedPersonFromVm(PersonDetailsVm model, AspNetUser user)
        {
            var person = user.UserPerson;

            SetUserProperties(model, user);
            SetPersonProperties(model, person);
        }
 private static void SetPersonProperties(PersonDetailsVm model, UserPerson person)
 {
     person.DateOfBirth  = model.DateOfBirth.GetValueOrDefault();
     person.AddressLine1 = model.AddressLine1;
     person.AddressLine2 = model.AddressLine2;
     person.Gender       = model.Gender;
     person.City         = model.City;
 }
        private void CreateNewPersonFromVm(PersonDetailsVm model, AspNetUser user)
        {
            var person = _personRepository.NewObject();

            SetUserProperties(model, user);
            SetPersonProperties(model, person);

            user.UserPerson = person;
        }
        public void SavePersonalDetails(PersonDetailsVm model, string userId)
        {
            var user = _userRepository.Single(p => p.Id == userId);

            if (user.UserPerson != null)
            {
                GetUpdatedPersonFromVm(model, user);
            }
            else
            {
                CreateNewPersonFromVm(model, user);
            }

            _userRepository.Modify(user);
            _userRepository.SaveChanges();
        }
        public Task <ActionResult> SavePersonalDetails(PersonDetailsVm model)
        {
            if (!ModelState.IsValid)
            {
                return(Index(ManageMessageId.Error));
            }

            try
            {
                _userService.SavePersonalDetails(model, User.Identity.GetUserId());
                _log.Info($"Successfully updated profile of user {User.Identity.Name}");

                return(Index(ManageMessageId.UpdatedProfile));
            }
            catch (Exception exception)
            {
                _log.Error(FormatUtility.GetExceptionMessage(exception));
                return(Index(ManageMessageId.Error));
            }
        }
        public PersonDetailsVm Map(AspNetUser source)
        {
            var person = source.UserPerson;
            var vm     = new PersonDetailsVm
            {
                FirstName = source.FirstName,
                LastName  = source.LastName,
                Phone     = source.PhoneNumber,
                Email     = source.Email
            };

            if (person == null)
            {
                return(vm);
            }

            vm.Gender       = person.Gender;
            vm.DateOfBirth  = person.DateOfBirth;
            vm.AddressLine1 = person.AddressLine1;
            vm.AddressLine2 = person.AddressLine2;
            vm.City         = person.City;

            return(vm);
        }
 private static void SetUserProperties(PersonDetailsVm model, AspNetUser user)
 {
     user.FirstName   = model.FirstName;
     user.LastName    = model.LastName;
     user.PhoneNumber = model.Phone;
 }