69 lines
2.6 KiB
C#
69 lines
2.6 KiB
C#
|
using COA.EnterpriseServices.DataAccess.Entities;
|
|||
|
using COA.PartnerApis.QuickBase;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
|
|||
|
namespace COA.EnterpriseServices.DataAccess.QuickBase
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Maintains a list of entity types and property mappings to QuickBase fields
|
|||
|
/// </summary>
|
|||
|
internal static class RecordMapRegistry
|
|||
|
{
|
|||
|
private static readonly ICollection<RecordMap> recordMaps = new List<RecordMap>();
|
|||
|
|
|||
|
static RecordMapRegistry()
|
|||
|
{
|
|||
|
#region Creditor
|
|||
|
|
|||
|
recordMaps.Add(new RecordMap<Creditor, CreditorsFieldMap>()
|
|||
|
.WithDefaults()
|
|||
|
.WithProperty(c => c.ClientFirstName, CreditorsFieldMap.ClientFirstName)
|
|||
|
.WithProperty(c => c.ClientFirstName, CreditorsFieldMap.ClientFirstName)
|
|||
|
.WithProperty(c => c.ClientLastName, CreditorsFieldMap.ClientLastName)
|
|||
|
.WithProperty(c => c.CurrentCreditorProfileId, CreditorsFieldMap.RelatedCurrentCreditorPrimary)
|
|||
|
.WithProperty(c => c.OriginalCreditorProfileId, CreditorsFieldMap.RelatedOriginalCreditor)
|
|||
|
.WithProperty(c => c.Status, CreditorsFieldMap.CreditorStatus)
|
|||
|
.WithProperty(c => c.AccountNumber, CreditorsFieldMap.AccountNum));
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Client
|
|||
|
|
|||
|
recordMaps.Add(new RecordMap<Entities.Client, ClientFieldMap>()
|
|||
|
.WithDefaults()
|
|||
|
.WithProperty(c => c.FirstName, ClientFieldMap.FirstName)
|
|||
|
.WithProperty(c => c.LastName, ClientFieldMap.LastName)
|
|||
|
.WithProperty(c => c.Email, ClientFieldMap.ClientPrimaryEmail)
|
|||
|
.WithProperty(c => c.Phone, ClientFieldMap.ClientPrimaryPhone)
|
|||
|
.WithProperty(c => c.Address, ClientFieldMap.Address1));
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
|
|||
|
internal static Record GetRecord(object item)
|
|||
|
{
|
|||
|
var data = new Record();
|
|||
|
var itemType = item.GetType();
|
|||
|
var properties = itemType.GetProperties();
|
|||
|
var map = recordMaps.FirstOrDefault(r => r.ItemType == itemType);
|
|||
|
|
|||
|
data.Table = map.Table;
|
|||
|
|
|||
|
foreach (var property in properties)
|
|||
|
{
|
|||
|
var fieldMap = map.FieldMaps.FirstOrDefault(f => f.PropertyName == property.Name);
|
|||
|
|
|||
|
if (fieldMap != null)
|
|||
|
{
|
|||
|
var value = property.GetValue(item);
|
|||
|
|
|||
|
data.FieldIds.Add(new KeyValuePair<int, object>(fieldMap.FieldId, value));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return data;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|