Example #1
0
		/// <summary>
		/// Gets the user details from database.
		/// </summary>
		/// <returns>The user details from database.</returns>
		/// <param name="conn">Conn.</param>
		public Model.AuthenticatedUser GetUserDetailsFromDatabase(SQLiteConnection conn)
		{
			UserService userServiceObject = new UserService (conn);
			Model.AuthenticatedUser authenticatedUser = new Model.AuthenticatedUser ();
			try
            {
				var user=userServiceObject.GetUser();
				if(user!=null)
				{
					authenticatedUser.UserDetails = user;
					authenticatedUser.IsFirstTimeLoggedIn = false;
					if(authenticatedUser.UserDetails!=null && authenticatedUser.UserDetails.ExpiryDate!=null)
                    {
						authenticatedUser.IsTokenActive = this.CheckIfTokenIsActive(authenticatedUser.UserDetails.ExpiryDate);
					}
				}
                else
                {
					authenticatedUser.UserDetails = null;
					authenticatedUser.IsFirstTimeLoggedIn = true;
					authenticatedUser.IsTokenActive = false;
				}
			}
			catch(Exception ex)
            {
				Debug.WriteLine ("Exception occured at GetUserDetailsFromDatabase Method : "+ex.Message);
			}
			return authenticatedUser;
		}
        /// <summary>
        /// Connects to the BAL layer to get the authenticated user name
        /// </summary>
        /// <returns>The service.</returns>
        /// <param name="username">Username.</param>
        /// <param name="password">Password.</param>

        Model.AuthenticatedUser LoginToService(string username, string password)
        {
            LoginBAL loginBal = new LoginBAL(AppDelegate.DatabaseContext);

            Model.AuthenticatedUser user = loginBal.GetUserDetailsFromService(username, password);
            return(user);
        }
Example #3
0
		/// <summary>
		/// Gets the user details from service.
		/// </summary>
		/// <returns>The user details from service.</returns>
		/// <param name="userName">User name.</param>
		/// <param name="password">Password.</param>
		public Model.AuthenticatedUser GetUserDetailsFromService(String userName, String password)
		{
			IServices servicesObject = new Services();
			AuthenticationReq request = new AuthenticationReq();
			request.userName = userName;
			request.password = password;
			AuthenticationRes authenticationResult = null;
			Model.AuthenticatedUser authenticatedUser = new Model.AuthenticatedUser ();
			try
            {
			        UserService userServiceObject = new UserService (conn);
				    authenticationResult = servicesObject.authenticate (request);
				
				    bool isTokenActive = this.CheckIfTokenIsActive(authenticationResult.expiryTime);
				    authenticatedUser.IsFirstTimeLoggedIn = true;

			    if (authenticationResult.result != null) 
				    authenticatedUser.Result = authenticationResult.result;

				    if (!string.IsNullOrEmpty (authenticationResult.token))
				    {
						    authenticatedUser.UserDetails = new Model.User ();
						    authenticatedUser.UserDetails.Token = authenticationResult.token;
						    authenticatedUser.UserDetails.FirstName = authenticationResult.firstName;
						    authenticatedUser.UserDetails.LastName = authenticationResult.lastName;
						    authenticatedUser.UserDetails.ExpiryDate = authenticationResult.expiryTime;
						    authenticatedUser.IsTokenActive = isTokenActive;
							authenticatedUser.DBVersion=authenticationResult.DBVersion;
						    //Delete the previous exist users
						    userServiceObject.DeleteUser(conn);
						    //save the details of the user in the database
						    userServiceObject.SaveUser (authenticatedUser.UserDetails);
					    try 
                        {
				                var user=userServiceObject.GetUsers ().FirstOrDefault ();
						        if (user != null && authenticatedUser!=null)
                                {
							        authenticatedUser.UserDetails.ID = user.ID;
						        }
				        }
                        catch(Exception ex)
                        {
					    // To DO
				        }			
				    } 
			}
            catch(Exception ex) 
            {
			}
			return authenticatedUser;
		}
