private RESTRequestStatus ChangePassword(string accountname, string password, string newpassword, string sessionid)
        {
            RESTRequestStatus result = new RESTRequestStatus(RESTRequestStatusCode.failed);

            Hashtable infoDic = new Hashtable(2);

            if (DataLayer.IsValidSession(sessionid, Request.Host.Host))
            {
                if (DataLayer.ChangeAccountPassword(accountname, password, newpassword))
                {
                    //Task email =
                    SendEmail(accountname,
                              Constants.passwordChangedTitleMessage,
                              Constants.passwordChangedMessage);

                    infoDic.Add(Constants.keyAccountName, accountname);
                    infoDic.Add(Constants.keyPassword, newpassword);

                    result.info       = infoDic;
                    result.statuscode = RESTRequestStatusCode.success;
                    result.status     = RESTRequestStatusCode.success.ToString( );
                }
                else
                {
                    result.statuscode = RESTRequestStatusCode.failed;
                    result.status     = RESTRequestStatusCode.failed.ToString( );
                }
            }

            return(result);
        }
Exemple #2
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); });
                    }
                }
            }
        }
        private RESTRequestStatus ForgotPassword(string accountname)
        {
            RESTRequestStatus result = new RESTRequestStatus(RESTRequestStatusCode.failed);

            string newpassword = "";

            if (DataLayer.ResetAccountPassword(accountname, out newpassword))
            {
                //Task email =
                SendEmail(accountname,
                          Constants.resetPasswordMessage,
                          $"Please login to Fluid Automation (Click on Link) and change the provided temporary password: {newpassword}");

                //email.Wait();

                result.statuscode = RESTRequestStatusCode.success;
                result.status     = RESTRequestStatusCode.success.ToString( );
                result.response   = accountname;
            }
            else
            {
                result.statuscode = RESTRequestStatusCode.failed;
                result.status     = RESTRequestStatusCode.failed.ToString( );
            }

            return(result);
        }
Exemple #4
0
        static public bool ProceedWithRequest(RESTRequestStatus response, string appkey, string sessionId, HttpRequest request)
        {
            bool ret = false;

            if (Security.Security.ValidRequest(appkey))
            {
                if (DataLayer.Connect( ) == true)
                {
                    if (DataLayer.IsValidSession(sessionId, request.HttpContext.Connection.RemoteIpAddress.ToString( )) == true)
                    {
                        ret = true;
                    }
                    else
                    {
                        response.statuscode = RESTRequestStatusCode.invalidsessionid;
                        response.status     = RESTRequestStatusCode.invalidsessionid.ToString( );
                    }
                }
                else
                {
                    response.statuscode = RESTRequestStatusCode.databaseerror;
                    response.status     = RESTRequestStatusCode.databaseerror.ToString( );
                }
            }
            else
            {
                response.statuscode = RESTRequestStatusCode.invalidappKey;
                response.status     = RESTRequestStatusCode.invalidappKey.ToString( );
            }

            return(ret);
        }
Exemple #5
0
        public RESTRequestStatus Post(string appkey,
                                      string sessionid,
                                      string deviceToken,
                                      string platform,
                                      Int64 accountno
                                      )
        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.unknown);

            if (AppController.ProceedWithRequest(response, appkey, sessionid, Request) == false)
            {
                return(response);
            }

            string fullpath = Request.Path;
            string op       = fullpath.Substring("/fluid/account/".Length, fullpath.Length - "/fluid/account/".Length);

            switch (op)
            {
            case Constants.device:
                if (DataLayer.AddDeviceToAccount(response, accountno, deviceToken, platform))
                {
                    response.statuscode = RESTRequestStatusCode.success;
                    response.status     = RESTRequestStatusCode.success.ToString( );
                }
                break;
            }

            return(response);
        }
Exemple #6
0
 private void GetBaseStationsForAccount(RESTRequestStatus response, String sessionid)
 {
     if (DataLayer.GetBaseStationsWithSessionId(response, sessionid))
     {
         response.statuscode = RESTRequestStatusCode.success;
         response.status     = RESTRequestStatusCode.success.ToString( );
     }
 }
