using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using MMDAL.DTO.StockValuation; using MMDAL.Query.StockValuation; namespace MMDAL.CustomCode.StockAccountPost; public class StockAccountPostDAL : IStockAccountPostDAL { private readonly IQueryExecutor _qe; public StockAccountPostDAL(IQueryExecutor qe) => _qe = qe; public async Task> GetPostingLinesAsync( int objectTypeId, int objectId, int ouid, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, StockAccountPostQB.GET_POSTING_LINES, new { ObjectTypeId = objectTypeId, ObjectId = objectId, OUID = ouid }, cancellationToken: ct).ConfigureAwait(false); return result.ToList(); } public async Task> GetTransferPostingLinesAsync( int objectTypeId, int objectId, int ouid, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, StockAccountPostQB.GET_TRANSFER_POSTING_LINES, new { ObjectTypeId = objectTypeId, ObjectId = objectId, OUID = ouid }, cancellationToken: ct).ConfigureAwait(false); return result.ToList(); } public async Task> GetNonStockChargeItemsAsync( int objectTypeId, int objectId, int ouid, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, StockAccountPostQB.GET_NON_STOCK_CHARGE_ITEMS, new { ObjectTypeId = objectTypeId, ObjectId = objectId, OUID = ouid }, cancellationToken: ct).ConfigureAwait(false); return result.ToList(); } public async Task InsertPostDetailAsync( StockAccountPostDetailDTO detail, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, StockAccountPostQB.INSERT_POST_DETAIL, detail, cancellationToken: ct).ConfigureAwait(false); } public async Task MarkPostedAsync( long stockAccountPostDetailId, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, StockAccountPostQB.UPDATE_POST_DETAIL_POSTED, new { StockAccountPostDetailId = stockAccountPostDetailId }, cancellationToken: ct).ConfigureAwait(false); } public async Task MarkFailedAsync( long stockAccountPostDetailId, string error, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, StockAccountPostQB.UPDATE_POST_DETAIL_FAILED, new { StockAccountPostDetailId = stockAccountPostDetailId, PostedError = error }, cancellationToken: ct).ConfigureAwait(false); } public async Task> GetPostDetailsAsync( int objectTypeId, int objectId, int ouid, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, StockAccountPostQB.GET_POST_DETAILS, new { ObjectTypeId = objectTypeId, ObjectId = objectId, OUID = ouid }, cancellationToken: ct).ConfigureAwait(false); return result.ToList(); } }