Example #4
0
 public IHttpActionResult PutAsync([FromBody] Model.AuthenticatedUser login)
 {
     try
     {
         TokenStorage.GetInstance().RemoveToken(login.Token);
         AuthenticatedUser authUser = new AuthenticatedUser();
         return(Ok(authUser));
     }
     catch (Exception ex)
     {
         // Write the excption to a log
         return(InternalServerError());
     }
 }
        /// <summary>
        /// On authentication completion, user moves to Dashboard
        /// </summary>
        /// <param name="authenticatedUser">Authenticated user.</param>
        private void MoveToDashBoard(Model.AuthenticatedUser authenticatedUser)
        {
            if (authenticatedUser.Result.code == 0 || authenticatedUser.Result.code == 1)
            {
                AppDelegate.startAutoSync();
                DashBoardViewController dashBoardViewController = this.Storyboard.InstantiateViewController("DashBoardViewController") as DashBoardViewController;
                dashBoardViewController.IsIntiatedFromAppDelegate = true;
                dashBoardViewController.IsFirstLogin = authenticatedUser.IsFirstTimeLoggedIn;
                DashBoardViewController.Token        = authenticatedUser.UserDetails.Token;
                DashBoardViewController.UserName     = string.Concat(authenticatedUser.UserDetails.FirstName, " ", authenticatedUser.UserDetails.LastName);

                this.NavigationController.PushViewController(dashBoardViewController, true);
            }
            else if (authenticatedUser.UserDetails != null && !authenticatedUser.IsTokenActive)
            {
                UIAlertView alert = new UIAlertView(@"Alert", @"Invalid Token", null, NSBundle.MainBundle.LocalizedString("OK", "OK"));
                alert.Show();
            }
        }
        /// <summary>
        /// Login button clicked method.
        /// Network Connectivity is checked.
        /// Authentication
        /// DB version is checked with the server and db updation happens according
        /// </summary>
        /// <param name="sender">Sender.</param>

        async partial void btnLogin_TouchUpInside(UIButton sender)
        {
            this.ResignFirstResponder();

            this.txtUserName.ResignFirstResponder();
            this.txtPassword.ResignFirstResponder();

            try
            {
                this.ResignFirstResponder();

                if (CrossConnectivity.Current.IsConnected == false)
                {
                    if (CrossConnectivity.Current.IsConnected == false)
                    {
                        UIAlertView alert = new UIAlertView(@"Alert", @"You are not connected to the network", null, NSBundle.MainBundle.LocalizedString("OK", "OK"));
                        alert.Show();
                        return;
                    }
                }

                if (txtUserName.Text.Length <= 0 || txtPassword.Text.Length <= 0)
                {
                    UIAlertView alert = new UIAlertView(@"Alert", @"Please fill in both username and password", null, NSBundle.MainBundle.LocalizedString("OK", "OK"));
                    alert.Show();
                    return;
                }

                if (txtUserName.Text.ToUpper() == Constants.AdminUserID && txtPassword.Text.ToUpper() == Constants.AdminPassword)
                {
                    config con = this.Storyboard.InstantiateViewController("config") as config;
                    this.NavigationController.PushViewController(con, true);
                }
                else if (txtUserName.Text.ToUpper() == Constants.AdminUserID && txtPassword.Text.ToUpper() != Constants.AdminPassword)
                {
                    UIAlertView alert = new UIAlertView(@"Alert", @"Invalid Username Or Password", null, NSBundle.MainBundle.LocalizedString("OK", "OK"));
                    alert.Show();
                }
                else
                {
                    if (AppDelegate.DatabaseContext != null)
                    {
                        //AppDelegate del=new AppDelegate();
                        loginScrollView.ContentOffset = new CGPoint(0, 0);


                        LoadOverLayPopup();
                        //getter method should return if we should allow going to dashboard or not

                        string username = txtUserName.Text;
                        string password = txtPassword.Text;
                        authenticatedUser = await Task.Run(() => LoginToService(username, password));

                        HideOverLay();


                        if (authenticatedUser.Result != null && (authenticatedUser.Result.code == 0 || authenticatedUser.Result.code == 1) && authenticatedUser.UserDetails != null && authenticatedUser.IsTokenActive)
                        {
                            AppDelegate.user = authenticatedUser;
                            using (MasterDataUpdateService masterDataUpdateService = new MasterDataUpdateService(AppDelegate.DatabaseContext))
                            {
                                string dbVersion = "1.0";
                                using (UserSettingService usrSetting = new UserSettingService(AppDelegate.DatabaseContext))
                                {
                                    var dbVersions = usrSetting.GetUserSettings().Where(u => u.SettingName == "DBVersion");
                                    if (dbVersions != null && dbVersions.Count() > 0)
                                    {
                                        dbVersion = dbVersions.FirstOrDefault().SettingValue;
                                    }
                                }
                                var AppDbVersion    = string.IsNullOrEmpty(dbVersion) ?1:float.Parse(dbVersion);
                                var serverDBVersion = string.IsNullOrEmpty(authenticatedUser.DBVersion) ?1:float.Parse(authenticatedUser.DBVersion);

                                if (AppDbVersion < serverDBVersion)
                                {
                                    UIAlertView alert1 = new UIAlertView(@"Alert", @"Master Data update available,DB update is going to start.", null, NSBundle.MainBundle.LocalizedString("Ok", "Ok"));
                                    alert1.Show();

                                    alert1.Clicked += async(DBsender, buttonArgs) => {
                                        masterDataUpdateService.progressDelegate = this.UpdateProgress;
                                        this.ResignFirstResponder();
                                        this.View.UserInteractionEnabled = false;
                                        progressView.Hidden      = false;
                                        dataProgressLabel.Hidden = false;
                                        CGAffineTransform transform = CGAffineTransform.MakeScale(1.0f, 6.0f);
                                        progressView.Transform = transform;
                                        MasterDataUpdateStatus resultMasterData = await Task.Run(() => masterDataUpdateService.UpdateDatabaseService(authenticatedUser.UserDetails.Token));

                                        progressView.Hidden      = true;
                                        dataProgressLabel.Hidden = true;
                                        if (resultMasterData != null)
                                        {
                                            UIAlertView alert = new UIAlertView(@"Alert", resultMasterData.ErrorMessage, null, NSBundle.MainBundle.LocalizedString("OK", "OK"));
                                            alert.Show();
                                            if (resultMasterData.Result == false)
                                            {
                                                this.View.UserInteractionEnabled = true;
                                                AppDelegate.deleteSession();
                                            }
                                            else
                                            {
                                                this.View.UserInteractionEnabled = true;
                                                MoveToDashBoard(authenticatedUser);
                                            }
                                        }
                                        else
                                        {
                                            this.View.UserInteractionEnabled = true;
                                        }
                                    };
                                }
                                else
                                {
                                    MoveToDashBoard(authenticatedUser);
                                }
                            }
                        }
                        else if (authenticatedUser.Result != null && (authenticatedUser.Result.code == 0 || authenticatedUser.Result.code == 1) && authenticatedUser.UserDetails != null && !authenticatedUser.IsTokenActive)
                        {
                            UIAlertView alert1 = new UIAlertView(@"Invalid Token", @"Token Expired", null, NSBundle.MainBundle.LocalizedString("OK", "OK"));
                            alert1.Show();
                        }
                        else
                        {
                            this.ShowErrorResponse(authenticatedUser.Result.code);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Exception Occured in btnLogin_TouchUpInside  method due to " + ex.Message);
            }
            finally
            {
                progressView.Hidden              = true;
                dataProgressLabel.Hidden         = true;
                this.View.UserInteractionEnabled = true;
            }
        }