HRM_RabbitMQ_Consumer/JSONParser/Structure/Person.cs

96 lines
2.6 KiB
C#

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<long> 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<long> 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<string, dynamic> per)
{
bool result = false;
if (FirstName == (string)per["FirstName"] &&
LastName == (string)per["LastName"] &&
MiddleName == (string)per["MiddleName"])
{
result = true;
}
return result;
}
public async Task<long> 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;
}
}
}