rewrite DAM to be non-generic

This commit is contained in:
2020-10-16 09:54:09 -04:00
parent 79b3b5be1d
commit 3ce8679d80
13 changed files with 237 additions and 154 deletions

View File

@ -0,0 +1,16 @@
using AutoMapper;
namespace COA.EnterpriseServices.DataAccess.Helpers
{
public class BaseHelper
{
protected DataAccessManager DataAccess { get; }
protected IMapper Mapper { get; }
public BaseHelper(DataAccessManager dataAccess, IMapper mapper)
{
DataAccess = dataAccess;
Mapper = mapper;
}
}
}

View File

@ -3,18 +3,13 @@ using System.Collections.Generic;
namespace COA.EnterpriseServices.DataAccess.Helpers
{
public class ClientHelper
public class ClientHelper : BaseHelper
{
private readonly DataAccessManager<Entities.Client> clientDataAccess;
public ClientHelper(DataAccessManager<Entities.Client> clientDataAccess, IMapper mapper)
{
this.clientDataAccess = clientDataAccess;
}
public ClientHelper(DataAccessManager dataAccess, IMapper mapper) : base(dataAccess, mapper) { }
public ICollection<Entities.Client> FindByEmail(string email)
{
var client = clientDataAccess.Get(c => c.Email.Equals(email));
var client = DataAccess.Get<Entities.Client>(c => c.Email.Equals(email));
return client;
}

View File

@ -1,50 +1,36 @@
using AutoMapper;
using COA.EnterpriseServices.Creditors;
using COA.EnterpriseServices.DataAccess.Entities;
using System.Collections.Generic;
using System.Linq;
namespace COA.EnterpriseServices.DataAccess.Helpers
{
public class CreditorHelper
public class CreditorHelper : BaseHelper
{
private readonly DataAccessManager<Entities.Creditor> creditorDataAccess;
private readonly DataAccessManager<Entities.SettlementAttempt> settlementAttemptDataAccess;
private readonly IMapper mapper;
public CreditorHelper(DataAccessManager<Entities.Creditor> creditorDataAccess, DataAccessManager<Entities.SettlementAttempt> settlementAttemptDataAccess, IMapper mapper)
public CreditorHelper(DataAccessManager dataAccess, IMapper mapper) : base(dataAccess, mapper) { }
public Creditor GetCreditor(int id)
{
this.creditorDataAccess = creditorDataAccess;
this.settlementAttemptDataAccess = settlementAttemptDataAccess;
this.mapper = mapper;
return DataAccess
.Get<Entities.Creditor>(id)
.MapTo<Creditor>();
}
public Creditors.Creditor GetCreditor(int id)
public SettlementAttempt GetSettlementAttempt(int id)
{
var creditor = creditorDataAccess.Get(id);
// map EF => domain type
return mapper.Map<Creditors.Creditor>(creditor);
return DataAccess
.Get<Entities.SettlementAttempt>(id)
.MapTo<SettlementAttempt>();
}
public Creditors.SettlementAttempt GetSettlementAttempt(int id)
public ICollection<SettlementAttempt> GetSettlements(SettlementAttemptFilter filter)
{
var attempt = settlementAttemptDataAccess.Get(id);
return mapper.Map<Creditors.SettlementAttempt>(attempt);
}
public ICollection<Creditors.SettlementAttempt> GetSettlements(SettlementAttemptFilter filter)
{
// we may use this non-generic throughout instead
var dataAccess = new DataAccessManager2();
// More info on "FromSqlRaw" => https://docs.microsoft.com/en-us/ef/core/querying/raw-sql
var attempts = dataAccess.Raw<Entities.SettlementAttempt>("uspCreditorPortal_SettlementAttemptGet @SettlementAttemptID = {0}, @CreditorProfileID = {1}", filter.SettlementAttemptId, filter.CreditorProfileId);
// TODO: write extension to map list of T to destination type
return attempts
.Select(a => mapper.Map<Creditors.SettlementAttempt>(a))
return DataAccess
.Raw<Entities.SettlementAttempt>("uspCreditorPortal_SettlementAttemptGet @SettlementAttemptID = {0}, @CreditorProfileID = {1}", filter.SettlementAttemptId, filter.CreditorProfileId)
.MapTo<SettlementAttempt>()
.ToList();
//return DBWrapper.ExecuteProcedure(QuickbaseConnectionString, "uspCreditorPortal_SettlementAttemptGet", cmd =>
@ -78,41 +64,41 @@ namespace COA.EnterpriseServices.DataAccess.Helpers
//});
}
public bool AddCreditor(Creditors.Creditor creditor)
public bool AddCreditor(Creditor creditor)
{
var creditorEntity = mapper.Map<Entities.Creditor>(creditor);
return creditorDataAccess.Add(creditorEntity);
return DataAccess.Add(creditorEntity);
}
public bool UpdateCreditor(Creditors.Creditor creditor)
public bool UpdateCreditor(Creditor creditor)
{
var creditorEntity = mapper.Map<Entities.Creditor>(creditor);
return creditorDataAccess.Update(creditorEntity);
return DataAccess.Update(creditorEntity);
}
public bool SetCreditorStatus(int creditorId, string status)
{
return creditorDataAccess.Update(creditorId, c => c.Status = status);
return DataAccess.Update<Entities.Creditor>(creditorId, c => c.Status = status);
}
public void SetOriginalCreditorAsPrimary(int creditorId)
{
var creditor = creditorDataAccess.Get(creditorId);
var creditor = DataAccess.Get<Entities.Creditor>(creditorId);
creditor.ReferenceNumber = string.Empty;
creditorDataAccess.Update(creditor);
DataAccess.Update(creditor);
}
public void ClearCreditorReferenceNumber(int creditorId)
{
var creditor = creditorDataAccess.Get(creditorId);
var creditor = DataAccess.Get<Entities.Creditor>(creditorId);
creditor.CurrentCreditorProfileId = creditor.OriginalCreditorProfileId;
creditorDataAccess.Update(creditor);
DataAccess.Update(creditor);
}
}
}