2using System.Collections.ObjectModel;
3using System.Globalization;
14 internal sealed record KycSummarySection(
string Id, IReadOnlyList<DisplayQuad> Items);
19 internal sealed record KycSummaryModel(IReadOnlyList<KycSummarySection> Sections)
21 public KycSummarySection?
Get(
string id) => this.Sections.FirstOrDefault(s =>
string.Equals(s.Id,
id,
System.StringComparison.OrdinalIgnoreCase));
24 internal static class KycSummary
27 public const string Personal =
"Personal";
28 public const string Address =
"Address";
29 public const string Attachments =
"Attachments";
30 public const string CompanyInfo =
"CompanyInfo";
31 public const string CompanyAddress =
"CompanyAddress";
32 public const string CompanyRepresentative =
"CompanyRepresentative";
37 public static ISet<string> BuildInvalidMappingSet(
KycReference? reference)
39 HashSet<string> Invalid =
new(
System.StringComparer.OrdinalIgnoreCase);
40 if (reference is
null)
return Invalid;
42 foreach (
string Claim
in Review?.InvalidClaims ??
System.Array.Empty<
string>())
44 if (
string.IsNullOrWhiteSpace(Claim))
continue;
45 string Key = Claim.Trim(); Invalid.Add(Key);
47 if (Key.StartsWith(
"ORGREP",
System.StringComparison.OrdinalIgnoreCase)) Invalid.Add(
"ORGREPBDATE");
49 foreach (
string Photo
in Review?.InvalidPhotos ??
System.Array.Empty<
string>())
51 if (
string.IsNullOrWhiteSpace(Photo))
continue; Invalid.Add(
Photo.Trim());
59 public static KycSummaryModel Generate(
KycProcess process, IEnumerable<Property> mappedValues, IEnumerable<LegalIdentityAttachment> attachments, ISet<string> invalid)
62 KycOrderingComparer Comparer = KycOrderingComparer.Create(process);
63 Summary.Personal.Sort(Comparer.DisplayComparer);
64 Summary.Address.Sort(Comparer.DisplayComparer);
65 Summary.Attachments.Sort(Comparer.DisplayComparer);
66 Summary.CompanyInfo.Sort(Comparer.DisplayComparer);
67 Summary.CompanyAddress.Sort(Comparer.DisplayComparer);
68 Summary.CompanyRepresentative.Sort(Comparer.DisplayComparer);
69 List<KycSummarySection> Sections =
new List<KycSummarySection>(6)
71 new KycSummarySection(Personal, Summary.Personal.ToList()),
72 new KycSummarySection(Address, Summary.Address.ToList()),
73 new KycSummarySection(Attachments, Summary.Attachments.ToList()),
74 new KycSummarySection(CompanyInfo, Summary.CompanyInfo.ToList()),
75 new KycSummarySection(CompanyAddress, Summary.CompanyAddress.ToList()),
76 new KycSummarySection(CompanyRepresentative, Summary.CompanyRepresentative.ToList())
78 return new KycSummaryModel(Sections);
Custom XMPP Protocol Properties.
const string BirthDate
Full birthday
XMPP Protocol Properties.
const string BirthYear
Birth Year
const string BirthDay
Birth Day
const string BirthMonth
Birth Month
A set of never changing property constants and helpful values.
Captures the result of an application review returned from backend services.
Contains a local reference to a KYC process.
ApplicationReview? ApplicationReview
Latest backend review for this application, if any.
Represents a parsed KYC process with pages, fields, and current values.
class Photo(byte[] Binary, int Rotation, Attachment? Attachment)
Class containing information about a photo.
class Get(ISimulationNode Parent, Model Model)
Gets content to a topic.