using AutoMapper; using COA.EnterpriseServices.Creditors; using COA.EnterpriseServices.DataAccess.Entities; using System.Collections.Generic; namespace COA.EnterpriseServices.DataAccess.Helpers { public class CreditorHelper { private readonly DataAccessManager creditorDataAccess; private readonly DataAccessManager settlementAttemptDataAccess; private readonly IMapper mapper; public CreditorHelper(DataAccessManager creditorDataAccess, DataAccessManager settlementAttemptDataAccess, IMapper mapper) { this.creditorDataAccess = creditorDataAccess; this.settlementAttemptDataAccess = settlementAttemptDataAccess; this.mapper = mapper; } public Creditors.Creditor GetCreditor(int id) { var creditor = creditorDataAccess.Get(id); // map EF => domain type return mapper.Map(creditor); } public Creditors.SettlementAttempt GetSettlementAttempt(int id) { var attempt = settlementAttemptDataAccess.Get(id); return mapper.Map(attempt); } public ICollection GetSettlements(SettlementAttemptFilter filter) { var dal2 = new DataAccessManager2(); dal2.Get(c => c.ClientLastName == "Peters"); return DBWrapper.ExecuteProcedure(QuickbaseConnectionString, "uspCreditorPortal_SettlementAttemptGet", cmd => { if (filter != null) { cmd.CommandTimeout = 0; 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); 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); return creditorDataAccess.Add(creditorEntity); } public bool UpdateCreditor(Creditors.Creditor creditor) { var creditorEntity = mapper.Map(creditor); return creditorDataAccess.Update(creditorEntity); } public bool SetCreditorStatus(int creditorId, string status) { return creditorDataAccess.Update(creditorId, c => c.Status = status); } public void SetOriginalCreditorAsPrimary(int creditorId) { var creditor = creditorDataAccess.Get(creditorId); creditor.ReferenceNumber = string.Empty; creditorDataAccess.Update(creditor); } public void ClearCreditorReferenceNumber(int creditorId) { var creditor = creditorDataAccess.Get(creditorId); creditor.CurrentCreditorProfileId = creditor.OriginalCreditorProfileId; creditorDataAccess.Update(creditor); } } }