public async Task <IHttpActionResult> Active(NoncePairDto pendingSession)
        {
            if (ModelState.IsValid)
            {
                var session =
                    await db
                    .Sessions
                    .Where(QueryHelper.GetPendingSessionQuery(pendingSession))
                    .SingleOrDefaultAsync();

                if (session == null)
                {
                    return(NotFound()); //Wrong Nonce Entered
                }

                session.User.State       = UserState.ACTIVE;
                session.User.UpdatedAt   = DateTime.Now;
                session.ActivationMoment = DateTime.Now;
                session.State            = SessionState.ACTIVE;

                //We add the registered phone number to user's validated phone number.
                if (session.User.PhoneNumber != null)
                {
                    var newValidator = new UserPhoneNumberValidator()
                    {
                        UserId        = session.User.Id,
                        TargetNumber  = session.User.PhoneNumber,
                        SecurityToken = HasherHelper.sha256_hash(pendingSession.Nonce.ToString()),
                        IsValidated   = true,
                        CreatedAt     = DateTime.Now,
                        ValidatedAt   = DateTime.Now
                    };
                    db.UserPhoneNumberValidators.Add(newValidator);
                }

                await db.SaveChangesAsync();

                SessionInfoObject sessionInfo = new SessionInfoObject()
                {
                    SessionKey = session.SessionKey,
                    SessionId  = session.Id
                };

                return(Ok(sessionInfo));
            }

            return(BadRequest());
        }
        public async Task <IHttpActionResult> Create(PhoneNumberValidatorDto phoneNumberValidatorDto)
        {
            if (ModelState.IsValid)
            {
                var session = await
                              db.Sessions.SingleOrDefaultAsync(
                    QueryHelper.GetSessionObjectValidationQuery(phoneNumberValidatorDto.Session));

                if (session != null)
                {
                    var smsSent   = true;
                    int nonce     = RandomHelper.RandomInt(10000, 99999);
                    var validator = new UserPhoneNumberValidator()
                    {
                        UserId        = session.User.Id,
                        TargetNumber  = phoneNumberValidatorDto.PhoneNumber,
                        SecurityToken = HasherHelper.sha256_hash(nonce.ToString()),
                        IsValidated   = false,
                        CreatedAt     = DateTime.Now
                    };
                    db.UserPhoneNumberValidators.Add(validator);
                    await db.SaveChangesAsync();

                    if (MessageHelper.SendSMS_K(nonce.ToString(), phoneNumberValidatorDto.PhoneNumber,
                                                MessageHelper.SMSMode.VERIFICATION) != null)
                    {
                        smsSent = false;
                    }

                    return(Ok());
                }

                return(Unauthorized());
            }

            return(BadRequest());
        }