public IEnumerable<User> Get()
        {
            string userName = Thread.CurrentPrincipal.Identity.Name;

            var userDataContext = new UserDataContext();
            var userRepository = new UserRepository(userDataContext);

            IQueryable<User> allUsers = userRepository.GetAll();
            var result = allUsers.ToList();
            return result;
        }
        /// <summary>
        /// ユーザーアカウント新規登録
        /// </summary>
        /// <param name="newUser">新規ユーザー情報</param>
        /// <returns>
        /// 成功した場合:登録したユーザー情報
        /// 失敗した場合:エラー情報
        /// </returns>
        public HttpResponseMessage PostUser(User newUser)
        {
            if (null == newUser)
            {
                string ErrorMessage = "User information is not specified";
                var errorResponse = Request.CreateErrorResponse(HttpStatusCode.BadRequest, ErrorMessage);

                return errorResponse;
            }

            if (false == ModelState.IsValid)
            {
                var errorInfo = new FeedReaderErrorHandler(ModelState);
                var errorResponse = Request.CreateResponse<FeedReaderError>(errorInfo.GetHttpStatusCode(), errorInfo.GetErrorInfo());
                return errorResponse;
            }

            var userDataContext = new UserDataContext();
            var userRepository = new UserRepository(userDataContext);

            try
            {
                newUser.SetHashedPassword();
                newUser = userRepository.Insert(newUser);

                if (null == newUser)
                {
                    if (FeedReaderErrorCode.DuplicateEmail == userRepository.lastError)
                    {
                        // TODO: Create Error handler and pass it as error response
                        var errorResponse = Request.CreateResponse<User>(HttpStatusCode.Ambiguous, newUser);
                        return errorResponse;
                    }
                }

                var response = Request.CreateResponse<User>(HttpStatusCode.Created, newUser);

                string uri = Url.Link("DefaultApi", new { id = newUser.Id });
                response.Headers.Location = new Uri(uri);
                return response;
            }
            catch (Exception ex)
            {
                var errorInfo = new FeedReaderErrorHandler(ex);
                var response = Request.CreateResponse<FeedReaderError>(errorInfo.GetHttpStatusCode(), errorInfo.GetErrorInfo());
                return response;
            }
        }
        private bool IsValiedCredentials(string username, string password)
        {
            var userDataContext = new UserDataContext();
            var userRepository = new UserRepository(userDataContext);

            IQueryable<User> currentUser = userRepository.SearchFor(x => x.Email == username);

            var credArray = currentUser.ToArray();
            if (credArray.Count() != 1)
            {
                return false;
            }

            string passwordMD5Hash = CalculateMD5Hash(password);
            if (credArray[0].Password.ToLower() != passwordMD5Hash) {
                return false;
            }

            return true;
        }