using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Threading.Tasks;
using GB5Shared.DTO.Framework.Login;
using GB5Shared.QueryExecutor;
using GoodBooks.PAY.PAYDAL.DTO.Loyalty;
using GoodBooks.PAY.PAYDAL.Query.Loyalty;
namespace GoodBooks.PAY.PAYDAL.CustomCode.Loyalty
{
///
/// DAL implementation for MLOYALTYEARNCFG.
///
public class LoyaltyEarnCfgDAL : ILoyaltyEarnCfgDAL
{
private readonly IQueryExecutor _queryExecutor;
public LoyaltyEarnCfgDAL(IQueryExecutor queryExecutor)
{
_queryExecutor = queryExecutor;
}
///
public async Task> GetEarnCfgsByProgram(int programId, LoginDTO login)
{
try
{
IEnumerable configs = await _queryExecutor.QueryAsync(
login,
LoyaltyEarnCfgQB.GET_EARN_CFGS_BY_PROGRAM,
new { LoyaltyProgramId = programId }).ConfigureAwait(false);
return configs ?? Array.Empty();
}
catch (Exception)
{
throw;
}
}
///
public async Task InsertLoyaltyEarnCfg(LoyaltyEarnCfgDTO dto, LoginDTO login, DbTransaction? tx)
{
try
{
int rows = await _queryExecutor.ExecuteAsync(
login,
LoyaltyEarnCfgQB.INSERT_LOYALTY_EARN_CFG,
new
{
dto.LoyaltyEarnCfgId,
dto.LoyaltyProgramId,
dto.RuleName,
dto.RuleType,
dto.ReferenceId,
dto.EarnPoints,
dto.ValidFrom,
dto.ValidTo,
dto.Remarks,
dto.Version,
dto.Status,
dto.SortOrder,
CreatedById = login.UserId,
ModifiedById = login.UserId,
dto.SourceType,
TenantId = login.ClientId
},
tx).ConfigureAwait(false);
return rows;
}
catch (Exception)
{
throw;
}
}
///
public async Task UpdateLoyaltyEarnCfg(LoyaltyEarnCfgDTO dto, LoginDTO login, DbTransaction? tx)
{
try
{
int rows = await _queryExecutor.ExecuteAsync(
login,
LoyaltyEarnCfgQB.UPDATE_LOYALTY_EARN_CFG,
new
{
dto.LoyaltyEarnCfgId,
dto.RuleName,
dto.RuleType,
dto.ReferenceId,
dto.EarnPoints,
dto.ValidFrom,
dto.ValidTo,
dto.Remarks,
dto.Version,
dto.Status,
dto.SortOrder,
ModifiedById = login.UserId,
dto.SourceType,
TenantId = login.ClientId
},
tx).ConfigureAwait(false);
return rows;
}
catch (Exception)
{
throw;
}
}
}
}