| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- using System;
 
- using System.Linq;
 
- using System.Threading.Tasks;
 
- using Comal.Classes;
 
- using InABox.Clients;
 
- using InABox.Core;
 
- namespace comal.timesheets
 
- {
 
-     public delegate void DataChangedEvent(object sender, Type t, Exception e);
 
-     public delegate void DataRefreshedEvent();
 
-     public class DataModel
 
-     {
 
-         public event DataRefreshedEvent DataRefreshed;
 
-         public event DataChangedEvent DataChanged;
 
-         public Employee Employee { get; private set; }
 
-         public CoreTable TimeSheets { get; set; }
 
-         public CoreTable Gates { get; private set; }
 
-         public CoreTable Jobs { get; private set; }
 
-         public bool CanBypassGates { get; private set; }
 
-         public DataModel()
 
-         {
 
-         }
 
-         public void Refresh(bool canbypassgates)
 
-         {
 
-             CanBypassGates = canbypassgates;
 
-             Task.Run(() =>
 
-             {
 
-                 try
 
-                 {
 
-                     new Client<TimeSheet>().Query(
 
-                         new Filter<TimeSheet>(x => x.EmployeeLink.UserLink.ID).IsEqualTo(ClientFactory.UserGuid)
 
-                             .And(x => x.Date).IsEqualTo(DateTime.Today)
 
-                             .And(x => x.Finish).IsEqualTo(new TimeSpan()),
 
-                         new Columns<TimeSheet>(
 
-                             x => x.ID,
 
-                             x => x.Date,
 
-                             x => x.Start,
 
-                             x => x.Notes,
 
-                             x => x.JobLink.ID,
 
-                             x => x.JobLink.JobNumber,
 
-                             x => x.JobLink.Name,
 
-                             x => x.ActivityLink.ID,
 
-                             x => x.ActivityLink.Code,
 
-                             x => x.ActivityLink.Description,
 
-                             x => x.StartLocation.Latitude,
 
-                             x => x.StartLocation.Longitude,
 
-                             x => x.StartLocation.Timestamp
 
-                         ),
 
-                         null,
 
-                         (data, error) =>
 
-                         {
 
-                             TimeSheets = data;
 
-                             DataChanged?.Invoke(this, typeof(TimeSheet), error);
 
-                         }
 
-                     );
 
-                     new Client<Employee>().Query(
 
-                         new Filter<Employee>(x => x.UserLink.ID).IsEqualTo(ClientFactory.UserGuid),
 
-                         new Columns<Employee>(
 
-                             x => x.ID,
 
-                             x => x.Name
 
-                         ),
 
-                         null,
 
-                         (o, e) =>
 
-                         {
 
-                             Employee = o?.Rows.FirstOrDefault()?.ToObject<Employee>();
 
-                             DataChanged?.Invoke(this, typeof(Employee), e);
 
-                         }
 
-                     );
 
-                     if (canbypassgates)
 
-                     {
 
-                         new Client<Job>().Query(
 
-                             new Filter<Job>(X => X.Completed).IsEqualTo(DateTime.MinValue).And(x => x.JobStatus.Active).IsEqualTo(true),
 
-                             new Columns<Job>(
 
-                                 X => X.ID,
 
-                                 X => X.JobNumber,
 
-                                 X => X.Name,
 
-                                 X => X.SiteAddress.Location.Latitude,
 
-                                 X => X.SiteAddress.Location.Longitude
 
-                             ),
 
-                             new SortOrder<Job>(x => x.JobNumber),
 
-                             (o, e) =>
 
-                             {
 
-                                 Jobs = o;
 
-                                 DataChanged?.Invoke(this, typeof(Job), e);
 
-                             }
 
-                         );
 
-                     }
 
-                     else
 
-                     {
 
-                         new Client<JobTracker>().Query(
 
-                             new Filter<JobTracker>(x => x.Active).IsEqualTo(true),
 
-                             new Columns<JobTracker>(
 
-                                 x => x.JobLink.ID,
 
-                                 x => x.JobLink.JobNumber,
 
-                                 x => x.JobLink.Name,
 
-                                 x => x.TrackerLink.DeviceID,
 
-                                 x => x.Gate,
 
-                                 x => x.IsJobSite
 
-                             ),
 
-                             null,
 
-                             (o, e) =>
 
-                             {
 
-                                 Gates = o;
 
-                                 DataChanged?.Invoke(this, typeof(JobTracker), e);
 
-                             }
 
-                         );
 
-                     }
 
-                     DataRefreshed?.Invoke();
 
-                 }
 
-                 catch { }
 
-             });
 
-         }
 
-     }
 
- }
 
 
  |