private RedirectToRouteResult ChangeWave(int registrationId, int eventWaveId, Guid itemId, int?initialWaveId)
        {
            // did they even change it?
            if (initialWaveId.HasValue && initialWaveId.Value == eventWaveId)
            {
                SessionManager.CurrentCart.ActionItems.Remove(itemId);
                DisplayMessageToUser(new DisplayMessage(DisplayMessageType.SuccessMessage, "head-Event wave was not changed."));
                return(RedirectToAction("viewuser", "user", new { userId = CurrentUser.UserId }));
            }

            var          userRegistrations = _service.GetRegistrationByUserID(CurrentUser.UserId);
            Registration curRegistration   = userRegistrations.FirstOrDefault(x => x.RegistrationId == registrationId);

            // are you already registered for that wave?
            if (_service.IsDuplicateRegistration(eventWaveId, CurrentUser.UserId, curRegistration.FirstName, curRegistration.LastName))
            {
                DisplayMessageToUser(new DisplayMessage(DisplayMessageType.Warning, "You have already registered for this event wave."));
                return(RedirectToAction("viewuser", "user", new { userId = CurrentUser.UserId }));
            }

            ServiceResult eventWaveChangeResult = _service.ChangeWave(registrationId, eventWaveId);

            if (eventWaveChangeResult.Success)
            {
                SessionManager.CurrentCart.ActionItems.Remove(itemId);
                DisplayMessageToUser(new DisplayMessage(DisplayMessageType.SuccessMessage, "head-You have successfully updated your event wave."));
                return(RedirectToAction("viewuser", "user", new { userId = CurrentUser.UserId }));
            }
            return(null);
        }