Exemple #1
0
        public Customer Save()
        {
            if (_cardReader == null)
            {
                if (MessageBox.Show(@"Card reader is not ready, retry?", @"Alert", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    CheckCardReader();
                }
                else
                {
                    throw new ApplicationException(@"Cannot save membership data. Card reader is not ready");
                }
            }

            Customer customer = CustomerFactory.CreateCustomer(
                _view.CustomerCode,
                new PersonName(_view.Firstname, _view.Middlename, _view.Lastname),
                new Address(_view.City, _view.Zipcode, _view.AddressLine),
                _view.Vehicles
                );

            var session = NHibernateSessionManager.GetLocalSession();

            session.DoTransactional(sess =>
            {
                customer = _customerRepo.Insert(customer);

                if (_view.WantsToBeAMember)
                {
                    var membershipRegistration = customer.RegisterAsMember();

                    _membershipRegistrationRepo.Insert(membershipRegistration);
                }

                customer = _customerRepo.Insert(customer);
            });

            return(customer);
        }