[ELMA3] Загрузка пользователей из текстового файла с разделителями
Для загрузки пользователей нам понадобится текстовый файл с разделителями, где значение каждой колонки отделяется друга от друга символом ";". Кодировка информации в файле соответствует кодовой странице 1251. Одна строка в файле соответствует одному загружаемому пользователю. Первая колонка будет содержать "Номер комнаты", вторая – "Фамилия Имя Отчество" разделенные пробелами, третья – "Номер рабочего телефона", четвертая – "ICQ".
Необходимо учитывать, что количество загружаемых пользователей не должно превышать число пользователей, указанное в лицензии.
Пример строки из загружаемого файла:
100;Петров Сергей Анатольевич ;78-90-90;789928341
Для корректной работы сценария необходимо подключить ссылки на сборки:
using System.IO;
using EleWise.ELMA.Security.Managers;
Текст сценария загрузки пользователей из файла:
// указываем файл и задаем тип кодировки содержимого
string filename = @"D:\users.csv";
Encoding enc = Encoding.GetEncoding(1251);
// открываем поток для вывода символов из файла в определенной кодировке
StreamReader rs = new StreamReader(filename, enc);
// буферная строка
string stline = "";
// запускаем цикл чтения строк из потока
while ((stline = rs.ReadLine()) != null)
{
// формируем массив из полей файла (номер комнаты, должность, ФИО, номер
// телефона, ICQ)
string[] stparts = stline.Split(’;’);
// разбираем значения поля ФИО на: Фамилия (stfio[0]), Имя (stfio[1]), Отчество
// (stfio[2])
string[] stfio = stparts[2].Split(’ ’);
// создаем экземпляр объекта "Пользователь"
var UserNew = UserManager.Instance.Create();
UserNew.FirstName = stfio[1]; // Имя
UserNew.MiddleName= stfio[2]; // Отчество
UserNew.LastName = stfio[0]; // Фамилия
// создадим учетную запись (логин) для входа в систему (ПетровАС)
UserNew.UserName = stfio[0] + stfio[1].Substring(0,1) +stfio[2].Substring(0,1);
UserNew.FullName = stparts[2]; // полное имя
UserNew.RoomNumber = stparts[0]; // номер комнаты
UserNew.WorkPhone = stparts[3]; // номер телефона
// сохраняем экземпляр объекта
UserNew.Save();
}
// закрываем поток
rs.Close();