Импорт сотрудников
Импорт сотрудников¶
Пишем простую утилиту, создающую сотрудников в коде через API ролей и прямой connection к базе.
-
Создаём консольное приложение.
-
Делаем референс на Tessa.dll, NLog.dll
-
В файле app.json пишем строку подключения:
{ "ConnectionStrings": { "default": "Server=.\\SQLEXPRESS; Database=tessa; Integrated Security=false; User ID=sa; Password=Master1234; Connect Timeout=200; pooling='true'; Max Pool Size=200" } }
-
В приложении пишем код:
using System; using System.Collections.Generic; using System.Threading.Tasks; using Tessa.Platform; using Tessa.Platform.Data; using Tessa.Platform.Runtime; using Tessa.Roles;
public class Program { public static async Task Main(string[] args) { var dbScope = new DbScope(() => ConfigurationManager.CreateDbManager()); var roleRepository = new RoleRepository(dbScope); await using (dbScope.Create()) { var userRole = new PersonalRole { ID = Guid.NewGuid(), Modified = DateTime.UtcNow, ModifiedByID = Session.SystemID, ModifiedByName = Session.SystemName, Name = "Имя пользователя", FullName = "Полное имя пользователя", Login = "Аккаунт в AD (необязательно)", // другие необязательные поля };
// добавляем пользователя в свою персональную роль перед созданием (RowID – это не ID роли) var userRecord = new RoleUserRecord { RowID = Guid.NewGuid(), Role = userRole, User = userRole }; userRecord.UpdateFromAssociations();
userRole.Users = new List<RoleUserRecord> { userRecord }; await roleRepository.InsertAsync(userRole);
// если создаём более одного пользователя, то это надо делать до закрытия using-а, чтобы соединение с базой было одно и то же // объекты userRole и userRecord можно использовать повторно для создания других пользователей, но ID и RowID надо обновлять userRole.ID = Guid.NewGuid(); userRole.Name = "Имя другого пользователя"; userRole.FullName = "Полное имя другого пользователя"; userRole.Login = "SomeComputer\\SomeUser"; userRecord.RowID = Guid.NewGuid(); await roleRepository.InsertAsync(userRole); } } }