using DealerSelection.Api.Models; using DealerSelection.Common.Data.Dapper; using Dapper; using System.Data; using System.Data.SqlClient; using Microsoft.Extensions.Logging; using DealerSelection.Api.Infrastructure.CCAvenue; using DealerSelection.Api.Models.Enum; namespace DealerSelection.Api.Infrastructure.CCAvenue; public class Repository : RepositoryBaseDapperAsync, IRepository { private readonly ILogger _logger; public Repository(string cxnName, ILogger logger) : base(cxnName) { _logger = logger; } public async Task GetBookingDetail(string bookingId,string transactionId) { try { using (SqlConnection cxn = await OpenCxnAsync()) { IEnumerable cusotmerInfo = await cxn.QueryAsync(Procedure.GetBokingDetailOnBookingId, new { bookingId, transactionId }, commandType: CommandType.StoredProcedure); return cusotmerInfo.ToList().FirstOrDefault(); } } catch (Exception ex) { _logger.LogError($"DS Repo:-BookingId:- " + bookingId.ToString() + " Error at Repository:CCAvenueRefund in GetPendingOrderStatusList " + ex.Message.ToString()); throw new UnexpectedDataException($"Error at Repository:PendingStatusUpdate in CCAvenueRefund for BookingId: {bookingId}.", ex); } } public async Task UpdateRefundStatus(int BuId,string bookingId, string transactionId, string refundReferenceNo, RefundStatusResponse request) { string failreason = request.error_code + ' ' + request.reason; try { using (SqlConnection cxn = await OpenCxnAsync()) { await cxn.QueryAsync(Procedure.UpdateRefundStatus, new { BuId, bookingId, CCTransactionId=transactionId, RefundReferenceNo=refundReferenceNo, CCTransactionStatus = request.refund_status == 0 ? CCAvenueTransactionStatus.Refunded.ToString() : CCAvenueTransactionStatus.RefundFailed.ToString(), CCTransactionStatusReason = failreason }, commandType: CommandType.StoredProcedure); } } catch (Exception ex) { _logger.LogError($"DS Repo:-BookingId:-{bookingId}, TransactionId: {transactionId} Error at Repository:CCAvenue in UpdateRefundStatus" + ex.StackTrace); } } }