コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }