public JobsSearchPage(JobsSearchItem jobsSearchItem) { InitializeComponent(); jobsSearchItem.UseGeolocation = false; var viewModel = new JobsSearchViewModel(this, Navigation, jobsSearchItem); BindingContext = viewModel; }
public async Task <IReadOnlyList <JobItem> > FetchItems(JobsSearchItem jobSearchItem) { var newItems = await App.ApiHelper.GetJobsAsync(jobSearchItem); items.Clear(); foreach (var item in newItems) { items.Add(item); } return(items); }
public JobsViewModel() { Title = string.Format("Hello, {0}", App.UserDataStore.IsUserRegistered ? App.UserDataStore.User.Nickname : string.Empty); JobItems = new ObservableCollection <JobItem>(App.JobsDataStore.GetItems()); LoadItemsCommand = new Command(async() => await ExecuteLoadItemsCommand()); CurrentSearchItem = new JobsSearchItem(App.UserDataStore.User); MessagingCenter.Subscribe <JobsSearchItem>(this, MessagingHelper.SearchMessage, async(x) => await UpdateSearchItem(x)); MessagingCenter.Subscribe <User>(this, MessagingHelper.RegisteredMessage, async(x) => await UserRegistered(x)); }
public async Task <List <JobItem> > GetJobsAsync(JobsSearchItem jobSearchItem) { using (HttpClient client = new HttpClient()) { var queries = new List <string> { string.Format(_apiSettings.ApiSearch, jobSearchItem.SearchTerms), string.Format(_apiSettings.ApiFullTime, jobSearchItem.FullTime), }; if (jobSearchItem.UseGeolocation) { queries.Add(string.Format(_apiSettings.ApiLat, jobSearchItem.Latitude)); queries.Add(string.Format(_apiSettings.ApiLong, jobSearchItem.Longitude)); } else { queries.Add(string.Format(_apiSettings.ApiLocation, jobSearchItem.Location)); } var uri = BuildGetUri(queries); try { var response = await client.GetAsync(uri); if (response != null && response.IsSuccessStatusCode) { var resTxt = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <List <JobItem> >(resTxt)); } else { return(null); } } catch (ArgumentNullException argumentError) { return(null); } catch (HttpRequestException httpError) { return(null); } }; }
private async Task UpdateSearchItem(JobsSearchItem newSearchItem) { CurrentSearchItem = newSearchItem; await ExecuteLoadItemsCommand(); }