private void Consumer() { List <E_TRANSFER_COMMISSION_SPLIT> splitFormular = CachingProvider.GetCachedData <List <E_TRANSFER_COMMISSION_SPLIT> >("Transfer"); List <E_FUNDGATE_COMMISSION_SPLIT> fundGatesplitFormular = CachingProvider.GetCachedData <List <E_FUNDGATE_COMMISSION_SPLIT> >("FundGate"); List <CommissionMapViewModel> commission = AutoMapper.Mapper.Map <List <CommissionMapViewModel> >(splitFormular); List <CommissionMapViewModel> fundGatecommission = AutoMapper.Mapper.Map <List <CommissionMapViewModel> >(fundGatesplitFormular); using (EtzbkDataContext etzbk = new EtzbkDataContext()) { try { etzbk.Configuration.AutoDetectChangesEnabled = false; int i = 0; foreach (var item in enqueData.GetConsumingEnumerable()) { List <E_FEE_DETAIL_BK> feeDetailList = new List <E_FEE_DETAIL_BK>(); if (item.CHANNELID == "09") { feeDetailList = FeeProcessing.ProcessCardloadSplit(item, fundGatecommission); } else { feeDetailList = FeeProcessing.ProcessCardloadSplit(item, commission); } etzbk.E_FEE_DETAIL_BK.AddRange(feeDetailList); E_SETTLEMENT_DOWNLOAD_BK e_settlement = AutoMapper.Mapper.Map <E_SETTLEMENT_DOWNLOAD_BK>(item); decimal bankFee = feeDetailList.Where(fee => fee.MERCHANT_CODE.EndsWith("9999")).Select(FEE => FEE.FEE).FirstOrDefault(); e_settlement.BANK_FEE = bankFee; etzbk.E_SETTLEMENT_DOWNLOAD_BK.Add(e_settlement); if (i % 50 == 0) { etzbk.SaveChanges(); } i++; } etzbk.SaveChanges(); } catch (Exception ex) { Logger logger = new Logger(); Console.WriteLine("Exception from EtranzactChannelTransaction Run " + ExceptionExtensions.GetFullMessage(ex)); logger.LogInfoMessage("Exception from Run " + nameof(EtranzactChannelTransaction) + " " + ExceptionExtensions.GetFullMessage(ex)); } } }
internal static void ProcessTransferSettlement(E_TRANSACTION item) { List <E_TRANSFER_COMMISSION_SPLIT> splitFormular = CachingProvider.GetCachedData <List <E_TRANSFER_COMMISSION_SPLIT> >("Transfer"); List <E_FUNDGATE_COMMISSION_SPLIT> fundGatesplitFormular = CachingProvider.GetCachedData <List <E_FUNDGATE_COMMISSION_SPLIT> >("FundGate"); List <CommissionMapViewModel> commission = AutoMapper.Mapper.Map <List <CommissionMapViewModel> >(splitFormular); List <CommissionMapViewModel> fundGatecommission = AutoMapper.Mapper.Map <List <CommissionMapViewModel> >(fundGatesplitFormular); using (EtzbkDataContext etzbk = new EtzbkDataContext()) { try { List <E_FEE_DETAIL_BK> feeDetailList = new List <E_FEE_DETAIL_BK>(); if (item.CHANNELID == "09") { feeDetailList = FeeProcessing.ProcessCardloadSplit(item, fundGatecommission); } else { feeDetailList = FeeProcessing.ProcessCardloadSplit(item, commission); } var e_Fee_detail = RemoveSettledFeeDetails(feeDetailList); etzbk.E_FEE_DETAIL_BK.AddRange(e_Fee_detail); E_SETTLEMENT_DOWNLOAD_BK e_settlement = AutoMapper.Mapper.Map <E_SETTLEMENT_DOWNLOAD_BK>(item); decimal bankFee = feeDetailList.Where(fee => fee.MERCHANT_CODE.EndsWith("9999")).Select(FEE => FEE.FEE).FirstOrDefault(); e_settlement.BANK_FEE = bankFee; if (!CheckSettledFee(e_settlement)) { etzbk.E_SETTLEMENT_DOWNLOAD_BK.Add(e_settlement); } item.PROCESS_STATUS = "1"; etzbk.E_TRANSACTION.Add(item); etzbk.Entry(item).State = System.Data.Entity.EntityState.Modified; etzbk.SaveChanges(); } catch (Exception ex) { Console.WriteLine("Exception from " + System.Reflection.MethodBase.GetCurrentMethod().Name + " " + nameof(Settlement) + " " + ExceptionExtensions.GetFullMessage(ex)); logger.LogInfoMessage("Exception from Run " + nameof(Settlement) + " " + System.Reflection.MethodBase.GetCurrentMethod().Name + " " + ExceptionExtensions.GetFullMessage(ex)); } } }
public static bool CheckSettledFee(E_SETTLEMENT_DOWNLOAD_BK e_settlement) { using (EtzbkDataContext db = new EtzbkDataContext()) { // var etrxData = new E_SETTLEMENT_DOWNLOAD_BK(); try { var etrxData = db.E_SETTLEMENT_DOWNLOAD_BK.Where(s => s.UNIQUE_TRANSID == e_settlement.UNIQUE_TRANSID).ToList(); if (etrxData.Count() > 0) { return(true); } } catch (Exception ex) { return(false); } return(false); } }
public static ResponseViewModel ProcessPaymentSettlement(E_TRANSACTION item) { ResponseViewModel response = new ResponseViewModel(); using (EtzbkDataContext etzbk = new EtzbkDataContext()) { //item = etzbk.E_TRANSACTION.Where(a => a.UNIQUE_TRANSID == "0327002364000289256353").FirstOrDefault(); if (item.UNIQUE_TRANSID.Contains("#")) { item.UNIQUE_TRANSID = item.UNIQUE_TRANSID.Substring(0, item.UNIQUE_TRANSID.IndexOf("#")); } try { var merchantIntercept = etzbk.E_MERCHANT_CODE_INTERCEPT.Where(a => a.INITIATOR_CODE == item.CARD_NUM.Substring(0, 3) && a.MERCHANT_CODE == item.MERCHANT_CODE && a.CHANNELID == item.CHANNELID && a.TRANS_CODE == item.TRANS_CODE && a.INTERCEPT_STATUS == "1").FirstOrDefault(); if (merchantIntercept != null) { if (merchantIntercept.INTERCEPT_MERCHANT_CODE != null || merchantIntercept.INTERCEPT_MERCHANT_CODE.Trim() != "") { item.MERCHANT_CODE = merchantIntercept.INTERCEPT_MERCHANT_CODE; } if (merchantIntercept.CARD_NUM != null || merchantIntercept.CARD_NUM.Trim() != "") { item.CARD_NUM = merchantIntercept.CARD_NUM; } } if (item.CHANNELID == "09") { using (FundGateDataContext fundGate = new FundGateDataContext()) { var fundGateQuery = from A in fundGate.FUNDGATE_RESPONSE join B in fundGate.FUNDGATE_REQUEST on new { X = A.clientRef, Y = A.terminal } equals new { X = B.clientRef, Y = B.terminal } into jointData from joinRecord in jointData.DefaultIfEmpty() where (joinRecord.action == "VT" && A.etzRef == item.UNIQUE_TRANSID) select new { joinRecord.lineType }; var fundGateTrx = fundGateQuery.FirstOrDefault(); if (fundGateTrx != null) { var swicthData = etzbk.E_SWITCHIT_TRANSFORMER.Where(a => a.CARD_NUM == item.CARD_NUM && a.PROVIDER_ID == fundGateTrx.lineType).FirstOrDefault(); if (swicthData != null) { item.CARD_NUM = swicthData.TRANSFORM_CARD; item.MERCHANT_CODE = swicthData.MERCHANT_CODE; } } } } string merchantCode = item.MERCHANT_CODE; List <E_FEE_DETAIL_BK> feeDetailList = new List <E_FEE_DETAIL_BK>(); E_SETTLEMENT_DOWNLOAD_BK e_settlement = AutoMapper.Mapper.Map <E_SETTLEMENT_DOWNLOAD_BK>(item); var merchantScaleQuery = from A in etzbk.E_MERCHANT join B in etzbk.E_CATSCALE on new { X = A.CAT_ID } equals new { X = B.CAT_ID } into jointData from joinRecord in jointData.DefaultIfEmpty() where (A.MERCHANT_CODE == merchantCode) select new { A.FEE_STATUS, A.SPECIAL_SPLIT, A.MERCHANT_NAME, joinRecord.SCALE_VALUE, joinRecord.SCALE_TYPE, joinRecord.CAT_ID }; var merchantScale = merchantScaleQuery.FirstOrDefault(); if (merchantScale == null) { response = new ResponseViewModel() { ErrorType = ErrorType.NoMerchantCode, MerchantCode = merchantCode, Response = false }; //return response; ///Write Code to handle No Merchant Code or Split category configured } else { List <CommissionMapViewModel> commission = new List <CommissionMapViewModel>(); if (merchantScale.SPECIAL_SPLIT == "0") { // Check If Fee is Charged if not, ignore and comparee value if (merchantScale.SCALE_TYPE == "1" & item.FEE == 0) { item.FEE = FeeProcessing.CalculateFeeBeneficiary(merchantScale.SCALE_VALUE, item.TRANS_AMOUNT); } var query = from A in etzbk.E_MERCHANT_COMMISSION_SPLIT where (A.MERCHANT_CODE == item.MERCHANT_CODE) select new CommissionMapViewModel { AGENT = "", MAIN_FLAG = A.MAIN_FLAG, SPLIT_CARD = A.SPLIT_CARD, RATIO = A.RATIO, SPLIT_DESCR = A.SPLIT_DESCR, COMM_SUSPENCE = item.MERCHANT_CODE }; commission = AutoMapper.Mapper.Map <List <CommissionMapViewModel> >(query.ToList()); } else if (merchantScale.SPECIAL_SPLIT == "1") { var query = from A in etzbk.E_MERCHANT_SPECIAL_SPLIT where (A.MERCHANT_CODE == item.MERCHANT_CODE) select new CommissionMapViewModel { AGENT = "", MAIN_FLAG = A.MAIN_FLAG, SPLIT_CARD = A.SPLIT_CARD, RATIO = A.SVALUE, SPLIT_DESCR = A.SPLIT_DESCR, COMM_SUSPENCE = item.MERCHANT_CODE }; commission = AutoMapper.Mapper.Map <List <CommissionMapViewModel> >(query.ToList()); } else { response = new ResponseViewModel() { ErrorType = ErrorType.InvalidSplitType, MerchantCode = merchantCode, Response = false }; // return response; } if (merchantScale.SPECIAL_SPLIT == "1" || merchantScale.SPECIAL_SPLIT == "0") { feeDetailList = FeeProcessing.ProcessRatioPaymentSplit(item, commission); var e_Fee_detail = RemoveSettledFeeDetails(feeDetailList); etzbk.E_FEE_DETAIL_BK.AddRange(e_Fee_detail); decimal bankFee = feeDetailList.Where(fee => fee.MERCHANT_CODE.EndsWith("9999")).Select(FEE => FEE.FEE).FirstOrDefault(); e_settlement.BANK_FEE = bankFee; } } if (!CheckSettledFee(e_settlement)) { etzbk.E_SETTLEMENT_DOWNLOAD_BK.Add(e_settlement); } item.PROCESS_STATUS = "1"; etzbk.E_TRANSACTION.Add(item); etzbk.Entry(item).State = System.Data.Entity.EntityState.Modified; etzbk.SaveChanges(); // Console.WriteLine(nameof(PaymentProducer) + " Final round saved to database "); return(new ResponseViewModel() { ErrorType = ErrorType.Valid, MerchantCode = merchantCode, Response = true }); } catch (Exception ex) { Console.WriteLine("Exception from " + System.Reflection.MethodBase.GetCurrentMethod().Name + " " + nameof(Settlement) + " " + ExceptionExtensions.GetFullMessage(ex) + item.UNIQUE_TRANSID); logger.LogInfoMessage("Exception from Run " + nameof(Settlement) + " " + System.Reflection.MethodBase.GetCurrentMethod().Name + " " + ExceptionExtensions.GetFullMessage(ex) + item.UNIQUE_TRANSID); return(new ResponseViewModel() { ErrorType = ErrorType.Exception, MerchantCode = item.UNIQUE_TRANSID, Message = ex.Message, Response = false }); } } }
private void Consumer() { List <string> McNoSplit = new List <string>(); using (EtzbkDataContext etzbk = new EtzbkDataContext()) { try { etzbk.Configuration.AutoDetectChangesEnabled = false; int i = 0; foreach (var item in enqueData.GetConsumingEnumerable()) { string Merchant_Code = item.MERCHANT_CODE; List <E_FEE_DETAIL_BK> feeDetailList = new List <E_FEE_DETAIL_BK>(); var merchantScaleQuery = from A in etzbk.E_MERCHANT join B in etzbk.E_CATSCALE on new { X = A.CAT_ID } equals new { X = B.CAT_ID } into jointData from joinRecord in jointData.DefaultIfEmpty() where (A.MERCHANT_CODE == Merchant_Code) select new { A.FEE_STATUS, A.SPECIAL_SPLIT, joinRecord.SCALE_VALUE, joinRecord.SCALE_TYPE, joinRecord.CAT_ID }; var merchantScale = merchantScaleQuery.FirstOrDefault(); if (merchantScale == null) { if (!McNoSplit.Contains(Merchant_Code)) { McNoSplit.Add(Merchant_Code); } continue; ///Write Code to handle No Merchant Code or Split category configured } if (merchantScale.SPECIAL_SPLIT == "0") { // Check If Fee is Charged if not, ignore and comparee value if (merchantScale.SCALE_TYPE == "1" & item.FEE == 0) { item.FEE = FeeProcessing.CalculateFeeBeneficiary(merchantScale.SCALE_VALUE, item.TRANS_AMOUNT); } var query = from A in etzbk.E_MERCHANT_COMMISSION_SPLIT where (A.MERCHANT_CODE == item.MERCHANT_CODE) select new CommissionMapViewModel { AGENT = "", MAIN_FLAG = A.MAIN_FLAG, SPLIT_CARD = A.SPLIT_CARD, RATIO = A.RATIO, SPLIT_DESCR = A.SPLIT_DESCR, COMM_SUSPENCE = item.MERCHANT_CODE }; List <CommissionMapViewModel> commission = AutoMapper.Mapper.Map <List <CommissionMapViewModel> >(query.ToList()); var e_settlement = AutoMapper.Mapper.Map <E_SETTLEMENT_DOWNLOAD_BK>(item); feeDetailList = FeeProcessing.ProcessRatioPaymentSplit(item, commission); decimal bankFee = feeDetailList.Where(fee => fee.MERCHANT_CODE.EndsWith("9999")).Select(FEE => FEE.TRANS_AMOUNT).FirstOrDefault(); e_settlement.BANK_FEE = bankFee; etzbk.E_SETTLEMENT_DOWNLOAD_BK.Add(e_settlement); } else { var query = from A in etzbk.E_MERCHANT_SPECIAL_SPLIT where (A.MERCHANT_CODE == item.MERCHANT_CODE) select new CommissionMapViewModel { AGENT = "", MAIN_FLAG = A.MAIN_FLAG, SPLIT_CARD = A.SPLIT_CARD, RATIO = A.SVALUE, SPLIT_DESCR = A.SPLIT_DESCR, COMM_SUSPENCE = item.MERCHANT_CODE }; List <CommissionMapViewModel> commission = AutoMapper.Mapper.Map <List <CommissionMapViewModel> >(query.ToList()); E_SETTLEMENT_DOWNLOAD_BK e_settlement = AutoMapper.Mapper.Map <E_SETTLEMENT_DOWNLOAD_BK>(item); feeDetailList = FeeProcessing.ProcessRatioPaymentSplit(item, commission); decimal bankFee = feeDetailList.Where(fee => fee.MERCHANT_CODE.EndsWith("9999")).Select(FEE => FEE.FEE).FirstOrDefault(); e_settlement.BANK_FEE = bankFee; etzbk.E_SETTLEMENT_DOWNLOAD_BK.Add(e_settlement); } // feeDetailList = FeeProcessing.ProcessCardloadSplit(item, commission); etzbk.E_FEE_DETAIL_BK.AddRange(feeDetailList); if (i % 50 == 0) { //var uniqueIDs = feeDetailList.Select(u => u.UNIQUE_TRANSID).Distinct().ToArray(); //var uniqueIDsOnDB = etzbk.E_TRANSACTION.Where(u => uniqueIDs.Contains(u.UNIQUE_TRANSID)).Select(u => u.UNIQUE_TRANSID).ToArray(); //var feeForDBata = feeDetailList.Where(u => !uniqueIDsOnDB.Contains(u.UNIQUE_TRANSID)); etzbk.SaveChanges(); logger.LogInfoMessage(nameof(PaymentProducer) + " round saved to database "); } i++; } etzbk.SaveChanges(); logger.LogInfoMessage(nameof(PaymentProducer) + " FInal round saved to database "); } catch (Exception ex) { Logger logger = new Logger(); Console.WriteLine("Exception from EtranzactChannelTransaction Run " + ExceptionExtensions.GetFullMessage(ex)); logger.LogInfoMessage("Exception from Run " + nameof(PaymentProducer) + " " + ExceptionExtensions.GetFullMessage(ex)); } //Act on MC without Split Console.WriteLine("List of MC without split"); foreach (string item in McNoSplit) { Console.WriteLine(item); } } }