public async Task <IHttpActionResult> GetUserPasswordReset(tUserPasswordReset passwordReset)
        {
            try
            {
                var pwdReset = await db.tUserPasswordResets.Where(u => u.ExternalUserID == passwordReset.ExternalUserID &&
                                                                  u.ResetCodeID == passwordReset.ResetCodeID).OrderByDescending(u => u.CreateDateTime).FirstOrDefaultAsync();

                if (pwdReset != null)
                {
                    if (pwdReset.UsedDateTime != null)
                    {
                        return(Unauthorized());// BadRequest("Code has already been used!");
                    }
                    else
                    {
                        if ((DateTime.Now - pwdReset.CreateDateTime).TotalDays > 2)
                        {
                            return(BadRequest("Reset Code has expired"));
                        }
                        else
                        {
                            return(Ok(pwdReset));
                        }
                    }
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (DbUpdateConcurrencyException ex)
            {
                throw ex;
            }
        }
        public async Task <IHttpActionResult> GetUserPasswordResetCode(tUser user)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var users = await db.tUsers.Where(u => u.Email == user.Email && u.AccountStatusID == 1).FirstOrDefaultAsync();

                if (users != null)
                {
                    var userPasswordReset = new tUserPasswordReset
                    {
                        UserID         = users.ID,
                        ExternalUserID = users.ExternalID,
                        ResetCodeID    = Guid.NewGuid(),
                        CreateDateTime = DateTime.Now,
                    };
                    db.tUserPasswordResets.Add(userPasswordReset);
                    await db.SaveChangesAsync();

                    users.tUserPasswordResets.Add(userPasswordReset);

                    return(Ok(users));
                }
                else
                {
                    return(StatusCode(HttpStatusCode.NotFound));
                }
            }
            catch (DbUpdateConcurrencyException ex)
            {
                throw ex;
            }
        }
        public async Task <IHttpActionResult> UpdateUserPasswordReset(int id, tUserPasswordReset passwordReset)
        {
            try
            {
                var tUserPwd = await db.tUserPasswordResets.Include(u => u.tUser).Where(u => u.UserID == passwordReset.UserID && u.ResetCodeID == passwordReset.ResetCodeID &&
                                                                                        u.ExternalUserID == passwordReset.ExternalUserID).FirstOrDefaultAsync();

                if (tUserPwd != null)
                {
                    tUserPwd.UsedDateTime = DateTime.Now;
                    await db.SaveChangesAsync();

                    return(Ok(tUserPwd.tUser));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (DbUpdateConcurrencyException ex)
            {
                throw ex;
            }
        }