Exemple #1
0
        private void CompleteActions(ActionItem item, int cartItemId, int? discountId, string confirmationCode)
        {
            IRegistrationService regService = new RegistrationService(this._repository, false);

            switch (item.ActionType)
            {
                case CartActionType.NewRegistration:
                    var newReg = (Registration)item.ActionObject;
                    newReg.CartItemId = cartItemId;
                    newReg.ConfirmationCode = confirmationCode;
                    regService.CreateNewRegistration(newReg, discountId);
                    break;
                case CartActionType.EventChange:
                    var changeAction = (ChangeEventAction)item.ActionObject;
                    regService.ChangeEvent(changeAction.RegistrationId, changeAction.UpdatedEventWaveId, cartItemId, confirmationCode);
                    break;
                case CartActionType.TransferRregistration:
                    var transferAction = (TransferAction)item.ActionObject;
                    regService.TransferRegistration(transferAction.RegistrationId, transferAction.FullName, transferAction.Email);
                    break;
                case CartActionType.CancelRegistration:
                    var cancelAction = (CancellationAction)item.ActionObject;
                    regService.CancelRegistration(cancelAction.RegistrationId);
                    break;
            }
        }
        public ActionItem CreateShippingFee(Guid regItemGuid, int eventWaveId, RegistrationMaterialsDeliveryOption? deliveryOption)
        {
            var newAction = new ShippingFeeAction {
                RegItemGuid = regItemGuid,
                EventWaveId = eventWaveId
            };
            var newCartItem = new ActionItem
            {
                ActionType = CartActionType.ShippingFee,
                ActionObject = newAction,
                ItemReadyForCheckout = true
            };

            return newCartItem;
        }
        public ActionResult StartCancellation(int regId)
        {
            if (!IsRegistrationAlreadyInCart(regId))
            {
                var itemId = Guid.NewGuid();
                var newAction = new CancellationAction
                    {
                        RegistrationId = regId
                    };
                var newCartItem = new ActionItem
                    {
                        ActionType = CartActionType.CancelRegistration,
                        ActionObject = newAction,
                        ItemReadyForCheckout = true
                    };

                SessionManager.CurrentCart.ActionItems.Add(itemId, newCartItem);
            }
            SessionManager.CurrentCart.CheckOutFocus = CartFocusType.CancelEvent;

            return RedirectToAction("checkout", "cart");
        }
        public ActionResult StartRedemption(string id)
        {
            ServiceResult result = _service.ValidateRedemptionCodeForUserId(id, CurrentUser.UserId);

            if (result.Success)
            {
                RedemptionCode redemptionCode = _service.GetRedemptionCode(id);
                var itemId = Guid.NewGuid();
                var newReg = new Registration
                {
                    UserId = CurrentUser.UserId,
                    FirstName = CurrentUser.FirstName,
                    LastName = CurrentUser.LastName,
                    Address1 = CurrentUser.Address1,
                    Address2 = CurrentUser.Address2,
                    Locality = CurrentUser.Locality,
                    RegionId = CurrentUser.RegionId,
                    PostalCode = CurrentUser.PostalCode,
                    Email = CurrentUser.EmailAddress,
                    RegistrationStatus = RegistrationStatus.Active,
                };

                if (redemptionCode.RedemptionCodeType == RedemptionCodeType.Transfer)
                {
                    newReg.EventWaveId = redemptionCode.GeneratingRegistration.EventWaveId;
                    newReg.TeamId = redemptionCode.GeneratingRegistration.TeamId;
                }

                SessionManager.CurrentCart.DiscountCode = id;

                var newCartItem = new ActionItem
                {
                    ActionType = CartActionType.NewRegistration,
                    ActionObject = newReg,
                    ItemReadyForCheckout = false
                };

                SessionManager.CurrentCart.ActionItems.Add(itemId, newCartItem);
                SessionManager.CurrentCart.CheckOutFocus = CartFocusType.Registration;

                if (redemptionCode.RedemptionCodeType == RedemptionCodeType.Transfer)
                    return RedirectToAction("registrationdetails", "Registration", new {itemId});

                SessionManager.CurrentCart.CheckOutFocus = CartFocusType.Redemption;
                return RedirectToAction("eventselection", "registration", new {itemId});
            }

            string error = "Invalid Redemption Code";
            var errors = result.GetServiceErrors();
            if (errors != null && errors.Count > 0)
                error = errors[0].ErrorMessage;

            return RedirectToAction("InvalidRedemption", "registration", new { redemptionError = error });
        }
        public ActionResult StartNewRegistration(int? eventId, int? eventDateId)
        {
            var itemId = Guid.NewGuid();
            var newReg = new Registration
                {
                    UserId = CurrentUser.UserId,
                    FirstName = CurrentUser.FirstName,
                    LastName = CurrentUser.LastName,
                    Address1 = CurrentUser.Address1,
                    Address2 = CurrentUser.Address2,
                    Locality = CurrentUser.Locality,
                    RegionId = CurrentUser.RegionId,
                    PostalCode = CurrentUser.PostalCode,
                    Email = CurrentUser.EmailAddress,
                    RegistrationStatus = RegistrationStatus.Active
                };
            var newCartItem = new ActionItem
                {
                    ActionType = CartActionType.NewRegistration,
                    ActionObject = newReg,
                    ItemReadyForCheckout = false
                };

            SessionManager.CurrentCart.ActionItems.Add(itemId, newCartItem);
            SessionManager.CurrentCart.CheckOutFocus = CartFocusType.Registration;

            return RedirectToAction("eventSelection", "registration", new { itemId, eventId, eventDateId });
        }
        public ActionResult StartChangeWave(int regId)
        {
            var itemId = Guid.NewGuid();
            var newAction = new ChangeWaveAction
                {
                    RegistrationId = regId
                };
            var newCartItem = new ActionItem
            {
                ActionType = CartActionType.WaveChange,
                ActionObject = newAction,
                ItemReadyForCheckout = false
            };

            SessionManager.CurrentCart.ActionItems.Add(itemId, newCartItem);
            SessionManager.CurrentCart.CheckOutFocus = CartFocusType.ChangeWave;

            var reg = _service.GetRegistrationById(regId);
            return RedirectToAction("EventSelection", "registration", new { itemId, reg.EventWave.EventDate.EventId, reg.EventWave.EventDateId, reg.EventWaveId});
        }
        public ActionResult StartChangeEvent(int eventId, int regId, int waveId, int dateId)
        {
            if (!IsRegistrationAlreadyInCart(regId))
            {
                var newItemId = Guid.NewGuid();

                var newAction = new ChangeEventAction
                    {
                        RegistrationId = regId
                    };
                var newCartItem = new ActionItem
                    {
                        ActionType = CartActionType.EventChange,
                        ActionObject = newAction,
                        ItemReadyForCheckout = false
                    };

                SessionManager.CurrentCart.ActionItems.Add(newItemId, newCartItem);
                SessionManager.CurrentCart.CheckOutFocus = CartFocusType.ChangeEvent;

                return RedirectToAction("EventSelection", "registration",
                                        new
                                            {
                                                itemId = newItemId,
                                                eventId = eventId,
                                                eventDateId = dateId,
                                                eventWaveId = waveId
                                            });
            }
            SessionManager.CurrentCart.CheckOutFocus = CartFocusType.CancelEvent;

            return RedirectToAction("checkout", "cart");
        }