using System.Data.Common; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace DXPDAL.Party; public class PartyDAL : IPartyDAL { private readonly IQueryExecutor _QueryExecutor; public PartyDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } public async Task GetPartyAsync(int dxpPartyId, LoginDTO login, CancellationToken ct) { return await _QueryExecutor.QuerySingleAsync( login, PartyQB.GET_BY_ID, new { DxpPartyId = dxpPartyId }, cancellationToken: ct).ConfigureAwait(false); } public async Task> FindByIdentityHashAsync( string? gstinHash, string? panHash, string? mobileHash, string? emailHash, LoginDTO login, CancellationToken ct) { return await _QueryExecutor.QueryAsync( login, PartyQB.FIND_BY_IDENTITY_HASH, new { GstinHash = gstinHash, PanHash = panHash, MobileHash = mobileHash, EmailHash = emailHash }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); } public async Task SavePartyAsync(PartyDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _QueryExecutor.ExecuteAsync( login, PartyQB.INSERT, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task UpdatePartyAsync(PartyDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _QueryExecutor.ExecuteAsync( login, PartyQB.UPDATE, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task> GetPartyLinksAsync(int dxpPartyId, LoginDTO login, CancellationToken ct) { return await _QueryExecutor.QueryAsync( login, PartyQB.GET_LINKS_BY_PARTY, new { DxpPartyId = dxpPartyId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); } public async Task SavePartyLinkAsync(PartyLinkDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _QueryExecutor.ExecuteAsync( login, PartyQB.INSERT_LINK, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task RevokePartyLinkAsync(int dxpPartyLinkId, LoginDTO login, DbTransaction tx, CancellationToken ct) { var param = new { DxpPartyLinkId = dxpPartyLinkId, ModifiedById = login.UserId, ModifiedOn = DateTime.UtcNow }; await _QueryExecutor.ExecuteAsync( login, PartyQB.REVOKE_LINK, param, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task> GetPartyBranchLinksAsync(int dxpPartyId, LoginDTO login, CancellationToken ct) { return await _QueryExecutor.QueryAsync( login, PartyQB.GET_BRANCH_LINKS_BY_PARTY, new { DxpPartyId = dxpPartyId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); } public async Task SavePartyBranchLinkAsync(PartyBranchLinkDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _QueryExecutor.ExecuteAsync( login, PartyQB.INSERT_BRANCH_LINK, dto, tx, cancellationToken: ct).ConfigureAwait(false); } }