コード例 #1
0
        public async Task <IHttpActionResult> JumpToWizardStep(UserOnboardingStatusDTO inputStep)
        {
            string userName = User.Identity.Name;
            User   user     = db.Users.Where(_user => _user.UserName == userName).SingleOrDefault();

            if (user == null)
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }
            if (!inputStep.OnboardingStep.HasValue)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
            if (inputStep.OnboardingStep.HasValue && (inputStep.OnboardingStep.Value < 0 || inputStep.OnboardingStep.Value > 4))
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
            user.OnboardingStep  = inputStep.OnboardingStep.Value;
            db.Entry(user).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return(Ok(Mapper.Map <User, UserOnboardingStatusDTO>(user)));
        }
コード例 #2
0
        public async Task <IHttpActionResult> SetMyCurrentOnboardingStep(UserOnboardingStatusDTO inputStep)
        {
            string userName = User.Identity.Name;
            User   user     = db.Users.Where(_user => _user.UserName == userName).SingleOrDefault();

            if (user == null)
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }
            if (!inputStep.OnboardingStep.HasValue)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            if (inputStep.OnboardingStep.HasValue && (inputStep.OnboardingStep.Value < 0 || inputStep.OnboardingStep.Value > 4))
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            if (user.OnboardingSkipped == true)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            bool isPrev        = false;
            bool showFirstStep = false;

            if (user.OnboardingStep.HasValue)
            {
                int diff = user.OnboardingStep.Value - inputStep.OnboardingStep.Value;
                if (!(diff == 1 || diff == -1 || (diff == -3 && inputStep.IsIndividual.HasValue && inputStep.IsIndividual.Value)))
                {
                    throw new HttpResponseException(HttpStatusCode.BadRequest);
                }

                if (diff > 0)
                {
                    isPrev = true;
                }
                if (diff == 1 && inputStep.OnboardingStep.Value == 3 && user.OnboardingStep.Value == 4 && user.IsIndividual.HasValue && user.IsIndividual.Value)
                {
                    showFirstStep = true;
                }

                if (showFirstStep)
                {
                    inputStep.OnboardingStep = 1;
                }
            }

            user.OnboardingStep = inputStep.OnboardingStep.Value;

            if ((inputStep.OnboardingStep.Value == 2 || inputStep.OnboardingStep.Value == 4) && !isPrev)
            {
                user.IsIndividual = false;
                if (inputStep.IsIndividual.HasValue && inputStep.IsIndividual.Value)
                {
                    user.IsIndividual = true;
                }
            }
            db.Entry(user).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return(Ok(Mapper.Map <User, UserOnboardingStatusDTO>(user)));
        }