Exemple #7
0
        public string Post(string sessionid,
                           string macaddress,
                           string sensor_macaddress,
                           string hwtype,
                           string hwversion,
                           string fwversion,
                           string name,
                           Int64 timestamp,
                           string description)
        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.unknown);

            if (!string.IsNullOrEmpty(sessionid))
            {
                if (DataLayer.Connect( ))
                {
                    if (DataLayer.IsValidSession(sessionid, Request.HttpContext.Connection.RemoteIpAddress.ToString( )))
                    {
                        string fullpath = Request.Path;
                        string op       = fullpath.Substring("/fluid/app/".Length, fullpath.Length - "/fluid/app/".Length);

                        switch (op)
                        {
                        case Constants.associateSensor:
                            if (DataLayer.AssociateSensorWithAccount(response, sessionid, macaddress, sensor_macaddress, hwtype, hwversion, fwversion))
                            {
                                response.statuscode = RESTRequestStatusCode.ok;
                                response.status     = RESTRequestStatusCode.ok.ToString( );
                            }
                            else
                            {
                                response.statuscode = RESTRequestStatusCode.failed;
                                response.status     = RESTRequestStatusCode.failed.ToString( );
                            }
                            break;
                        }
                    }
                    else
                    {
                        response.statuscode = RESTRequestStatusCode.invalidsessionid;
                        response.status     = RESTRequestStatusCode.invalidsessionid.ToString( );
                    }

                    DataLayer.CloseConnection( );
                } //  Connect
                else
                {
                    response.statuscode = RESTRequestStatusCode.databaseerror;
                }
            }
            else
            {
                response.statuscode = RESTRequestStatusCode.missingsessionid;
                response.status     = RESTRequestStatusCode.missingsessionid.ToString( );
            }

            return(response.ToJson( ));
        }
Exemple #8
0
        public RESTRequestStatus Put(string appkey,
                                     string sessionid,
                                     Int64 cloudid,
                                     string syncitems,
                                     string devicetoken

                                     )
        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.unknown);

            Account account   = null;
            Int64   accountNo = 0;

            if (AppController.ProceedWithRequest(response, appkey, sessionid, Request) == false)
            {
                return(response);
            }

            string fullpath = Request.Path;
            string op       = fullpath.Substring("/fluid/sync/".Length, fullpath.Length - "/fluid/sync/".Length);

            switch (op)
            {
            case Constants.basestation:


                //IDictionary<string , string> baseStationSyncItemsDic = JsonConvert.DeserializeObject<Dictionary<string , string>>( syncitems );


                accountNo = DataLayer.GetAccountNoUsingSessionId(sessionid);

                account = DataLayer.GetAccount(accountNo);

                BaseStation baseStation = DataLayer.GetBaseStation(response, cloudid, account);

                if (baseStation.CloudId == cloudid)
                {
                    SyncBaseStation(response, baseStation, syncitems, devicetoken);
                }

                break;

            case Constants.sensor:

                Sensor sensor = DataLayer.GetSensor(response, cloudid);


                if (sensor.CloudId.Equals(cloudid))
                {
                    SyncSensor(response, sensor, syncitems, devicetoken);
                }

                break;
            }

            return(response);
        }
Exemple #9
0
        public RESTRequestStatus Post(string appkey,
                                      string sessionid,
                                      Int64 cloudId,
                                      Int64 totalTimeStampSync
                                      )
        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.unknown);

            Account account   = null;
            Int64   accountNo = 0;


            if (AppController.ProceedWithRequest(response, appkey, sessionid, Request) == false)
            {
                return(response);
            }

            string fullpath = Request.Path;
            string op       = fullpath.Substring("/fluid/sync/".Length, fullpath.Length - "/fluid/sync/".Length);

            switch (op)
            {
            case Constants.basestation:

                accountNo = DataLayer.GetAccountNoUsingSessionId(sessionid);

                account = DataLayer.GetAccount(accountNo);

                BaseStation baseStation = DataLayer.GetBaseStation(response, cloudId, account);

                if (baseStation.CloudId == cloudId)
                {
                    Int64 totalTimeStamps;

                    response.statuscode = RESTRequestStatusCode.success;
                    response.status     = RESTRequestStatusCode.success.ToString( );

                    totalTimeStamps = baseStation.NameTimeStamp +
                                      baseStation.TempUnitTimeStamp +
                                      baseStation.UserDescriptionTimeStamp;

                    if (totalTimeStampSync != totalTimeStamps)
                    {
                        response.response = Constants.needsSyncing;
                    }
                    else
                    {
                        response.response = Constants.synced;
                    }
                }

                break;
            }

            return(response);
        }
Exemple #10
0
        public RESTRequestStatus  Get(string op)
        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.unknown);


            if (Security.Security.ValidRequest(op) == true)
            {
                response.statuscode = RESTRequestStatusCode.success;
                response.status     = RESTRequestStatusCode.success.ToString( );

                return(response);
            }

            return(response);
        }
Exemple #11
0
        public RESTRequestStatus Put(string appkey,
                                     string sessionid,
                                     Int64 cloudId,
                                     Int64 totalTimeStampSync,
                                     string baseStationSyncItems

                                     )
        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.unknown);

            if (AppController.ProceedWithRequest(response, appkey, sessionid, Request) == false)
            {
                return(response);
            }

            return(response);
        }
Exemple #12
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); });
                    }
                }
            }
        }
