public ActionResult RegistrationUpdate(RegistrationUpdateViewModel model)
        {
            if (!_orchardServices.Authorizer.Authorize(Permissions.ivOwnerTab, T("You are not authorized")))
                Response.Redirect("/Users/Account/AccessDenied?ReturnUrl=/");

            if (!ModelState.IsValid) return View("Site/Registration/Update/Index", model);

            _ownerServices.UpdateOwnerRegistration(model);

            const string returnUrl = "/owner/my-listings";

            return Redirect(returnUrl);
        }
        public RegistrationUpdateViewModel GetOwner(int userId)
        {
            var registrationViewModel = new RegistrationUpdateViewModel();

            using (var session = NHibernateHelper.OpenSession())
            {
                var owner = session.CreateCriteria(typeof (Owner))
                    .List<Owner>().FirstOrDefault(
                        x => x.UserId.Equals(userId)) ??
                            new Owner();

                registrationViewModel.UserId = userId;
                registrationViewModel.Surname = owner.Surname;
                registrationViewModel.Firstname = owner.Firstname;
                registrationViewModel.Address1 = owner.AddressDetail.Address1;
                registrationViewModel.Address2 = owner.AddressDetail.Address2;
                registrationViewModel.Town = owner.AddressDetail.Town;
                registrationViewModel.Postcode = owner.AddressDetail.Postcode;
                registrationViewModel.Phone = owner.ContactDetail.Phone;
                registrationViewModel.Email = owner.ContactDetail.Email;
                registrationViewModel.Website = owner.ContactDetail.Website;

            }

            return registrationViewModel;
        }
        public void UpdateOwnerRegistration(RegistrationUpdateViewModel model)
        {
            using (var session = NHibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    // get existing entities
                    var owner = session.CreateCriteria(typeof (Owner))
                        .List<Owner>().FirstOrDefault(x => x.UserId.Equals(model.UserId));
                    if (owner != null)
                    {
                        owner.Surname = model.Surname;
                        owner.Firstname = model.Firstname;

                        var address = owner.AddressDetail;
                        address.Address1 = model.Address1;
                        address.Address2 = model.Address2;
                        address.Postcode = model.Postcode;
                        address.Town = model.Town;
                      //  address.AddressDetailKey = CustomStringHelper.BuildKey(new[] { model.Address1, model.Postcode });

                        var contact = owner.ContactDetail;
                        contact.Phone = model.Phone;
                        contact.Website = model.Website;

                        SetAudit(address);
                        session.SaveOrUpdate(address);

                        SetAudit(contact);
                        session.SaveOrUpdate(contact);

                        SetAudit(owner);
                        session.SaveOrUpdate(owner);

                        transaction.Commit();
                    }
                }
            }
        }