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.
356 lines
18 KiB
356 lines
18 KiB
using CustomerOnlineV2.Api.API.TPApi;
|
|
using CustomerOnlineV2.Common.Helper;
|
|
using CustomerOnlineV2.Common.Models;
|
|
using CustomerOnlineV2.Common.Models.AccountModel;
|
|
using CustomerOnlineV2.Common.Models.HomeModel;
|
|
using CustomerOnlineV2.Common.Models.TransactionModel;
|
|
using CustomerOnlineV2.Repository.Repository.TransactionRepository;
|
|
using Microsoft.Extensions.Logging;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace CustomerOnlineV2.Business.Business.TransactionBusiness
|
|
{
|
|
public class TransactionBusiness : ITransactionBusiness
|
|
{
|
|
private readonly ILogger<TransactionBusiness> _logger;
|
|
private readonly ITransactionRepository _transactionRepo;
|
|
private readonly ITPApiService _tpApi;
|
|
|
|
public TransactionBusiness(ILogger<TransactionBusiness> logger, ITransactionRepository transactionRepo, ITPApiService tpApi)
|
|
{
|
|
_logger = logger;
|
|
_transactionRepo = transactionRepo;
|
|
_tpApi = tpApi;
|
|
}
|
|
|
|
public async Task<ExrateResponse> DoCalculation(SendTransactionModel calcRequest, LoginResponse loginDetails)
|
|
{
|
|
ExrateResponse _response = new ExrateResponse();
|
|
_logger.LogDebug("TRANSACTIONBUSINESS | DOCALCULATION | REQUEST | " + JsonConvert.SerializeObject(calcRequest));
|
|
_response = ValidateExrateRequest(calcRequest);
|
|
|
|
if (_response.ResponseCode == ResponseHelper.SUCCESS)
|
|
{
|
|
ExratePayoutDetailsModel _partnerDetails = await _transactionRepo.GetPayoutDetails(calcRequest, loginDetails);
|
|
|
|
ExrateCalculateRequestModel _request = GenerateExrateParams(calcRequest, loginDetails, _partnerDetails);
|
|
|
|
_response = await _tpApi.GetExRate(_request);
|
|
_response.ProcessId = calcRequest.ProcessId;
|
|
_response.tpExRate = _partnerDetails.TpExRate;
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
public async Task<SendMoneyResponse> SendMoney(SendTransactionModel sendMoneyRequest, LoginResponse loginDetails)
|
|
{
|
|
SendMoneyResponse _response = new SendMoneyResponse();
|
|
_logger.LogDebug("TRANSACTIONBUSINESS | SENDMONEY | REQUEST | " + JsonConvert.SerializeObject(sendMoneyRequest));
|
|
_response = ValidateSendMoneyRequest(sendMoneyRequest);
|
|
|
|
if (_response.ResponseCode == ResponseHelper.SUCCESS)
|
|
{
|
|
SendMoneyRequestModel _request = GenerateSendMoneyParams(sendMoneyRequest, loginDetails);
|
|
|
|
_response = await _tpApi.SendMoney(_request);
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
public async Task<SendMoneySuccessModel> GetTransactionDetails(string id, LoginResponse loginDetails)
|
|
{
|
|
return await _transactionRepo.GetTransactionDetails(id, loginDetails);
|
|
}
|
|
|
|
public async Task<TransactionDetailModel> GetReceiptData(string id, LoginResponse loginDetails)
|
|
{
|
|
return await _transactionRepo.GetReceiptData(id, loginDetails);
|
|
}
|
|
|
|
public async Task<SendMoneySuccessModel> SaveTranData(TrustPaymentRequest tranData, LoginResponse loginDetails)
|
|
{
|
|
return await _transactionRepo.SaveTranData(tranData, loginDetails);
|
|
}
|
|
|
|
public async Task<SendMoneySuccessModel> UpdateTranData(TrustPaymentRequest tranData, LoginResponse loginDetails)
|
|
{
|
|
return await _transactionRepo.UpdateTranData(tranData, loginDetails);
|
|
}
|
|
private SendMoneyRequestModel GenerateSendMoneyParams(SendTransactionModel sendMoneyRequest, LoginResponse loginDetails)
|
|
{
|
|
return new SendMoneyRequestModel
|
|
{
|
|
SenderId = loginDetails.UserId,
|
|
SIpAddress = sendMoneyRequest.IpAddress,
|
|
IsRealtime = "false",
|
|
RequestedBy = "online",
|
|
Receiver = new Common.Models.TransactionModel.ReceiverModel { ReceiverId = sendMoneyRequest.Receiver },
|
|
CDDI = new CDDIModel
|
|
{
|
|
PurposeOfRemittance = sendMoneyRequest.PurposeOfRemit,
|
|
|
|
SourceOfFund = sendMoneyRequest.SourceOfFund,
|
|
},
|
|
SCountryId = Utilities.ReadFromAppSettings("OnlineAgent:SendingCountry"),
|
|
PCountryId = sendMoneyRequest.ReceivingCountry,
|
|
DeliveryMethodId = sendMoneyRequest.DeliveryMethod,
|
|
CollCurr = Utilities.ReadFromAppSettings("OnlineAgent:CollCurrency"),
|
|
PayoutCurr = sendMoneyRequest.PayoutCurrency,
|
|
CollAmt = sendMoneyRequest.CollectAmount,
|
|
PayoutAmt = sendMoneyRequest.PayoutAmount,
|
|
TransferAmt = sendMoneyRequest.TransferAmount,
|
|
ServiceCharge = sendMoneyRequest.ServiceCharge,
|
|
ExRate = sendMoneyRequest.ExRate,
|
|
CalBy = sendMoneyRequest.CalcBy,
|
|
TpPCurr = sendMoneyRequest.PayoutCurrency,
|
|
PayOutPartnerId = sendMoneyRequest.PayoutPartner,
|
|
ForexSessionId = sendMoneyRequest.ForexSessionId,
|
|
PaymentType = "wallet",
|
|
SchemeId = sendMoneyRequest.SchemeId,
|
|
TpExRate = sendMoneyRequest.TpExRate,
|
|
ProcessId = sendMoneyRequest.ProcessId,
|
|
UserName = loginDetails.UserName,
|
|
ProviderId = "online",
|
|
DiscountedFee = sendMoneyRequest.DiscountFee,
|
|
};
|
|
}
|
|
|
|
private ExrateCalculateRequestModel GenerateExrateParams(SendTransactionModel calcRequest, LoginResponse loginDetails, ExratePayoutDetailsModel partnerDetails)
|
|
{
|
|
return new ExrateCalculateRequestModel()
|
|
{
|
|
RequestedBy = "mobile",
|
|
SCountry = Utilities.ReadFromAppSettings("OnlineAgent:SendingCountry"),
|
|
SSuperAgent = Utilities.ReadFromAppSettings("OnlineAgent:SuperAgentId"),
|
|
SBranch = Utilities.ReadFromAppSettings("OnlineAgent:BranchId"),
|
|
CollCurrency = Utilities.ReadFromAppSettings("OnlineAgent:CollCurrency"),
|
|
PayoutPartner = partnerDetails.PayoutPartner,
|
|
PCountry = calcRequest.ReceivingCountry,
|
|
PCountryName = partnerDetails.PayoutCountryName,
|
|
pCountryCode = partnerDetails.PayoutCountryCode,
|
|
PCurrency = partnerDetails.PayoutCurrency,
|
|
SCurrency = Utilities.ReadFromAppSettings("OnlineAgent:CollCurrency"),
|
|
CAmount = calcRequest.CollectAmount,
|
|
PAmount = calcRequest.PayoutAmount,
|
|
ServiceType = calcRequest.DeliveryMethod,
|
|
CalcBy = calcRequest.CalcBy,
|
|
PaymentType = "wallet",
|
|
IsManualSc = "false",
|
|
ManualSc = "0",
|
|
IsExRateCalcByPartner = "false",
|
|
ProcessFor = Utilities.ReadFromAppSettings("OnlineAgent:ProcessFor"),
|
|
ProcessId = calcRequest.ProcessId,
|
|
UserName = loginDetails.UserName,
|
|
SessionId = calcRequest.ProcessId,
|
|
SchemeId = calcRequest.SchemeId,
|
|
TpExRate = partnerDetails.TpExRate,
|
|
DiscountedFee = calcRequest.DiscountFee
|
|
};
|
|
}
|
|
|
|
private SendMoneyResponse ValidateSendMoneyRequest(SendTransactionModel sendMoneyRequest)
|
|
{
|
|
SendMoneyResponse _response = new SendMoneyResponse();
|
|
_response.ResponseCode = ResponseHelper.SUCCESS;
|
|
_response.ResponseMessage = ResponseMessageHelper.SUCCESS;
|
|
|
|
if (string.IsNullOrEmpty(sendMoneyRequest.CalcBy))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param calcBy can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (sendMoneyRequest.CalcBy != "c" || (sendMoneyRequest.CalcBy != "p"))
|
|
{
|
|
|
|
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param calcBy have invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
|
|
}
|
|
else if (string.IsNullOrEmpty(sendMoneyRequest.ReceivingCountry))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param ReceivingCountry can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (string.IsNullOrEmpty(sendMoneyRequest.DeliveryMethod))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param DeliveryMethod can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (string.IsNullOrEmpty(sendMoneyRequest.CollectAmount))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Params CollectAmount can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (string.IsNullOrEmpty(sendMoneyRequest.PayoutAmount))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Params PayoutAmount can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (string.IsNullOrEmpty(sendMoneyRequest.SchemeId))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param SchemeId can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (Utilities.TryParseDecimal(sendMoneyRequest.CollectAmount) <= 0)
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param CollectAmount has invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (Utilities.TryParseDecimal(sendMoneyRequest.PayoutAmount) <= 0)
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param PayoutAmount has invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (sendMoneyRequest.CalcBy == "c" && Utilities.TryParseDecimal(sendMoneyRequest.CollectAmount) <= 0)
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param CollectAmount has invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (sendMoneyRequest.CalcBy == "p" && Utilities.TryParseDecimal(sendMoneyRequest.PayoutAmount) <= 0)
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param PayoutAmount has invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (string.IsNullOrEmpty(sendMoneyRequest.Receiver))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Params Receiver can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (string.IsNullOrEmpty(sendMoneyRequest.PurposeOfRemit))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Params PurposeOfRemit can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (Convert.ToBoolean(sendMoneyRequest.TermsAndConditions) != true)
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param TermsAndConditions has invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | SENDMONEY.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
|
|
return _response;
|
|
}
|
|
|
|
private ExrateResponse ValidateExrateRequest(SendTransactionModel calcRequest)
|
|
{
|
|
ExrateResponse _response = new ExrateResponse();
|
|
_response.ResponseCode = ResponseHelper.SUCCESS;
|
|
_response.ResponseMessage = ResponseMessageHelper.SUCCESS;
|
|
|
|
if (string.IsNullOrEmpty(calcRequest.CalcBy))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param calcBy can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (calcRequest.CalcBy != "c" || calcRequest.CalcBy != "p")
|
|
{
|
|
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param calcBy have invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
|
|
}
|
|
else if (string.IsNullOrEmpty(calcRequest.ReceivingCountry))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param ReceivingCountry can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (string.IsNullOrEmpty(calcRequest.DeliveryMethod))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param DeliveryMethod can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (string.IsNullOrEmpty(calcRequest.CollectAmount))
|
|
{
|
|
if (string.IsNullOrEmpty(calcRequest.PayoutAmount))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Params CollectAmount and PayoutAmount can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
}
|
|
else if (string.IsNullOrEmpty(calcRequest.SchemeId))
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param SchemeId can not be emoty!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (Utilities.TryParseDecimal(calcRequest.CollectAmount) <= 0)
|
|
{
|
|
if (Utilities.TryParseDecimal(calcRequest.PayoutAmount) <= 0)
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param CollectAmount or PayoutAmount has invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
}
|
|
else if (calcRequest.CalcBy == "c" && Utilities.TryParseDecimal(calcRequest.CollectAmount) <= 0)
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param CollectAmount has invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
else if (calcRequest.CalcBy == "p" && Utilities.TryParseDecimal(calcRequest.PayoutAmount) <= 0)
|
|
{
|
|
_response.ResponseCode = ResponseHelper.FAILED;
|
|
_response.ResponseMessage = "Param PayoutAmount has invalid value!";
|
|
|
|
_logger.LogError("TRANSACTIONBUSINESS | DOCALCULATION.VALIDATEEXRATEREQUEST | REQUEST | " + JsonConvert.SerializeObject(_response));
|
|
}
|
|
return _response;
|
|
}
|
|
public async Task<CustomerTransactionList> GetTranData(LoginResponse loginDetails)
|
|
{
|
|
return await _transactionRepo.GetTranData(loginDetails);
|
|
}
|
|
|
|
public async Task<CustomerTransactionList> GetTransactionReportList(LoginResponse loginDetails , CustomerTransaction model)
|
|
{
|
|
|
|
return await _transactionRepo.GetTransactionReportList(loginDetails, model);
|
|
}
|
|
public async Task<CustomerNotificationModel> GetRewardPoints(LoginResponse loginDetails)
|
|
{
|
|
return (CustomerNotificationModel)await _transactionRepo.GetRewardPoints(loginDetails);
|
|
}
|
|
}
|
|
}
|