public bool CoordsAtFeeder(double lat, double lng) { if (!hasFeederCoords) { SettingsRepository settingsRepo = new SettingsRepository(_context); SyncedSettingRepository syncedSettingsRepo = new SyncedSettingRepository(_context); var syncedSettings = syncedSettingsRepo.GetAll().FirstOrDefault(); if (syncedSettings != null) { feederNorthLatitude = syncedSettings.FeederLatitude; feederWestLongitude = syncedSettings.FeederLongitude; feederDetectionRadiusYards = syncedSettings.FeederDetectionRadius; } else { feederNorthLatitude = settingsRepo.GetSettingDoubleValue(GinAppSettingKeys.GIN_FEEDER_NORTH); feederWestLongitude = settingsRepo.GetSettingDoubleValue(GinAppSettingKeys.GIN_FEEDER_WEST); feederDetectionRadiusYards = settingsRepo.GetSettingDoubleValue(GinAppSettingKeys.GIN_FEEDER_DETECTION_RADIUS); } hasFeederCoords = true; } var feederPoint = new GeoCoordinate(feederNorthLatitude, feederWestLongitude); var dropPoint = new GeoCoordinate(lat, lng); var distanceBetween = feederPoint.GetDistanceTo(dropPoint); var distanceInYards = distanceBetween * 0.9144; // convert to yards if (lat == 0.000 || lng == 0.000) { return(false); } else if (distanceInYards <= feederDetectionRadiusYards) { return(true); } else { return(false); } }
public bool CoordsOnGinYard(double lat, double lng) { SettingsRepository settingsRepo = new SettingsRepository(_context); SyncedSettingRepository syncedSettingsRepo = new SyncedSettingRepository(_context); if (!hasYardCoords) { var syncedSettings = syncedSettingsRepo.GetAll().FirstOrDefault(); if (syncedSettings != null) { yardNorthwestCornerLatitude = syncedSettings.GinYardNWLat; yardNorthWestCornerLongitude = syncedSettings.GinYardNWLong; yardSouthEastCornerLatitude = syncedSettings.GinYardSELat; yardSouthEastCornerLongitude = syncedSettings.GinYardSELong; } else { yardNorthwestCornerLatitude = settingsRepo.GetSettingDoubleValue(GinAppSettingKeys.GIN_YARD_NW_CORNER_NORTH); yardNorthWestCornerLongitude = settingsRepo.GetSettingDoubleValue(GinAppSettingKeys.GIN_YARD_NW_CORNER_WEST); yardSouthEastCornerLatitude = settingsRepo.GetSettingDoubleValue(GinAppSettingKeys.GIN_YARD_SE_CORNER_NORTH); yardSouthEastCornerLongitude = settingsRepo.GetSettingDoubleValue(GinAppSettingKeys.GIN_YARD_SE_CORNER_WEST); } hasYardCoords = true; } if (lat == 0.000 || lng == 0.000) { return(false); } else if (lat <= yardNorthwestCornerLatitude && lat >= yardSouthEastCornerLatitude && lng >= yardNorthWestCornerLongitude && lng <= yardSouthEastCornerLongitude) { return(true); } else { return(false); } }
public string GetListIDWithSerialNumber(string serial, double lat, double lng, PickupListDestination dest) { var result = _context.PickupLists.Include("AssignedModules").FirstOrDefault(p => p.AssignedModules.Any(m => m.Name == serial) && p.Destination == dest); var module = _context.Modules.Include("Field.Farm.Client").SingleOrDefault(m => m.Name == serial); if (result != null) { return(result.Id); } //if unassigned list already exists just return it result = _context.PickupLists.Include("AssignedModules").FirstOrDefault(p => p.Id == GUIDS.UNASSIGNED_LIST_ID); if (result != null) { return(result.Id); } var settingsRepo = new SettingsRepository(_context); var syncedSettingsRepo = new SyncedSettingRepository(_context); var syncedSettings = syncedSettingsRepo.GetAll().FirstOrDefault(); var fieldRepo = new FieldRepository(_context); var farmRepo = new FarmRepository(_context); var clientRepo = new ClientRepository(_context); var truck = settingsRepo.GetCurrentTruck(); ClientEntity client = null; FarmEntity farm = null; FieldEntity field = null; if (module == null) //if no module already exists then create an un-assigned list { client = clientRepo.GetById(GUIDS.UNASSIGNED_CLIENT_ID); if (client == null) { client = new ClientEntity(); client.Id = GUIDS.UNASSIGNED_CLIENT_ID; client.Name = "Unassigned"; client.Created = DateTime.UtcNow; client.Source = InputSource.TRUCK; _context.Clients.Add(client); } farm = farmRepo.GetById(GUIDS.UNASSIGNED_FARM_ID); if (farm == null) { farm = new FarmEntity(); farm.Id = GUIDS.UNASSIGNED_FARM_ID; farm.ClientId = client.Id; farm.SyncedToCloud = true; farm.Source = InputSource.TRUCK; farm.Name = "Unassigned"; farm.Created = DateTime.UtcNow; _context.Farms.Add(farm); } field = fieldRepo.GetById(GUIDS.UNASSIGNED_FIELD_ID); if (field == null) { field = new FieldEntity(); field.Id = GUIDS.UNASSIGNED_FIELD_ID; field.FarmId = farm.Id; field.SyncedToCloud = true; field.Source = InputSource.TRUCK; field.Name = "Unassigned"; field.Created = DateTime.UtcNow; _context.Fields.Add(field); } } else { client = module.Field.Farm.Client; farm = module.Field.Farm; field = module.Field; } PickupListEntity list = new PickupListEntity(); list.Id = GUIDS.UNASSIGNED_LIST_ID; list.Latitude = lat; list.Longitude = lng; list.Source = InputSource.TRUCK; list.ModulesPerLoad = (syncedSettings != null) ? syncedSettings.ModulesPerLoad : 4; list.FieldId = field.Id; list.Name = "Unassigned"; list.PickupListStatus = PickupListStatus.OPEN; list.SyncedToCloud = true; list.Created = DateTime.UtcNow; list.AssignedTrucks = new List <TruckEntity>(); list.DownloadedToTrucks = new List <TruckEntity>(); list.Destination = dest; list.AssignedTrucks.Add(truck); list.DownloadedToTrucks.Add(truck); _context.PickupLists.Add(list); _context.SaveChanges(); //List<string> serialsToMove = new List<string>(); //serialsToMove.Add(serial); //this.MoveModulesToList(list, serialsToMove); return(list.Id); }