예제 #1
0
        public ActionResult PartyHireInformation(PartyHireInformationViewModel viewModel, Order order, Member member, bool isBillingDetailsTheSame = false)
        {
            if (viewModel.IsDelivery && !this.ModelState.IsValid)
            {
                return this.PartyHireInformation(order, member);
            }

            this._commandDispatcher.Dispatch(new CreatePartyCommand(order, viewModel.PartyDate.Value, member));

            if (viewModel.IsDelivery)
            {
                Address deliveryAddress = this._addressProvider.SaveDeliveryAddress(member, viewModel, viewModel.PhoneNumber);
                this._commandDispatcher.Dispatch(new AddDeliveryAddressCommand(order, deliveryAddress, true, true));
                this._commandDispatcher.Dispatch(new AddPartyAddressCommand(order, deliveryAddress, member));

                if (isBillingDetailsTheSame)
                {
                    Address billingAddress = this._addressProvider.SaveBillingAddress(member, viewModel, null);
                    this._commandDispatcher.Dispatch<AddBillingAddressCommand>(new AddBillingAddressCommand(order, billingAddress));
                }
            }
            else
            {
                this._commandDispatcher.Dispatch(new RemoveDeliveryAddressCommand(order));
            }

            return this.RedirectToRoute(Routes.Checkout.BillingInformation);
        }
예제 #2
0
        public ActionResult PartyHireInformation(Order order, Member member)
        {
            if (order.ContainsHireProducts() || order.ContainsTheme())
            {
                Party party = this._queryDispatcher.Dispatch<Party, GetPartyByOrderGuidQuery>(new GetPartyByOrderGuidQuery(order.Guid));

                PartyHireInformationViewModel viewModel = new PartyHireInformationViewModel(null, order, party);

                if (order.DeliveryAddressId.HasValue)
                {
                    Address address = this._queryDispatcher.Dispatch<Address, GetAddressByGuidQuery>(new GetAddressByGuidQuery(order.DeliveryAddressId.Value));
                    viewModel = new PartyHireInformationViewModel(address, order, party);
                }
                else if (member.DeliveryAddresses.Any())
                {
                    Address address = member.DeliveryAddresses.OrderByDescending(o => o.DateCreated).First();
                    viewModel = new PartyHireInformationViewModel(address, order, party);
                }

                return this.View("PartyHireInformation", viewModel);
            }

            return this.RedirectToRoute(Routes.Checkout.BillingInformation);
        }