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)); }