public void Initialize() { MapVisible = defaultToMap; var lastCoords = GPSDataProvider.GetLastCoords(DateTime.Now.ToUniversalTime().AddSeconds(-5), DateTime.Now.ToUniversalTime()); CurrentLat = CottonDBMS.DataModels.Helpers.GPSHelper.SafeLat(lastCoords); CurrentLong = CottonDBMS.DataModels.Helpers.GPSHelper.SafeLong(lastCoords); FieldLat = 0.000; FieldLong = 0.000; HasCheckedModules = false; using (var uow = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { if (InitiatingEvent != null) //find the list based on serial number { PickupListDestination dest = PickupListDestination.GIN_YARD; if (uow.SettingsRepository.CoordsOnGinYard(CurrentLat, CurrentLong) || uow.SettingsRepository.CoordsAtFeeder(CurrentLat, CurrentLong)) { dest = PickupListDestination.GIN_FEEDER; } ListID = uow.PickupListRepository.GetListIDWithSerialNumber(InitiatingEvent.SerialNumber, CurrentLat, CurrentLong, dest); } } LoadData(ListID); Messenger.Default.Register <GPSEventMessage>(this, (action) => ProcessGPSMessage(action)); Messenger.Default.Register <TagLoadingMessage>(this, (action) => ProcessTagLoadingMessage(action)); Messenger.Default.Register <AggregateEvent>(this, (action) => ProcessAggregatedEvent(action)); if (InitiatingEvent != null) { ProcessTagLoadingMessage(InitiatingEvent); } Task.Run(() => { checkForInternet(); timer = new System.Threading.Timer(timerCallback, null, 500, 1000); }); }
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); }
private void initList() { //load assigned modules into grid PickupListDestination dest = (PickupListDestination)Convert.ToInt32(((BaseEntity)cboDestination.SelectedItem).Id); IEnumerable <ModuleEntity> availableFieldModules = null; if (!fieldSelector.ExistingSelected && !fieldSelector.IsNew) { mapBrowser.Visible = false; lblCheckInfo.Visible = false; pnlTruckStep.Visible = false; availableModulesGridView.Visible = false; return; } if (fieldSelector.ExistingSelected) { var listId = (dataObj != null) ? dataObj.Id : ""; availableModulesGridView.Visible = false; lblCheckInfo.Visible = true; lblCheckInfo.Text = "Loading modules..."; using (var uow = UnitOfWorkFactory.CreateUnitOfWork()) { availableFieldModules = uow.PickupListRepository.GetAvailableModulesForPickupList(listId, fieldSelector.SelectedFieldId, dest); } } if (availableFieldModules != null && availableFieldModules.Count() > 0) //field has modules so show list { availableModulesGridView.DataSource = null; availableModulesGridView.AutoGenerateColumns = false; availableModulesGridView.DataSource = availableFieldModules; availableModulesGridView.Columns[0].ReadOnly = ReadOnly; mapBrowser.Visible = false; lblCheckInfo.Visible = true; pnlTruckStep.Visible = false; } else //field doesn't have any modules in the system or we're creating a new field { string currentDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); currentDir = currentDir.TrimEnd('\\') + "\\Html"; string appDataGinDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).TrimEnd('\\') + "\\" + FolderConstants.ROOT_APP_DATA_FOLDER + "\\" + FolderConstants.GIN_APP_DATA_FOLDER; //read html file string htmlSource = System.IO.File.ReadAllText(currentDir + "\\EmbeddedMap.html"); string htmlSourceWithMapsKey = htmlSource.Replace("{MAPS_KEY}", ConfigHelper.GoogleMapsKey); System.IO.File.WriteAllText(appDataGinDir + "\\EmbeddedMapWithKey.html", htmlSourceWithMapsKey); mapBrowser.ObjectForScripting = this; this.mapBrowser.Url = new Uri(String.Format("file:///{0}/EmbeddedMapWithKey.html?id=" + Guid.NewGuid().ToString(), appDataGinDir)); //need to send default coordinates for field if available if not send gin yard coordinates. mapBrowser.Visible = true; lblCheckInfo.Visible = true; availableModulesGridView.Visible = false; mapBrowser.DocumentCompleted -= mapBrowser_DocumentCompleted; documentCompleted = false; mapBrowser.DocumentCompleted += mapBrowser_DocumentCompleted; } pnlModuleStep.Enabled = true; }
public IEnumerable <ModuleEntity> GetAvailableModulesForPickupList(string listId, string fieldId, PickupListDestination destination) { //get list of modules for this field that are on any pickup list with same destination //var modulesForField = _context.Modules.Where(m => m.FieldId == fieldId).ToList(); List <string> moduleIdsOnPickupList = null; if (destination == PickupListDestination.GIN_YARD) { moduleIdsOnPickupList = _context.PickupLists.Include("AssignedModules").Where(p => p.FieldId == fieldId && p.Id != listId && p.Destination == PickupListDestination.GIN_YARD).SelectMany(p => p.AssignedModules).Where(m => m.ModuleStatus == ModuleStatus.IN_FIELD).Select(m => m.Id).ToList(); return(_context.Modules.Where(m => !moduleIdsOnPickupList.Contains(m.Id) && m.FieldId == fieldId && m.ModuleStatus == ModuleStatus.IN_FIELD).OrderBy(t => t.Name).ToList()); } else { moduleIdsOnPickupList = _context.PickupLists.Include("AssignedModules").Where(p => p.FieldId == fieldId && p.Id != listId && p.Destination == PickupListDestination.GIN_FEEDER).SelectMany(p => p.AssignedModules).Where(m => m.ModuleStatus == ModuleStatus.AT_GIN).Select(m => m.Id).ToList(); return(_context.Modules.Where(m => !moduleIdsOnPickupList.Contains(m.Id) && m.FieldId == fieldId && m.ModuleStatus == ModuleStatus.AT_GIN).OrderBy(t => t.Name).ToList()); } }