using Simple.OData.Client; using System; using System.Text.Json; namespace JSONParser.Structure { public class Person : Entity { public string FirstName { get; set; } public string LastName { get; set; } public string MiddleName { get; set; } public override string ToString() { var fullname = $"{LastName} {FirstName}"; if (!string.IsNullOrEmpty(MiddleName)) { fullname += $" {MiddleName}"; } return fullname; } public override string Serialize() { return JsonSerializer.Serialize(this); } public override async Task Create(ODataClient client) { var newPerson = new { ExternalId = Sid, FirstName = FirstName, LastName = LastName, MiddleName = MiddleName, Status = "Active" }; var created = await client .For("IPersons") .Set(newPerson) .InsertEntryAsync(); this.DirectumId = (long)created["Id"]; return (long)created["Id"]; } public async override Task Update(ODataClient client, long id) { var newPerson = new { ExternalId = Sid, FirstName = FirstName, LastName = LastName, MiddleName = MiddleName, Status = "Active" }; var updated = await client .For("IPersons") .Key(id) .Set(newPerson) .UpdateEntryAsync(); this.DirectumId = (long)updated["Id"]; return (long)updated["Id"]; } public bool IsEqual(IDictionary per) { bool result = false; if (FirstName == (string)per["FirstName"] && LastName == (string)per["LastName"] && MiddleName == (string)per["MiddleName"]) { result = true; } return result; } public async Task GetIdBySid(ODataClient client) { long result = 0; if (!string.IsNullOrEmpty(Sid)) { var per = await client .For("IPersons") .Filter($"ExternalId eq '{Sid}'") .FindEntryAsync(); if (per != null) { result = (long)per["Id"]; } } return result; } } }