public async Task <IActionResult> StackOverflowUsers(StackOverflowUsersSearchViewModel search)
        {
            //construct api url
            var apiUrl = (string.Format("users?pagesize={0}&order=desc&sort=reputation&inname={1}&site=stackoverflow",
                                        Constants.Constants.StackOverflowApiPageSize,
                                        search.InName));

            //get results
            var results = await StackOverflowAPIService.CallApi(apiUrl);

            //parse json string to object
            List <StackOverflowUser> users = new List <StackOverflowUser>();

            foreach (var result in results)
            {
                StackOverflowUser user = JsonConvert.DeserializeObject <StackOverflowUser>(result.ToString());
                users.Add(user);
            }

            //populate view model
            var vm = new StackOverflowUsersViewModel()
            {
                Users = users
            };

            return(View(vm));
        }
        public async Task <IActionResult> Questions(QuestionsSearchPostViewModel search)
        {
            //prepare master question list
            List <StackOverflowQuestionWithDates> questions = new List <StackOverflowQuestionWithDates>();

            //prepare query strings for api call
            var userIdsForQuery = string.Empty;

            if (search.UserIds != null)
            {
                foreach (var userId in search.UserIds)
                {
                    userIdsForQuery += userId + ";";
                }
                userIdsForQuery = userIdsForQuery.TrimEnd(';');
            }

            //get and parse unanswered results
            var apiUrlUnanswered = (string.Format("users/{0}/questions/unanswered?pagesize={1}&order=desc&sort=activity&site=stackoverflow",
                                                  userIdsForQuery,
                                                  Constants.Constants.StackOverflowApiPageSize));

            questions = ParseAPIResults(await StackOverflowAPIService.CallApi(apiUrlUnanswered), questions);

            //get and parse no answer results
            var apiUrlNoAnswers = (string.Format("users/{0}/questions/no-answers?pagesize={1}&order=desc&sort=activity&site=stackoverflow",
                                                 userIdsForQuery,
                                                 Constants.Constants.StackOverflowApiPageSize));

            questions = ParseAPIResults(await StackOverflowAPIService.CallApi(apiUrlNoAnswers), questions);

            //get and parse unaccepted results
            var apiUrlUnaccepted = (string.Format("users/{0}/questions/unaccepted?pagesize={1}&order=desc&sort=activity&site=stackoverflow",
                                                  userIdsForQuery,
                                                  Constants.Constants.StackOverflowApiPageSize));

            questions = ParseAPIResults(await StackOverflowAPIService.CallApi(apiUrlUnaccepted), questions);

            //populate view model
            var filteredQuestions = questions
                                    .Where(o => o.is_answered != true)
                                    .Where(o => o.locked_date == 0)
                                    .Where(o => o.closed_date == 0)
                                    .ToList();
            var vm = new QuestionsViewModel()
            {
                Questions = filteredQuestions
            };

            return(View(vm));
        }