You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

65 lines
3.0 KiB

using CustomerOnlineRemit.Business.TPApiHelper;
using CustomerOnlineRemit.Common.Helper;
using CustomerOnlineRemit.Common.Model.Account;
using CustomerOnlineRemit.Common.Model.Transaction;
using CustomerOnlineRemit.Repository.Repository.Transaction;
using Newtonsoft.Json;
namespace CustomerOnlineRemit.Business.Business.Transaction
{
public class TransactionBusiness : ITransactionBusiness
{
private static readonly Serilog.ILogger _logger = Serilog.Log.ForContext<TransactionBusiness>();
ITransactionRepository _transactionRepo;
IAPIHelper _apiHelper;
public TransactionBusiness(ITransactionRepository transactionRepo, IAPIHelper apiHelper)
{
_transactionRepo = transactionRepo;
_apiHelper = apiHelper;
}
public async Task<ExrateResponse> DoCalculation(CalculateModel calcModel, LoginResponse loginDetails)
{
ExrateResponse _response = new ExrateResponse();
_logger.Debug("TRANSACTIONBUSINESS | DOCALCULATION | REQUEST | " + JsonConvert.SerializeObject(calcModel));
ExratePayoutDetailsModel _partnerDetails = await _transactionRepo.GetPayoutDetails(calcModel, loginDetails);
ExrateCalculateRequestModel _request = GenerateExrateParams(calcModel, loginDetails, _partnerDetails);
_response = await _apiHelper.GetExRate(_request);
return _response;
}
private ExrateCalculateRequestModel GenerateExrateParams(CalculateModel calcModel, LoginResponse loginDetails, ExratePayoutDetailsModel partnerDetails)
{
return new ExrateCalculateRequestModel()
{
RequestedBy = "online",
SCountry = Utilities.ReadFromAppSettings("OnlineAgent:SendingCountry"),
SSuperAgent = Utilities.ReadFromAppSettings("OnlineAgent:SuperAgentId"),
SBranch = Utilities.ReadFromAppSettings("OnlineAgent:BranchId"),
CollCurrency = Utilities.ReadFromAppSettings("OnlineAgent:CollCurrency"),
PayoutPartner = partnerDetails.PayoutPartner,
PCountry = calcModel.PayoutCountryId,
PCountryName = partnerDetails.PayoutCountryName,
pCountryCode = partnerDetails.PayoutCountryName,
PCurrency = partnerDetails.PayoutCurrency,
SCurrency = Utilities.ReadFromAppSettings("OnlineAgent:CollCurrency"),
CAmount = calcModel.CollectAmt,
PAmount = calcModel.PayoutAmt,
ServiceType = calcModel.PayoutMethod,
CalcBy = calcModel.CalculateBy,
PaymentType = "wallet",
IsManualSc = "false",
ManualSc = "0",
IsExRateCalcByPartner = "false",
ProcessFor = Utilities.ReadFromAppSettings("OnlineAgent:ProcessFor"),
ProcessId = calcModel.ProcessId,
UserName = loginDetails.UserName,
SessionId = calcModel.ProcessId
};
}
}
}