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);
            });
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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());
            }
        }