diff --git a/COA.EnterpriseServices.DataAccess.QuickBase/QuickBaseDataAccess.cs b/COA.EnterpriseServices.DataAccess.QuickBase/QuickBaseDataAccess.cs index cf20ad6..0094ad3 100644 --- a/COA.EnterpriseServices.DataAccess.QuickBase/QuickBaseDataAccess.cs +++ b/COA.EnterpriseServices.DataAccess.QuickBase/QuickBaseDataAccess.cs @@ -17,7 +17,7 @@ namespace COA.EnterpriseServices.DataAccess.QuickBase public bool Update(T item) { - throw new NotImplementedException(); + return true; } public T Get(int id) diff --git a/COA.EnterpriseServices.DataAccess/DataAccessManager.cs b/COA.EnterpriseServices.DataAccess/DataAccessManager.cs index ad650c6..cf45747 100644 --- a/COA.EnterpriseServices.DataAccess/DataAccessManager.cs +++ b/COA.EnterpriseServices.DataAccess/DataAccessManager.cs @@ -5,9 +5,9 @@ using System.Text; namespace COA.EnterpriseServices.DataAccess { - public static class DataAccessManager + public class DataAccessManager where T : class, IRecord { - private static readonly IDictionary activeDataAccess = new Dictionary + private static readonly IDictionary enabledDataAccess = new Dictionary { #region Creditor @@ -30,17 +30,32 @@ namespace COA.EnterpriseServices.DataAccess #endregion }; - public static ICollection> GetDataAccess() where T : class, IRecord + public TResult Invoke(Func, TResult> func) + { + var results = new List(); + var dataAccessInstances = GetEnabledDataAccess(); + + foreach (var dataAccessInstance in dataAccessInstances) + { + results.Add(func(dataAccessInstance)); + } + + // if the "EF" version invokes first, return that value + return results.FirstOrDefault(r => r != null && !r.Equals(default(TResult))); + } + + private ICollection> GetEnabledDataAccess() { var type = typeof(T); + // load data access based on active configuration return Dependencies.Container .GetAllInstances>() .Where(i => { var dataAccessType = i.GetType().FullName; - return activeDataAccess.ContainsKey(type.FullName) && activeDataAccess[type.FullName].Any(a => dataAccessType.StartsWith(a)); + return enabledDataAccess.ContainsKey(type.FullName) && enabledDataAccess[type.FullName].Any(a => dataAccessType.StartsWith(a)); }) .OrderBy(i => i.GetType().Name.StartsWith("QuickBase", StringComparison.OrdinalIgnoreCase)) .ToList(); diff --git a/COA.EnterpriseServices.DataAccess/Entities/Client.cs b/COA.EnterpriseServices.DataAccess/Entities/Client.cs index e8b3a62..c3e9d02 100644 --- a/COA.EnterpriseServices.DataAccess/Entities/Client.cs +++ b/COA.EnterpriseServices.DataAccess/Entities/Client.cs @@ -5,7 +5,7 @@ namespace COA.EnterpriseServices.DataAccess.Entities public class Client : IRecord { public int Id { get; set; } - public DateTime Created { get; set; } + public DateTime Created { get; set; } = DateTime.Now; public DateTime Modified { get; set; } public string FirstName { get; set; } public string LastName { get; set; } diff --git a/COA.EnterpriseServices.DataAccess/Entities/Creditor.cs b/COA.EnterpriseServices.DataAccess/Entities/Creditor.cs index c80ad05..8640257 100644 --- a/COA.EnterpriseServices.DataAccess/Entities/Creditor.cs +++ b/COA.EnterpriseServices.DataAccess/Entities/Creditor.cs @@ -7,7 +7,7 @@ namespace COA.EnterpriseServices.DataAccess.Entities public class Creditor : IRecord { public int Id { get; set; } - public DateTime Created { get; set; } + public DateTime Created { get; set; } = DateTime.Now; public DateTime Modified { get; set; } public string Status { get; set; } public string ClientFirstName { get; set; } diff --git a/COA.EnterpriseServices.DataAccess/Entities/SettlementAttempt.cs b/COA.EnterpriseServices.DataAccess/Entities/SettlementAttempt.cs index ae02a09..74ad6b1 100644 --- a/COA.EnterpriseServices.DataAccess/Entities/SettlementAttempt.cs +++ b/COA.EnterpriseServices.DataAccess/Entities/SettlementAttempt.cs @@ -5,7 +5,7 @@ namespace COA.EnterpriseServices.DataAccess.Entities public class SettlementAttempt : IRecord { public int Id { get; set; } - public DateTime Created { get; set; } + public DateTime Created { get; set; } = DateTime.Now; public DateTime Modified { get; set; } } } diff --git a/COA.EnterpriseServices.DataAccess/Helpers/BaseHelper.cs b/COA.EnterpriseServices.DataAccess/Helpers/BaseHelper.cs index ace6721..b1d76d7 100644 --- a/COA.EnterpriseServices.DataAccess/Helpers/BaseHelper.cs +++ b/COA.EnterpriseServices.DataAccess/Helpers/BaseHelper.cs @@ -1,39 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace COA.EnterpriseServices.DataAccess.Helpers +namespace COA.EnterpriseServices.DataAccess.Helpers { public class BaseHelper where T : class, IRecord { - private readonly ICollection> dataAccessInstances; + protected DataAccessManager DataAccessManager { get; } = new DataAccessManager(); - public BaseHelper() - { - dataAccessInstances = DataAccessManager.GetDataAccess(); - } + public virtual T Get(int id) => DataAccessManager.Invoke(d => d.Get(id)); - protected TResult Invoke(Func, TResult> func) - { - var results = new List(); - - foreach (var dataAccessInstance in dataAccessInstances) - { - results.Add(func(dataAccessInstance)); - } - - // if the "EF" version invokes first, return that value - return results.FirstOrDefault(r => r != null && !r.Equals(default(TResult))); - } - - public virtual T Get(int id) - { - return Invoke(d => d.Get(id)); - } - - public virtual bool Add(T item) - { - return Invoke(d => d.Add(item)); - } + public virtual bool Add(T item) => DataAccessManager.Invoke(d => d.Add(item)); } } diff --git a/COA.EnterpriseServices.DataAccess/Helpers/ClientHelper.cs b/COA.EnterpriseServices.DataAccess/Helpers/ClientHelper.cs index 1440f65..d6fc136 100644 --- a/COA.EnterpriseServices.DataAccess/Helpers/ClientHelper.cs +++ b/COA.EnterpriseServices.DataAccess/Helpers/ClientHelper.cs @@ -7,7 +7,7 @@ namespace COA.EnterpriseServices.DataAccess.Helpers { public ICollection FindByEmail(string email) { - return Invoke(d => d.Get(c => c.Email.Equals(email))); + return DataAccessManager.Invoke(d => d.Get(c => c.Email.Equals(email))); } } } diff --git a/COA.EnterpriseServices.DataAccess/Helpers/CreditorHelper.cs b/COA.EnterpriseServices.DataAccess/Helpers/CreditorHelper.cs index b632e78..bbff02c 100644 --- a/COA.EnterpriseServices.DataAccess/Helpers/CreditorHelper.cs +++ b/COA.EnterpriseServices.DataAccess/Helpers/CreditorHelper.cs @@ -1,6 +1,5 @@ using COA.EnterpriseServices.DataAccess.Entities; using System.Collections.Generic; -using System.Text; namespace COA.EnterpriseServices.DataAccess.Helpers { @@ -8,12 +7,12 @@ namespace COA.EnterpriseServices.DataAccess.Helpers { public ICollection FindByName(string name) { - return Invoke(d => d.Get(c => c.ClientFirstName.Contains(name) || c.ClientLastName.Contains(name))); + return DataAccessManager.Invoke(d => d.Get(c => c.ClientFirstName.Contains(name) || c.ClientLastName.Contains(name))); } public ICollection FindByStatus(string status) { - return Invoke(d => d.Get(c => c.Status == status)); + return DataAccessManager.Invoke(d => d.Get(c => c.Status == status)); } } }