/// <summary> /// Inicializar router /// </summary> /// <param name="devices">Gestor de dispositivos</param> /// <param name="users">Gestor de usuarios</param> public void Init(DeviceManager devices, UserManager users) { m_devicesDataService = new DevicesDataService(); m_userManager = users; m_userManager.OnUserConnected += UserManager_OnUserConnected; m_userManager.OnUserDisconnected += UserManager_OnUserDisconnected; }
private static void AddInStoreDevices(SyncModel syncModel, int fromVersion) { IStoreDevicesDataService storeDevicesDataService = new StoreDevicesDataService(); IDevicesDataService devicesDataService = new DevicesDataService(); IExternalApiDataService externalApiDataService = new ExternalApiDataService(); var updatedExternalApis = externalApiDataService.List(e => e.DataVersion > fromVersion); var updatedDevices = devicesDataService.List(e => e.DataVersion > fromVersion); var allUpdatedStoreDevices = storeDevicesDataService.Query(e => e.DataVersion > fromVersion); var model = syncModel.StoreDeviceModels ?? (syncModel.StoreDeviceModels = new StoreDevicesModels()); //add or update model.ExternalApis = updatedExternalApis.Select(e => e.ToSyncModel()).ToList(); model.Devices = updatedDevices.Select(e => e.ToSyncModel()).ToList(); model.SiteDevices = new List <SiteDeviceScaffold>(); //model.SiteDevices = storeDevices.Select(e => e.ToSyncModel()).ToList(); //models to remove model.RemovedExternalApis = externalApiDataService .ListRemoved(e => e.DataVersion > fromVersion) .Select(e => e.ToSyncModel()) .ToList(); model.RemovedDevices = devicesDataService .ListRemoved(e => e.DataVersion > fromVersion) .Select(e => e.ToSyncModel()) .ToList(); model.RemovedSiteDevices = new List <SiteDeviceScaffold>(); //model.RemovedSiteDevices = storeDevicesDataService // .ListRemoved(e => e.DataVersion > fromVersion) // .Select(e => e.ToSyncModel()) // .ToList(); //a oddity arises if there is ever more than one device, and that store device is changed. foreach (var deviceGroup in allUpdatedStoreDevices.GroupBy(e => e.StoreId)) { //ignore the above, just interested in the stores as we are going to send all of them up. var storeDevices = storeDevicesDataService.Query(e => e.StoreId == deviceGroup.Key).ToList(); //remove all of them on ACS as its impossible to tell which item has switched on device changes. var remove = storeDevices.Select(e => e.ToSyncModel()).ToArray(); //and ... then add all those which are still not removed var addOrUpdate = storeDevices.Where(e => !e.Removed).Select(e => e.ToSyncModel()).ToArray(); //add to the export feed. model.RemovedSiteDevices.AddRange(remove); model.SiteDevices.AddRange(addOrUpdate); } //all done. }