コード例 #1
0
        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));
                }
            }
        }
コード例 #2
0
ファイル: Settlement.cs プロジェクト: nugayem/TMCSettler
        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));
                }
            }
        }
コード例 #3
0
ファイル: Settlement.cs プロジェクト: nugayem/TMCSettler
 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);
     }
 }
コード例 #4
0
ファイル: Settlement.cs プロジェクト: nugayem/TMCSettler
        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
                    });
                }
            }
        }
コード例 #5
0
ファイル: PaymentProducer.cs プロジェクト: nugayem/TMCSettler
        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);
                }
            }
        }