Exemplo n.º 1
0
        public JobsSearchPage(JobsSearchItem jobsSearchItem)
        {
            InitializeComponent();

            jobsSearchItem.UseGeolocation = false;

            var viewModel = new JobsSearchViewModel(this, Navigation, jobsSearchItem);

            BindingContext = viewModel;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
                }
            };
        }
Exemplo n.º 5
0
 private async Task UpdateSearchItem(JobsSearchItem newSearchItem)
 {
     CurrentSearchItem = newSearchItem;
     await ExecuteLoadItemsCommand();
 }