/// <summary> /// Поиск пользователей в базе данных /// </summary> /// <param name="userInfo">Строка шаблона поиска. Через пробел задаются нужное кол-во букв фамилии имени и отчества</param> /// <param name="userRole">Определяет роль пользователей, внутри которой произволится поиск. В случае TestorUserRole.NotDefined роль не имеет значения</param> /// <param name="userStatus">Статус пользователя. В случае TestorUserStatus.Any ствтус не имеет значения</param> /// <param name="groupId">В случае, если параметр не равен нулю, поиск производится внутри группы</param> /// <param name="getRemoved">Искать ли только среди активных пользователей или только среди удалёных</param> /// <param name="takeCount">Кол-во извлекаемых записей о пользователях. Если передаётся 0, то извлекаются все записи</param> /// <param name="getDetails">Получать ли подробную информацию о пользователе</param> /// <returns>Массив данных о пользователях</returns> public static TestorCoreUser[] FindUsers(string userInfo, TestorUserRole userRole, TestorUserStatus userStatus, int groupId, bool getRemoved, int takeCount, bool getDetails) { Debug.Assert(userInfo != null); string[] names = userInfo.Trim().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string fname = String.Empty; string lName = String.Empty; string sName = String.Empty; if (names.Length >= 1) { lName = names[0]; } if (names.Length >= 2) { fname = names[1]; } if (names.Length >= 3) { sName = names[2]; } return(FindUsers(lName, fname, sName, userRole, userStatus, groupId, getRemoved, takeCount, getDetails)); }
/// <summary> /// Поиск пользователей в базе данных /// </summary> /// <param name="userInfo">Строка шаблона поиска. Через пробел задаются нужное кол-во букв фамилии имени и отчества</param> /// <param name="userRole">Определяет роль пользователей, внутри которой произволится поиск. В случае TestorUserRole.NotDefined роль не имеет значения</param> /// <param name="userStatus">Статус пользователя. В случае TestorUserStatus.Any ствтус не имеет значения</param> /// <param name="takeCount">Кол-во извлекаемых записей о пользователях. Если передаётся 0, то извлекаются все записи</param> /// <param name="getDetails">Получать ли подробную информацию о пользователе</param> /// <returns>Массив данных о пользователях</returns> public static TestorCoreUser[] FindUsers(string userInfo, TestorUserRole userRole, TestorUserStatus userStatus, int takeCount, bool getDetails) { Debug.Assert(userInfo != null); return(FindUsers(userInfo, userRole, userStatus, 0, false, takeCount, getDetails)); }
/// <summary> /// Поиск пользователей в базе данных /// </summary> /// <param name="lastName">Фамилия</param> /// <param name="firstName">Имя</param> /// <param name="secondName">Отчество</param> /// <param name="userRole">Определяет роль пользователей, внутри которой произволится поиск. В случае TestorUserRole.NotDefined роль не имеет значения</param> /// <param name="userStatus">Статус пользователя. В случае TestorUserStatus.Any ствтус не имеет значения</param> /// <param name="groupId">В случае, если параметр не равен нулю, поиск производится внутри группы</param> /// <param name="getRemoved">Искать ли только среди активных пользователей или только среди удалёных</param> /// <param name="takeCount">Кол-во извлекаемых записей о пользователях. Если передаётся 0, то извлекаются все записи</param> /// <param name="getDetails">Получать ли подробную информацию о пользователе</param> /// <returns>Массив данных о пользователях</returns> public static TestorCoreUser[] FindUsers(string lastName, string firstName, string secondName, TestorUserRole userRole, TestorUserStatus userStatus, int groupId, bool getRemoved, int takeCount, bool getDetails) { Debug.Assert(lastName != null); Debug.Assert(firstName != null); Debug.Assert(secondName != null); using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString)) { IQueryable <User> retValue = null; if (groupId > 0) { retValue = from c in dataContext.UserGroups join usr in dataContext.Users on c.UserId equals usr.UserId where c.GroupId == groupId select usr; } else { retValue = from c in dataContext.Users where c.LastName.StartsWith(lastName) && c.FirstName.StartsWith(firstName) && c.SecondName.StartsWith(secondName) select c; } if (userRole != TestorUserRole.NotDefined) { retValue = retValue.Where(c => c.UserRole == (short)userRole); } if (userStatus != TestorUserStatus.Any) { retValue = retValue.Where(c => c.UserRole == (short)userRole); } if (!getRemoved) { retValue = retValue.Where(c => c.Status != (short)TestorUserStatus.Removed); } else { retValue = retValue.Where(c => c.Status == (short)TestorUserStatus.Removed); } if (takeCount != 0) { retValue = retValue.Take(takeCount); } retValue = from c in retValue orderby c.LastName, c.FirstName select c; return(GetUsers(retValue, getDetails)); } }
public byte[] FindUsers(string userInfo, TestorUserRole userRole, TestorUserStatus userStatus, bool getRemoved, int groupId, int takeCount) { if (Provider.CurrentUser.UserRole == TestorUserRole.NotDefined || Provider.CurrentUser.UserRole == TestorUserRole.Anonymous || Provider.CurrentUser.UserRole == TestorUserRole.Student) { if (userRole != TestorUserRole.NotDefined && userRole != TestorUserRole.Anonymous && userRole != TestorUserRole.Student) { Provider.ThrowAccessFaultException(); } } return(DataCompressor.CompressData <TestorCoreUser[]>(UserSearchHelper.FindUsers(userInfo, userRole, userStatus, groupId, getRemoved, takeCount, true))); }
private void toolStripComboBoxRole_SelectedIndexChanged(object sender, EventArgs e) { _getRemoved = false; TestorUserRole selectedRole = TestorUserRole.NotDefined; if (toolStripComboBoxRole.SelectedIndex != toolStripComboBoxRole.Items.Count - 1) { selectedRole = (TestorUserRole)toolStripComboBoxRole.SelectedIndex + 1; } else { _getRemoved = true; } testorCoreUserDataGridView.GetUsers(selectedRole, TestorUserStatus.Any, _getRemoved); }
public TestorCoreUser AlterUser(TestorCoreUser user, bool alterGroups) { Debug.Assert(user.UserId > 0); Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian); using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString)) { if (user.UserId <= 0) { return(null); } var testorUser = dataContext.Users.Where(c => c.UserId == user.UserId).FirstOrDefault(); if (testorUser != null) { TestorUserRole alterRole = (TestorUserRole)testorUser.UserRole; if (user.UserId != Provider.CurrentUser.UserId) { if (Provider.CurrentUser.UserRole != TestorUserRole.Administrator && !(alterRole == TestorUserRole.Student || alterRole == TestorUserRole.Anonymous || alterRole == TestorUserRole.NotDefined)) { Provider.ThrowAccessFaultException(); return(null); } } if (alterRole != user.UserRole && Provider.CurrentUser.UserRole != TestorUserRole.Administrator) { user.UserRole = alterRole; } SetUserSettings(testorUser, user, true, false, dataContext); if (Provider.CurrentUser.UserRole == TestorUserRole.Administrator && alterGroups) { SetUserGroups(testorUser, user.UserGroups, dataContext); } dataContext.SubmitChanges(); } return(UserSearchHelper.GetUser(testorUser)); } }
public void GetUsers(TestorUserRole selectedRole, TestorUserStatus status, bool getRemoved) { if (SystemStateManager.TestState()) { return; } this.CurrentBindingSource.DataSource = null; SystemStateManager.OnStateChanged(true); _currentThread = new Thread(new ThreadStart(() => { try { _users.Clear(); _users.InsertRange(0, DataCompressor.DecompressData <TestorCoreUser[]>(StaticServerProvider.UserManagement.FindUsers( String.Empty, selectedRole, status, getRemoved, this.SelectedGroup.ItemId, 0))); if ((this.TopLevelControl as Form).IsHandleCreated) { this.Invoke((Action)(() => { OnUsersGetted(); SystemStateManager.OnStateChanged(false); })); } } catch (Exception ex) { if ((this.TopLevelControl as Form).IsHandleCreated) { this.Invoke((Action)(() => { SystemMessage.ShowErrorMessage(ex); SystemStateManager.OnStateChanged(false); })); } } })); _currentThread.Start(); }
private void ToolStripMenuItemAdditional_Click(object sender, EventArgs e) { if (SystemStateManager.TestState()) { return; } var row = testorCoreUserDataGridView.SelectedRows[0]; TestorCoreUser selUser = testorCoreUserDataGridView.SelectedUser; TestorUserRole role = selUser.UserRole; TestorUserStatus status = selUser.Status; UserAdditionalSettingsForm settingsForm = new UserAdditionalSettingsForm(selUser); if (settingsForm.ShowDialog() != DialogResult.OK) { return; } if (settingsForm.User.UserRole != role || (settingsForm.User.Status == TestorUserStatus.Removed && status != TestorUserStatus.Removed) || (status == TestorUserStatus.Removed && settingsForm.User.Status != TestorUserStatus.Removed)) { testorCoreUserDataGridView.Rows.Remove(row); } selUser.SetSettings(settingsForm.User); toolStripTextBoxSearch_TextChanged(this, new EventArgs()); }
public void SetUserStatus(int userId, TestorUserStatus status) { Debug.Assert(userId > 0); Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian); using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString)) { var user = dataContext.Users.Where(c => c.UserId == userId).FirstOrDefault(); if (userId != Provider.CurrentUser.UserId) { TestorUserRole alterRole = (TestorUserRole)user.UserRole; if (Provider.CurrentUser.UserRole != TestorUserRole.Administrator && !(alterRole == TestorUserRole.Student || alterRole == TestorUserRole.Anonymous || alterRole == TestorUserRole.NotDefined)) { Provider.ThrowAccessFaultException(); return; } } user.Status = (short)status; dataContext.SubmitChanges(); } }