| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Threading.Tasks;
 
- using Xamarin.Forms;
 
- using Xamarin.Forms.Maps;
 
- using InABox.Core;
 
- using Comal.Classes;
 
- using XF.Material.Forms.UI.Dialogs;
 
- namespace comal.timesheets
 
- {
 
-     public class GPSJobModel
 
-     {
 
-         public String JobNumber { get; set; }
 
-         public String JobName { get; set; }
 
-         public double Distance { get; set; }
 
-     }
 
-     public partial class GPSInfoPage : ContentPage
 
-     {
 
-         Location _here = null;
 
-         CoreTable _jobs = null;
 
-         public void GetLocation(double latitude, double longitude)
 
-         {
 
-             Task.Run(async () =>
 
-             {
 
-                 String address = "";
 
-                 var coder = new Geocoder();
 
-                 var location = await coder.GetAddressesForPositionAsync(new Xamarin.Forms.Maps.Position(latitude, longitude));
 
-                 if (location.Any())
 
-                     address = location.First();
 
-                 Device.BeginInvokeOnMainThread(() => { Location.Text = address; });
 
-             });
 
-         }
 
-         public GPSInfoPage(CoreTable jobs)
 
-         {
 
-             _here = new Location() { Latitude = App.GPS.Latitude, Longitude = App.GPS.Longitude };
 
-             _jobs = jobs;
 
-             InitializeComponent();
 
-             NavigationPage.SetHasBackButton(this, false);
 
-             ToolbarItems.Clear();
 
-             ToolbarItems.Add(new ToolbarItem("Back", "", () =>
 
-             {
 
-                 Navigation.PopAsync();
 
-             }));
 
-             Title = "GPS Info";
 
-             GetLocation(App.GPS.Latitude, App.GPS.Longitude);
 
-             TimeStamp.Text = String.Format("{0:dd/MM/yy hh:mm:ss tt}", App.GPS.TimeStamp);
 
-         }
 
-         protected override async void OnAppearing()
 
-         {
 
-             base.OnAppearing();
 
-             await LoadData();
 
-         }
 
-         private async Task LoadData()
 
-         {
 
-             using (await MaterialDialog.Instance.LoadingDialogAsync(message: "Loading Data"))
 
-             {
 
-                 
 
-                 List<GPSJobModel> jobmodel = new List<GPSJobModel>();
 
-                 if (_jobs != null)
 
-                 {
 
-                     foreach (CoreRow row in _jobs.Rows)
 
-                     {
 
-                         Location job = new Location()
 
-                         {
 
-                             Latitude = row.Get<Job, double>(x => x.SiteAddress.Location.Latitude),
 
-                             Longitude = row.Get<Job, double>(x => x.SiteAddress.Location.Longitude),
 
-                         };
 
-                         if ((job.Latitude != 0.0F) && (job.Longitude != 0.0F))
 
-                         {
 
-                             jobmodel.Add(
 
-                                 new GPSJobModel()
 
-                                 {
 
-                                     JobNumber = row.Get<Job, String>(x => x.JobNumber),
 
-                                     JobName = row.Get<Job, String>(x => x.Name),
 
-                                     Distance = _here.DistanceTo(job, UnitOfLength.Kilometers),
 
-                                 }
 
-                             );
 
-                         }
 
-                     }
 
-                 }
 
-                 Device.BeginInvokeOnMainThread(
 
-                     () =>
 
-                     {
 
-                         JobList.ItemsSource = null;
 
-                         JobList.ItemsSource = jobmodel;
 
-                     }
 
-                 );
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |