private static bool isUserExistInExcelUserList(NewUserInfo user) { string fileUsers = Program.FileExcelUserList; using (var pck = new OfficeOpenXml.ExcelPackage()) { using (var stream = File.OpenRead(fileUsers)) { pck.Load(stream); } var ws = pck.Workbook.Worksheets.First(); var worksheet = pck.Workbook.Worksheets[1]; int numberRow = 2; while (worksheet.Cells[numberRow, 2].Text.Trim() != "") { if (worksheet.Cells[numberRow, 2].Text.Trim().Equals(user.UserName, StringComparison.OrdinalIgnoreCase)) { return true; } numberRow++; } } return false; }
/// <summary> /// Проверка нового пользователя /// </summary> /// <param name="msgLine">Строка лога</param> public static void CheckNewUser(string msgLine, string userName) { try { if (isNewUserLogLine(msgLine)) { // Проверка проверялся ли уже этот пользователь в этом сеансе if (isCheckedUser(userName)) return; NewUserInfo user = new NewUserInfo (userName); // Проверка есть ли запись этого юзера в списке UserList2.xlsx if (isUserExistInExcelUserList(user)) return; // Определение рабочей группы пользователя if (DefineUserGroup(user)) { // Регистрация пользователя - добавление в файл UserList2.xlsx RegisterNewUser(user); NewUsers.Add(user); } else { // Не определена рабочая группа пользовтеля - не добавлен в группу ЕЦП Errors.Add($"Пользователь без группы ЕЦП: user={userName};"); } } } catch (Exception ex) { Errors.Add($"Ошибка обработки лога пользователя {userName}. Лог {msgLine}. Ошибка - {ex}"); } }
/// <summary> /// Определение рабочей группы пользователя /// </summary> /// <returns></returns> private static bool DefineUserGroup(NewUserInfo user) { string fio; var userGroups = ADUtils.GetUserGroups(user.UserName, out fio); user.FIO = fio; var userWorkGroups = _ecpWorkGroups.Intersect(userGroups); user.WorkGroups = userWorkGroups; foreach (var item in userWorkGroups) { // определить шифр отдела по рабочей группе var wg = getWorkGroupName(item); if (!string.IsNullOrEmpty(wg)) { user.WorkGroup = wg; return true; } } return false; }
private static void RegisterNewUser(NewUserInfo user) { string fileUsers = Program.FileExcelUserList; using (var pck = new OfficeOpenXml.ExcelPackage(new FileInfo(fileUsers))) { var ws = pck.Workbook.Worksheets.First(); var worksheet = pck.Workbook.Worksheets[1]; int numberRow = 2; while (worksheet.Cells[numberRow, 2].Text.Trim() != "") { numberRow++; } worksheet.Cells[numberRow, 1].Value = user.FIO; worksheet.Cells[numberRow, 2].Value = user.UserName; worksheet.Cells[numberRow, 3].Value = user.WorkGroup; pck.Save(); } }