From 79b3b5be1d42193f60f0f7e3dc641dafb40c745a Mon Sep 17 00:00:00 2001 From: Ryan Peters Date: Thu, 15 Oct 2020 23:15:28 -0400 Subject: [PATCH] add Raw to DAM. add initial support for uspCreditorPortal_SettlementAttemptGet --- .../DataAccessManager.cs | 23 ++++--- .../Helpers/CreditorHelper.cs | 68 +++++++++++-------- 2 files changed, 52 insertions(+), 39 deletions(-) diff --git a/COA.EnterpriseServices.DataAccess/DataAccessManager.cs b/COA.EnterpriseServices.DataAccess/DataAccessManager.cs index c9f04c2..e92261d 100644 --- a/COA.EnterpriseServices.DataAccess/DataAccessManager.cs +++ b/COA.EnterpriseServices.DataAccess/DataAccessManager.cs @@ -35,6 +35,18 @@ namespace COA.EnterpriseServices.DataAccess return Invoke>(d => d.Get(query)); } + public T Get(int id) where T : class, IRecord + { + var item = Get(i => i.Id == id); + + if (item != null && item.Any()) + { + return item.FirstOrDefault(); + } + + return default; + } + public bool Add(T item) where T : class, IRecord { return Invoke(d => d.Add(item)); @@ -56,16 +68,9 @@ namespace COA.EnterpriseServices.DataAccess return Update(item); } - public T Get(int id) where T : class, IRecord + public ICollection Raw(string command, params object[] parameters) where T : class, IRecord { - var item = Get(i => i.Id == id); - - if (item != null && item.Any()) - { - return item.FirstOrDefault(); - } - - return default; + return Invoke>(d => d.Raw(command, parameters)); } private TResult Invoke(Func, TResult> func) where T : class, IRecord diff --git a/COA.EnterpriseServices.DataAccess/Helpers/CreditorHelper.cs b/COA.EnterpriseServices.DataAccess/Helpers/CreditorHelper.cs index 26541ee..54cbbae 100644 --- a/COA.EnterpriseServices.DataAccess/Helpers/CreditorHelper.cs +++ b/COA.EnterpriseServices.DataAccess/Helpers/CreditorHelper.cs @@ -2,6 +2,7 @@ using COA.EnterpriseServices.Creditors; using COA.EnterpriseServices.DataAccess.Entities; using System.Collections.Generic; +using System.Linq; namespace COA.EnterpriseServices.DataAccess.Helpers { @@ -35,51 +36,58 @@ namespace COA.EnterpriseServices.DataAccess.Helpers public ICollection GetSettlements(SettlementAttemptFilter filter) { - var dal2 = new DataAccessManager2(); + // we may use this non-generic throughout instead + var dataAccess = new DataAccessManager2(); - dal2.Get(c => c.ClientLastName == "Peters"); + // More info on "FromSqlRaw" => https://docs.microsoft.com/en-us/ef/core/querying/raw-sql + var attempts = dataAccess.Raw("uspCreditorPortal_SettlementAttemptGet @SettlementAttemptID = {0}, @CreditorProfileID = {1}", filter.SettlementAttemptId, filter.CreditorProfileId); - return DBWrapper.ExecuteProcedure(QuickbaseConnectionString, "uspCreditorPortal_SettlementAttemptGet", cmd => - { - if (filter != null) - { - cmd.CommandTimeout = 0; + // TODO: write extension to map list of T to destination type + return attempts + .Select(a => mapper.Map(a)) + .ToList(); - cmd.Parameters.AddWithValue("@SettlementAttemptID", filter.SettlementAttemptId); - cmd.Parameters.AddWithValue("@CreditorProfileID", filter.CreditorProfileId); - cmd.Parameters.AddWithValue("@CreditorID", filter.CreditorId); - cmd.Parameters.AddWithValue("@CreditorContactID", filter.CreditorContactId); - cmd.Parameters.AddWithValue("@FirstPaymentDateStart", filter.FirstPaymentDateStart); - cmd.Parameters.AddWithValue("@FirstPaymentDateEnd", filter.FirstPaymentDateEnd); - cmd.Parameters.AddWithValue("@ResponseDateStart", filter.ResponseDateStart); - cmd.Parameters.AddWithValue("@ResponseDateEnd", filter.ResponseDateEnd); - cmd.Parameters.AddWithValue("@PortalSubmissionDateStart", filter.PortalSubmissionDateStart); - cmd.Parameters.AddWithValue("@PortalSubmissionDateEnd", filter.PortalSubmissionDateEnd); + //return DBWrapper.ExecuteProcedure(QuickbaseConnectionString, "uspCreditorPortal_SettlementAttemptGet", cmd => + //{ + // if (filter != null) + // { + // cmd.CommandTimeout = 0; - if (filter.SettlementAttemptIds.AnyAndNotNull()) - { - cmd.Parameters.Add("@SettlementAttemptIDs", SqlDbType.Structured).Value = CreateIdsTable(filter.SettlementAttemptIds); - } - else if (filter.CreditorIds.AnyAndNotNull()) - { - cmd.Parameters.Add("@CreditorIDs", SqlDbType.Structured).Value = CreateIdsTable(filter.CreditorIds); - } - } + // cmd.Parameters.AddWithValue("@SettlementAttemptID", filter.SettlementAttemptId); + // cmd.Parameters.AddWithValue("@CreditorProfileID", filter.CreditorProfileId); + // cmd.Parameters.AddWithValue("@CreditorID", filter.CreditorId); + // cmd.Parameters.AddWithValue("@CreditorContactID", filter.CreditorContactId); + // cmd.Parameters.AddWithValue("@FirstPaymentDateStart", filter.FirstPaymentDateStart); + // cmd.Parameters.AddWithValue("@FirstPaymentDateEnd", filter.FirstPaymentDateEnd); + // cmd.Parameters.AddWithValue("@ResponseDateStart", filter.ResponseDateStart); + // cmd.Parameters.AddWithValue("@ResponseDateEnd", filter.ResponseDateEnd); + // cmd.Parameters.AddWithValue("@PortalSubmissionDateStart", filter.PortalSubmissionDateStart); + // cmd.Parameters.AddWithValue("@PortalSubmissionDateEnd", filter.PortalSubmissionDateEnd); - return cmd.ToList(); - }); + // if (filter.SettlementAttemptIds.AnyAndNotNull()) + // { + // cmd.Parameters.Add("@SettlementAttemptIDs", SqlDbType.Structured).Value = CreateIdsTable(filter.SettlementAttemptIds); + // } + // else if (filter.CreditorIds.AnyAndNotNull()) + // { + // cmd.Parameters.Add("@CreditorIDs", SqlDbType.Structured).Value = CreateIdsTable(filter.CreditorIds); + // } + // } + + // return cmd.ToList(); + //}); } public bool AddCreditor(Creditors.Creditor creditor) { - var creditorEntity = mapper.Map(creditor); + var creditorEntity = mapper.Map(creditor); return creditorDataAccess.Add(creditorEntity); } public bool UpdateCreditor(Creditors.Creditor creditor) { - var creditorEntity = mapper.Map(creditor); + var creditorEntity = mapper.Map(creditor); return creditorDataAccess.Update(creditorEntity); }