using Tnsu.ApprovalRoute.Domain.Enums; namespace Tnsu.ApprovalRoute.Infrastructure.TnsuPortal; /// /// Guid сотрудника в справочнике api.tnsu.kz — один и тот же человек может иметь /// несколько записей (см. массив в /Employee/ByEmail) и даже несколько разных /// email, но Id у него один. Используется как надёжный ключ дедупликации /// исполнителей при резолве маршрута (см. TemplateRouteService) — email для /// этого не годится: один человек может фигурировать под разными адресами. /// Nullable, потому что старые вызовы могли не запросить это поле явно (сейчас /// всегда приходит) — на этот случай дедуп по Id тихо откатывается на email. /// public sealed record EmployeeDirectoryInfo(Guid CompanyId, Guid? DepartmentId, string Company, string? Position, Guid? Id = null); public sealed record ProjectExecutorInfo(ProjectRole ProjectRole, string Email); /// Найден ли сотрудник вообще — отдельно от того, заполнен ли у него email в портале (это разные проблемы). public sealed record EmployeeLookupResult(bool Found, string? Email, string? Fio); /// /// Запись из /Employee/FullBase — весь справочник сотрудников, но БЕЗ email (в /// отличие от /Employee/All). Нужна только ради DismissalDate: единственное место, /// где отдаётся дата увольнения. /// public sealed record EmployeeFullBaseInfo(Guid? Id, string Fio, string Company, DateTimeOffset? DismissalDate); /// /// Запись из /Employee/All — весь справочник сотрудников с email, но БЕЗ даты /// увольнения (в отличие от /Employee/FullBase). Связать одну базу с другой можно /// по — он один и тот же в обоих ответах. /// public sealed record EmployeeContactInfo(Guid? Id, string Fio, string? Email, string Company);