промежуточный коммит
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Tnsu.ApprovalRoute.Application.Reminders;
|
||||
|
||||
/// <summary>
|
||||
/// Строка списка «Прием на работу — данные», разобранная из ответа SharePoint.
|
||||
/// Имена колонок — как в request-portal (provisioning.json формы RecruitingHire).
|
||||
/// </summary>
|
||||
internal sealed record HireRow(
|
||||
int Id,
|
||||
string Status,
|
||||
string? CandidateName,
|
||||
DateTimeOffset? HireDate,
|
||||
string? ProbationPeriod,
|
||||
string? RequestUniqueCode)
|
||||
{
|
||||
public static HireRow? TryParse(JsonElement item)
|
||||
{
|
||||
if (!item.TryGetProperty("Id", out var idProp) || !idProp.TryGetInt32(out var id)) return null;
|
||||
|
||||
return new HireRow(
|
||||
id,
|
||||
GetString(item, "RequestStatus") ?? string.Empty,
|
||||
GetString(item, "CandidateName"),
|
||||
TryGetDate(item, "HireDate"),
|
||||
GetString(item, "ProbationPeriod"),
|
||||
GetString(item, "RequestUniqueCode"));
|
||||
}
|
||||
|
||||
private static string? GetString(JsonElement e, string name) =>
|
||||
e.TryGetProperty(name, out var v) && v.ValueKind == JsonValueKind.String ? v.GetString() : null;
|
||||
|
||||
private static DateTimeOffset? TryGetDate(JsonElement e, string name) =>
|
||||
e.TryGetProperty(name, out var v) &&
|
||||
v.ValueKind == JsonValueKind.String &&
|
||||
DateTimeOffset.TryParse(v.GetString(), out var parsed)
|
||||
? parsed
|
||||
: null;
|
||||
}
|
||||
|
||||
/// <summary>Статусы списка данных («… — данные», колонка RequestStatus) — считаем приём завершённым по ним.</summary>
|
||||
internal static class HireRequestStatuses
|
||||
{
|
||||
public const string Approved = "Согласовано";
|
||||
public const string Closed = "Закрыта";
|
||||
}
|
||||
Reference in New Issue
Block a user