Exemple #13
0
        public RESTRequestStatus Put(string op,
                                     string appkey,
                                     string sessionid,
                                     string macaddress,
                                     string hwtype,
                                     string hwversion,
                                     string fwversion)
        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.unknown);

            if (AppController.ProceedWithRequest(response, appkey, sessionid, Request) == false)
            {
                return(response);
            }
            switch (op)
            {
            case Constants.notify:

                Int64 cloudId = DataLayer.GetBaseStationId(response, sessionid, macaddress);

                if (cloudId != 0)
                {
                    response.info.Add(Constants.keyCloudId, cloudId);
                    response.statuscode = RESTRequestStatusCode.ok;
                    response.status     = RESTRequestStatusCode.ok.ToString( );
                }
                else
                {
                    response.statuscode = RESTRequestStatusCode.notfound;
                    response.status     = RESTRequestStatusCode.notfound.ToString( );
                }
                break;
            }

            return(response);
        }
Exemple #14
0
        public RESTRequestStatus Post(
            string sessionid,
            string appkey,
            string macaddress,
            string status,
            string hwversion,
            string fwversion,
            string name,
            string description,
            string tempunit,
            string devicetoken,

            Int64 cloudId,
            Int64 descriptiontimestamp,
            Int64 nametimestamp,
            Int64 tempunittimestamp

            )

        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.unknown);

            BaseStation baseStation = null;
            Account     account     = null;
            Int64       accountNo;

            if (AppController.ProceedWithRequest(response, appkey, sessionid, Request) == false)
            {
                return(response);
            }

            string fullpath = Request.Path;

            string op = fullpath.Substring("/fluid/basestation/".Length, fullpath.Length - "/fluid/basestation/".Length);

            switch (op)
            {
            case Constants.basestations:

                GetBaseStationsForAccount(response, sessionid);

                break;


            case Constants.associateBasestation:


                baseStation = new BaseStation(macaddress,
                                              hwversion,
                                              fwversion,
                                              name,
                                              status,
                                              nametimestamp,
                                              description,
                                              descriptiontimestamp,
                                              tempunit,
                                              tempunittimestamp);

                AssociateBaseStationWithAccount(response, sessionid, baseStation, devicetoken);

                break;

            case Constants.delete:

                accountNo = DataLayer.GetAccountNoUsingSessionId(sessionid);

                account = DataLayer.GetAccount(accountNo);

                baseStation = DataLayer.GetBaseStation(response, cloudId, account);

                baseStation.Status = status;

                DeleteBaseStationFromAccount(response, sessionid, baseStation, devicetoken);

                break;
            }

            DataLayer.CloseConnection( );

            return(response);
        }
        public RESTRequestStatus Put(string appkey,
                                     string accounttype,
                                     string accountname,
                                     string password,
                                     string newpassword,
                                     string sessionid)
        {
            RESTRequestStatus response = new RESTRequestStatus(RESTRequestStatusCode.failed);

            if (Security.Security.ValidRequest(appkey) == false)
            {
                response.statuscode = RESTRequestStatusCode.invalidappKey;
                response.status     = RESTRequestStatusCode.invalidappKey.ToString( );

                return(response);
            }

            if (DataLayer.Connect( ) == false)
            {
                response.statuscode = RESTRequestStatusCode.databaseerror;
                response.status     = RESTRequestStatusCode.databaseerror.ToString( );

                DataLayer.CloseConnection( );

                return(response);
            }



            bool account_exists = DataLayer.AccountExists(accountname);

            string fullpath = Request.Path;
            string op       = fullpath.Substring("/fluid/authentication/".Length, fullpath.Length - "/fluid/authentication/".Length);

            switch (op)
            {
            case Constants.signup:

                if (!account_exists)
                {
                    DataLayer.CreateAccount(response, accounttype, accountname, password, Request.HttpContext.Connection.RemoteIpAddress.ToString( ));
                }
                else
                {
                    response.response = RESTRequestStatusCode.accountexists.ToString();
                }
                break;

            case Constants.login:
                if (account_exists)
                {
                    response = DataLayer.Login(accountname, password, Request.HttpContext.Connection.RemoteIpAddress.ToString());
                }
                break;

            case Constants.forgot:
                if (account_exists)
                {
                    response = ForgotPassword(accountname);
                }
                break;

            case Constants.changepassword:
                if (account_exists)
                {
                    response = ChangePassword(accountname, password, newpassword, sessionid);
                }
                break;

            case Constants.newsession:
                if (account_exists)
                {
                    Int64 session_id = 0;

                    if ((DataLayer.CreateSession(accountname, Request.HttpContext.Connection.RemoteIpAddress.ToString( ), out session_id)))
                    {
                        response.statuscode = RESTRequestStatusCode.success;
                        response.status     = Constants.statusSuccess;
                        response.sessionid  = session_id.ToString();
                        response.response   = accountname;
                    }
                }
                break;

            default:
                response.statuscode = RESTRequestStatusCode.invalidrequest;
                response.status     = Constants.unknownRestOperation;
                break;
            }

            DataLayer.CloseConnection( );

            return(response);
        }
Exemple #16
0
 static public void SyncRule(RESTRequestStatus response, Int64 ruleId)
 {
 }
Exemple #17
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 ); });
                            }
                        }
                    }
                }
            }
        }