예제 #1
0
        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); });
                    }
                }
            }
        }
예제 #2
0
        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); });
                    }
                }
            }
        }
예제 #3
0
        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 ); });
                            }
                        }
                    }
                }
            }
        }