/// <summary> /// Gets the permissions for the current logged on user. /// </summary> /// <param name="allowMultipleLogons"></param> /// <param name="allowMultipleShiftLogons"></param> private static void GetPermissions(ref bool allowMultipleLogons, ref bool allowMultipleShiftLogons) { const int CHECKED = 1; LogonData logonData = new LogonData(ApplicationSettings.Database.LocalConnection, ApplicationSettings.Database.DATAAREAID); PosPermission userPermission = logonData.GetUserPosPermission(ApplicationSettings.Terminal.StoreId, ApplicationSettings.Terminal.TerminalOperator.OperatorId); if (userPermission != null) { if ((userPermission.ManagerPrivileges == CHECKED) || (userPermission.AllowMultipleLogins == CHECKED)) { allowMultipleLogons = true; } if ((userPermission.ManagerPrivileges == CHECKED) || (userPermission.AllowMultipleShiftLogOn == CHECKED)) { allowMultipleShiftLogons = true; } } }
private void LogonGridUser() { try { //if nothing is selected display an error message if (grvUserData.SelectedRowsCount == 0) { PosApplication.Instance.Services.Dialog.ShowMessage(31, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Get the selected user id DataRow row = grvUserData.GetDataRow(grvUserData.GetSelectedRows()[0]); operatorId = row["STAFFID"].ToString(); operatorName = row["NAME"].ToString(); LogonData logonData = new LogonData(ApplicationSettings.Database.LocalConnection, ApplicationSettings.Database.DATAAREAID); EF.PosPermission posPermission = logonData.GetUserPosPermission(ApplicationSettings.Terminal.StoreId, operatorId); if (!string.IsNullOrWhiteSpace(operatorId)) { //This is to assign the operator culture ONCE such that it is available throughout all translation attempts LSRetailPosis.DataAccess.Language lang = new Language(ApplicationSettings.Database.LocalConnection, ApplicationSettings.Database.DATAAREAID); // Set operator culture if found, otherwise default to terminal culture string opCultNam = lang.GetOperatorCultureName(ApplicationSettings.Terminal.StoreId, operatorId); if (!string.IsNullOrEmpty(opCultNam)) { ApplicationSettings.Terminal.OperatorCultureName = opCultNam; } } if (posPermission == null) { // No permisison or position using (frmMessage message = new frmMessage(1004)) { POSFormsManager.ShowPOSForm(message); } return; } //display the numpad to get the password using (LSRetailPosis.POSProcesses.frmInputNumpad frmNumPad = new LSRetailPosis.POSProcesses.frmInputNumpad()) { frmNumPad.EntryTypes = NumpadEntryTypes.Password; frmNumPad.PromptText = ApplicationLocalizer.Language.Translate(2379); //"Password"; bool logonWorked = false; while (logonWorked == false) { //if button OK / Enter was hit POSFormsManager.ShowPOSForm(frmNumPad); if (frmNumPad.DialogResult == DialogResult.OK) { password = frmNumPad.InputText; if (logonWorked = Login.LogOnUser(true, operatorId, operatorName, operatorName, password)) { //Set privilege ApplicationSettings.Terminal.TerminalOperator.MaxLineReturnAmount = PosApplication.Instance.BusinessLogic.Utility.ToDecimal(posPermission.MaxLineReturnAmount); ApplicationSettings.Terminal.TerminalOperator.MaxTotalReturnAmount = PosApplication.Instance.BusinessLogic.Utility.ToDecimal(posPermission.MaxTotalReturnAmount); ApplicationSettings.Terminal.TerminalOperator.UserIsManager = PosApplication.Instance.BusinessLogic.Utility.ToBool(posPermission.ManagerPrivileges); ApplicationSettings.Terminal.TerminalOperator.UserIsInventoryUser = PosApplication.Instance.BusinessLogic.Utility.ToBool(posPermission.UseHandheld); LogonSuccessful(); } } else { logonWorked = true; status = LogOnStatus.None; } frmNumPad.TryAgain(); } } if (status == LogOnStatus.LogOn) { dlgResult = DialogResult.OK; Close(); } } catch (Exception x) { // The user hasn't entered all the information needed. LSRetailPosis.ApplicationExceptionHandler.HandleException(this.ToString(), x); throw new PosisException(34, x); } }