private void DeleteBaseStationFromAccount(RESTRequestStatus response, String sessionid, BaseStation baseStation, string devicetoken) { SilentNotification notification = null; List <string> devicesTokens; if (DataLayer.DeleteBaseStation(response, baseStation)) { if (DataLayer.GetBaseStationsWithSessionId(response, sessionid)) { response.statuscode = RESTRequestStatusCode.success; response.status = RESTRequestStatusCode.success.ToString( ); notification = new SilentNotification(baseStation); notification.NotificationType = Constants.delete; DataLayer.GetDeviceTokensForAccount(baseStation.AccountNo, out devicesTokens); devicesTokens.Remove(devicetoken); if (devicesTokens.Count > 0) { Task.Factory.StartNew(() => { NotificationController.PushNotification(notification, devicesTokens); }); } } } }
private void AssociateBaseStationWithAccount(RESTRequestStatus response, String sessionid, BaseStation baseStation, String devicetoken) { SilentNotification notification = null; Int64 accountNo = 0; List <string> devicesTokens; if (DataLayer.AssociateBaseStationWithAccount(response, sessionid, baseStation)) { if (DataLayer.GetBaseStationsWithSessionId(response, sessionid)) { accountNo = DataLayer.GetAccountNoUsingSessionId(sessionid); response.statuscode = RESTRequestStatusCode.success; response.status = RESTRequestStatusCode.success.ToString( ); notification = new SilentNotification(baseStation); notification.NotificationType = Constants.add; DataLayer.GetDeviceTokensForAccount(accountNo, out devicesTokens); if (devicesTokens == null) { return; } devicesTokens.Remove(devicetoken); if (devicesTokens.Count > 0) { Task.Factory.StartNew(() => { NotificationController.PushNotification(notification, devicesTokens); }); } } } }
static public void SyncSensor(RESTRequestStatus response, Sensor sensor, string syncitems, string devicetoken) { IDictionary <string, string> baseStationSyncItemsDic = JsonConvert.DeserializeObject <Dictionary <string, string> >(syncitems); Notification notification; List <string> devicesTokens; Int64 totalTimeStamps; Int64 totalTimeStampSync; Int64 nameTimeStamp = 0; Int64 tempUnitTimeStamp = 0; Int64 descriptionTimeStamp = 0; string value; if (baseStationSyncItemsDic.TryGetValue(Constants.keyNameTimeStamp, out value)) { nameTimeStamp = Convert.ToInt64(value); } if (baseStationSyncItemsDic.TryGetValue(Constants.keyTempUnitTimeStamp, out value)) { tempUnitTimeStamp = Convert.ToInt64(value); } if (baseStationSyncItemsDic.TryGetValue(Constants.keyUserDescriptionTimeStamp, out value)) { descriptionTimeStamp = Convert.ToInt64(value); } totalTimeStamps = sensor.NameTimeStamp + sensor.UserDescriptionTimeStamp; totalTimeStampSync = nameTimeStamp + descriptionTimeStamp; if (totalTimeStampSync == totalTimeStamps) { response.response = Constants.synced; response.statuscode = RESTRequestStatusCode.success; response.status = RESTRequestStatusCode.success.ToString( ); return; } if (totalTimeStampSync != totalTimeStamps) { foreach (KeyValuePair <string, string> pair in baseStationSyncItemsDic) { if (pair.Key.Equals(Constants.keyName)) { if (nameTimeStamp > sensor.NameTimeStamp) { sensor.Name = Convert.ToString(pair.Value); sensor.NameTimeStamp = nameTimeStamp; } } else if (pair.Key.Equals(Constants.keyUserDescription)) { if (descriptionTimeStamp > sensor.UserDescriptionTimeStamp) { sensor.UserDescription = Convert.ToString(pair.Value); sensor.UserDescriptionTimeStamp = descriptionTimeStamp; } } } totalTimeStamps = sensor.NameTimeStamp + sensor.UserDescriptionTimeStamp; if (totalTimeStampSync != totalTimeStamps) { response.info.Add(Constants.totalTimeStamps, totalTimeStamps.ToString( )); response.info.Add(Constants.keyName, sensor.Name); response.info.Add(Constants.keyUserDescription, sensor.UserDescription); response.info.Add(Constants.keyNameTimeStamp, sensor.NameTimeStamp.ToString( )); response.info.Add(Constants.keyUserDescriptionTimeStamp, sensor.UserDescriptionTimeStamp.ToString( )); if (DataLayer.UpdateSensor(response, sensor)) { response.response = Constants.needsSyncing; } else { if (DataLayer.UpdateSensor(response, sensor)) { response.statuscode = RESTRequestStatusCode.success; response.status = RESTRequestStatusCode.success.ToString( ); response.response = Constants.synced; notification = new SilentNotification(sensor); notification.NotificationType = Constants.needsSyncing; DataLayer.GetDeviceTokensForAccount(sensor.AccountNo, out devicesTokens); devicesTokens.Remove(devicetoken); if (devicesTokens.Count > 0) { //Task.Factory.StartNew(() => { PushNotification( notification , devicesTokens ); }); } } } } } }