private async Task DispatchInternalAsync(IEnumerable <CommandBase> commands, HashSet <string> usedChannels)
 {
     foreach (var commandBase in commands)
     {
         if (!(commandBase is ITracingOnly))
         {
             if (!usedChannels.Contains(commandBase.ChannelId))
             {
                 usedChannels.Add(commandBase.ChannelId);
             }
             var r1 = _mx.GetRunner(commandBase);
             ChannelTransaction tran = null;
             try
             {
                 var r = r1.RunInternalAsync(commandBase);
                 if (r != null)
                 {
                     tran = _transactionManager.GetCommandTransaction(commandBase.ChannelId, commandBase, false);
                     await r;
                     commandBase.IsExecuted = true;
                     tran.Commit();
                 }
             }
             catch (Exception e)
             {
                 throw new TectureCommandRunException(commandBase, e);
             }
             finally
             {
                 tran?.Dispose();
             }
         }
     }
 }
예제 #2
0
        public bool MoveNext()
        {
            if (_tran != null)
            {
                lock (locker)
                {
                    if (_tran != null)
                    {
                        _tran = _auxilary.GetQueryTransaction();
                    }
                }
            }
            var result = _original.MoveNext();

            if (!result)
            {
                return(false);
            }

            _currentIndex++;
            if (_currentIndex > _indexBeforeReset)
            {
                _current = _original.Current;
                _data.Add(_current.DeepClone());
            }
            return(result);
        }
예제 #3
0
        public JsonResult LoadGrid(string sidx, string sord, int rows, int page = 1)
        {
            string getSearchby  = Request["_searchby"];
            string getVal       = Request["_val"];
            string getStartDate = Request["_startDate"];
            string getEndDate   = Request["_endDate"];
            string getTrxType   = Request["_trxType"];

            Params param = new Params()
            {
                Parameter = new Dictionary <string, string>()
            };

            param.RequestTransType = "saldo".Equals(getTrxType) ? "GetSMSTransactionInfoSaldo" :
                                     "mutasi".Equals(getTrxType) ? "GetSMSTransactionInfoMutasi" :
                                     "kupon".Equals(getTrxType) ? "GetSMSTransactionInfoCoupon" :
                                     "payment".Equals(getTrxType) ? "GetSMSTransactionInfoPayment" :
                                     "all".Equals(getTrxType) ? "GetSMSTransactionAll" : string.Empty;

            param.Parameter.Add("mobileNo", getVal);
            param.Parameter.Add("startDate", getStartDate);
            param.Parameter.Add("endDate", getEndDate);

            SMSBCATransaction model = ChannelTransaction.SMSBCA(param);
            var trx = model.Transactions.ToList().Select(x => new
            {
                TransactionDate = x.TransactionDate,
                AccountNumber   = x.AccountNumber,
                TransactionType = x.TransactionType,
                ResponseCode    = x.ResponseCode,
                Amount          = x.Amount,
                ReferenceNumber = x.ReferenceNumber,
                Biller          = x.Biller,
                Receiver        = x.Receiver,
                Total           = x.Total,
                Other           = x.Other
            });

            int pageIndex    = Convert.ToInt32(page) - 1;
            int pageSize     = rows;
            int totalRecords = trx.Count();
            int totalPages   = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

            trx = trx.Skip((page - 1) * pageSize).Take(pageSize);
            var       recordCount = trx.Count();
            JSONTable jTable      = new JSONTable();

            jTable.total   = totalPages;
            jTable.page    = page;
            jTable.records = totalRecords;
            jTable.rows    = trx.ToArray();

            jTable.additional = model.ATMCardHolderName + "<@z>" + model.ATMCardNumber + "<@z>" + model.Status;

            return(Json(jTable, JsonRequestBehavior.AllowGet));
        }
 /// <summary>Advances the enumerator to the next element of the collection.</summary>
 /// <returns>true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.</returns>
 /// <exception cref="T:System.InvalidOperationException">The collection was modified after the enumerator was created.</exception>
 public bool MoveNext()
 {
     if (_tran != null)
     {
         lock (locker)
         {
             if (_tran != null)
             {
                 _tran = _auxilary.GetQueryTransaction();
             }
         }
     }
     return(_original.MoveNext());
 }
        private async Task RunCommandsAsync(IEnumerable <CommandBase> commands, HashSet <string> usedChannels,
                                            CancellationToken token = default)
        {
            foreach (var commandBase in commands)
            {
                if (!(commandBase is ITracingOnly))
                {
                    if (!usedChannels.Contains(commandBase.ChannelId))
                    {
                        usedChannels.Add(commandBase.ChannelId);
                    }
                    var r1 = _mx.GetRunner(commandBase);
                    ChannelTransaction tran = null;
                    Stopwatch          sw   = null;
                    if (_traceCollector != null && _traceCollector.Profiling)
                    {
                        sw = new Stopwatch();
                        sw.Start();
                    }

                    try
                    {
                        var r = r1.RunInternalAsync(commandBase, token);
                        if (r != null)
                        {
                            tran = _transactionManager.GetCommandTransaction(commandBase.ChannelId, commandBase, true);
                            await r;
                            commandBase.IsExecuted = true;
                            tran.Commit();
                        }
                    }
                    catch (Exception e)
                    {
                        commandBase.Exception = e;
                        throw new TectureCommandRunException(commandBase, e);
                    }
                    finally
                    {
                        tran?.Dispose();
                        if (_traceCollector != null && _traceCollector.Profiling)
                        {
                            sw.Stop();
                            commandBase.TimeTaken = sw.Elapsed;
                        }
                    }
                }
            }
        }
예제 #6
0
        public JsonResult LoadGrid(string sidx, string sord, int rows, int page = 1)
        {
            string getSearchby  = Request["_searchby"];
            string getVal       = Request["_val"];
            string getStartDate = Request["_startDate"];
            string getEndDate   = Request["_endDate"];
            string getTrxType   = Request["_trxType"];

            Params param = new Params()
            {
                Parameter = new Dictionary <string, string>()
            };

            param.RequestTransType = "GetTopUpTransactionByMobileNo";
            param.Parameter.Add("mobileNo", getVal);
            param.Parameter.Add("startDate", getStartDate);
            param.Parameter.Add("endDate", getEndDate);

            SMSTopUpTransaction model = ChannelTransaction.SMSTopUp(param);
            var trx = model.Transactions.ToList().Select(x => new
            {
                AtmCardNumber       = x.AtmCardNumber,
                TransactionDate     = x.TransactionDate,
                RequestId           = x.RequestId,
                AccountNumber       = x.AccountNumber,
                ValueOfTransactions = x.ValueOfTransactions,
                ResponseCode        = x.ResponseCode,
            });

            int pageIndex    = Convert.ToInt32(page) - 1;
            int pageSize     = rows;
            int totalRecords = trx.Count();
            int totalPages   = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

            trx = trx.Skip((page - 1) * pageSize).Take(pageSize);
            var       recordCount = trx.Count();
            JSONTable jTable      = new JSONTable();

            jTable.total   = totalPages;
            jTable.page    = page;
            jTable.records = totalRecords;
            jTable.rows    = trx.ToArray();

            jTable.additional = model.ATMCardHolderName + "<@z>" + model.ATMCardNumber + "<@z>" + model.Status;

            return(Json(jTable, JsonRequestBehavior.AllowGet));
        }
예제 #7
0
        public JsonResult LoadGrid(string sidx, string sord, int rows, int page = 1)
        {
            string getSearchby  = Request["_searchby"];
            string getVal       = Request["_val"];
            string getStartDate = Request["_startDate"];
            string getEndDate   = Request["_endDate"];
            string getTrxType   = Request["_trxType"];

            Params param = new Params()
            {
                Parameter = new Dictionary <string, string>()
            };

            param.RequestTransType =
                "AccountInformation".Equals(getTrxType) ? "GetIBTransactionByUserIdAcctInfo" :
                "BCAAccountTransfer".Equals(getTrxType) ? "GetIBTransactionByUserIdTransferBCA" :
                "CreditCardInformation".Equals(getTrxType) ? "GetCreditCardLogIBankByUserId" :
                "CreditCustomerInformation".Equals(getTrxType) ? "GetIBTransactionByUserIdConsumerCreditInfo" :
                "EcommercePayment".Equals(getTrxType) ? "GetIBTransactionByUserIdPaymentECommerce" :
                "InvestmentProductInformation".Equals(getTrxType) ? "GetIBTransactionByUserIdInvesProductInfo" :
                "OtherBankAccountTransfer".Equals(getTrxType) ? "GetIBTransactionByUserIdTransferDomestic" :
                "Payment".Equals(getTrxType) ? "GetIBTransactionByUserIdPayment" :
                "Purchase".Equals(getTrxType) ? "GetIBTransactionByUserIdPurchase" :
                "TransferReject".Equals(getTrxType) ? "GetIBTransactionByUserIdRejected" :
                "TransferStatusBCAAccountInput".Equals(getTrxType) ? "GetIBTransactionByUserIdTransferBCAInputStatus" :
                "TransferStatusBCAAccountTransaction".Equals(getTrxType) ? "GetIBTransactionByUserIdTransferBCATxnStatus" :
                "TransferStatusOtherBankAccountInput".Equals(getTrxType) ? "GetIBTransactionByUserIdTransferDomesticInputStatus" :
                "TransferStatusOtherBankAccountTransaction".Equals(getTrxType) ? "GetIBTransactionByUserIdTransferDomesticTxnStatus" :
                "UserSession".Equals(getTrxType) ? "GetIBTransactionByUserIdUserSession" :
                "VirtualAccountTransfer".Equals(getTrxType) ? "GetIBTransactionByUserIdVirtualAcct" :
                "TopUpWallet".Equals(getTrxType) ? "GetIBTransactionByUserIdTopUpWallet" :
                "AKSesFundWithdrawal".Equals(getTrxType) ? "GetIBTransactionByUserIdAKSesFundWithdrawal" :
                string.Empty;


            if ("userId".Equals(getSearchby))
            {
                param.Parameter.Add("userId", getVal);
            }
            if ("atmNo".Equals(getSearchby))
            {
                param.Parameter.Add("atmNo", getVal);
            }

            param.Parameter.Add("startDate", getStartDate);
            param.Parameter.Add("endDate", getEndDate);

            KBITransaction model = ChannelTransaction.KBI(param);
            var            trx   = model.Transactions.ToList().Select(x => new
            {
                ExpiredDate           = x.ExpiredDate,
                InputDate             = x.InputDate,
                MiddlewareDate        = x.MiddlewareDate,
                SignOffDate           = x.SignOffDate,
                SignOnDate            = x.SignOnDate,
                TandemDate            = x.TandemDate,
                TransactionDate       = x.TransactionDate,
                TransferDate          = x.TransferDate,
                Forex                 = x.Forex,
                Amount                = x.Amount,
                AmountIDR             = x.AmountIDR,
                ConversiNominal       = x.ConversiNominal,
                Cost                  = x.Cost,
                ExchangeRate          = x.ExchangeRate,
                Fee                   = x.Fee,
                Nominal               = x.Nominal,
                NominalTransfers      = x.NominalTransfers,
                TransferAmount        = x.TransferAmount,
                TransferNominal       = x.TransferNominal,
                FromAccountId         = x.FromAccountId,
                AccountNumber         = x.AccountNumber,
                AccountPaymentNumber  = x.AccountPaymentNumber,
                AccountSendersNumber  = x.AccountSendersNumber,
                Bank                  = x.Bank,
                BillerId              = x.BillerId,
                BillerRefInfo         = x.BillerRefInfo,
                Branch                = x.Branch,
                Cause                 = x.Cause,
                Citizen               = x.Citizen,
                City                  = x.City,
                Currency              = x.Currency,
                CustomerName          = x.CustomerName,
                CustomerNumber        = x.CustomerNumber,
                Description           = x.Description,
                Email                 = x.Email,
                FlagToken             = x.FlagToken,
                FromAccountNumber     = x.FromAccountNumber,
                InformationType       = x.InformationType,
                LateChargeAmount      = x.LateChargeAmount,
                MiddlewareStatus      = x.MiddlewareStatus,
                MUFromAccountNumber   = x.MUFromAccountNumber,
                MUTransaction         = x.MUTransaction,
                News                  = x.News,
                Number                = x.Number,
                PaymentAccountNumber  = x.PaymentAccountNumber,
                PaymentFor            = x.PaymentFor,
                Periodic              = x.Periodic,
                PPUNumber             = x.PPUNumber,
                Process               = x.Process,
                Reason                = x.Reason,
                Reference             = x.Reference,
                ReferenceNo           = x.ReferenceNo,
                ReferenceNumber       = x.ReferenceNumber,
                SenderAccountNo       = x.SenderAccountNo,
                SendToSubject         = x.SendToSubject,
                ServiceTransfer       = x.ServiceTransfer,
                Status                = x.Status,
                TandemStatus          = x.TandemStatus,
                ToAccountName         = x.ToAccountName,
                ToAccountNoHp         = x.ToAccountNoHp,
                ToAccountNumber       = x.ToAccountNumber,
                ToAccountType         = x.ToAccountType,
                Token                 = x.Token,
                TokenStatus           = x.TokenStatus,
                TransactionType       = x.TransactionType,
                TransferService       = x.TransferService,
                TransferToAccount     = x.TransferToAccount,
                TransferToAccountName = x.TransferToAccountName,
                TransferType          = x.TransferType,
                UserId                = x.UserId,
                WNI                   = x.WNI
            });

            int pageIndex    = Convert.ToInt32(page) - 1;
            int pageSize     = rows;
            int totalRecords = trx.Count();
            int totalPages   = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

            trx = trx.Skip((page - 1) * pageSize).Take(pageSize);
            var       recordCount = trx.Count();
            JSONTable jTable      = new JSONTable();

            jTable.total   = totalPages;
            jTable.page    = page;
            jTable.records = totalRecords;
            jTable.rows    = trx.ToArray();

            if ("userId".Equals(getSearchby))
            {
                jTable.additional = model.CustomerName + "<@z>" + model.CardNumber;
            }
            if ("atmNo".Equals(getSearchby))
            {
                jTable.additional = model.CustomerName + "<@z>" + model.UserId;
            }

            return(Json(jTable, JsonRequestBehavior.AllowGet));
        }
예제 #8
0
 public WrappedEnumerator(IEnumerator <T> original, ChannelTransaction tran)
 {
     _tran     = tran;
     _original = original;
     _demander = EmptyDemander <T> .Instance;
 }
예제 #9
0
        public JsonResult LoadGrid(string sidx, string sord, int rows, int page = 1)
        {
            string getSearchby  = Request["_searchby"];
            string getVal       = Request["_val"];
            string getStartDate = Request["_startDate"];
            string getEndDate   = Request["_endDate"];
            string getTrxType   = Request["_trxType"];

            Params param = new Params()
            {
                Parameter = new Dictionary <string, string>()
            };

            param.RequestTransType = "payment".Equals(getTrxType) ? "GetMBTransactionMPayment"
                                        : "transfer".Equals(getTrxType) ? "GetMBTransactionMTransfer"
                                        : "commerce".Equals(getTrxType) ? "GetMBTransactionMCommerce"
                                        : "info".Equals(getTrxType) ? "GetMBTransactionMInfo"
                                        : "admin".Equals(getTrxType) ? "GetMBTransactionMAdmin"
                                        : "otp".Equals(getTrxType) ? "GetMBTransactionOTP"
                                        : string.Empty;

            param.Parameter.Add("mobileNo", getVal);
            param.Parameter.Add("startDate", getStartDate);
            param.Parameter.Add("endDate", getEndDate);

            MBCATransaction model = ChannelTransaction.MBCA(param);
            var             trx   = model.Transactions.ToList().Select(x => new
            {
                MiddlewareDate       = x.MiddlewareDate,
                TandemDate           = x.TandemDate,
                AccountNumber        = x.AccountNumber,
                ATMCardNumber        = x.ATMCardNumber,
                CustomerName         = x.CustomerName,
                CustomerNumber       = x.CustomerNumber,
                PaymentAccountNumber = x.PaymentAccountNumber,
                AccountSendersNumber = x.AccountSendersNumber,
                CodeAndBankName      = x.CodeAndBankName,
                ToAccountNumber      = x.ToAccountNumber,
                ToAccountMU          = x.ToAccountMU,
                ToAccountName        = x.ToAccountName,
                AdminType            = x.AdminType,
                TransactionType      = x.TransactionType,
                PaymentType          = x.PaymentType,
                PaymentFor           = x.PaymentFor,
                Currency             = x.Currency,
                Nominal         = x.Nominal,
                Amount          = x.Amount,
                AmountForex     = x.AmountForex,
                ExchangesRate   = x.ExchangesRate,
                Status          = x.Status,
                DescCode        = x.DescCode,
                Information     = x.Information,
                ReferenceNumber = x.ReferenceNumber
            });

            int pageIndex    = Convert.ToInt32(page) - 1;
            int pageSize     = rows;
            int totalRecords = trx.Count();
            int totalPages   = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

            trx = trx.Skip((page - 1) * pageSize).Take(pageSize);
            var       recordCount = trx.Count();
            JSONTable jTable      = new JSONTable();

            jTable.total   = totalPages;
            jTable.page    = page;
            jTable.records = totalRecords;
            jTable.rows    = trx.ToArray();

            jTable.additional = model.CustomerName + "<@z>" + model.ATMCardNumber + "<@z>" + model.Status
                                + "<@z>" + model.HandPhoneNumberOnTandem + "<@z>" + model.CustomerNameTandem + "<@z>" + model.StatusTandem;

            return(Json(jTable, JsonRequestBehavior.AllowGet));
        }
예제 #10
0
        public JsonResult LoadJqGrid()
        {
            string noRek_CustID = Request["_inputParamBBP"];
            string getStartDate = Request["_startDate"];
            string getFIID      = Request["_FIID"];
            string getLNET      = Request["_LNET"];

            string getSearch  = Request["_searchCondition"];
            string getNextPos = Request["_nextPos"];
            string getPrevPos = Request["_prevPos"];
            string getCurrPos = Request["_currPos"];

            Params param = new Params()
            {
                Parameter = new Dictionary <string, string>()
            };

            param.RequestTransType = "GetPBTransactionByATMNoOrAcctNo";
            param.Parameter.Add("idNum", noRek_CustID);
            param.Parameter.Add("txnDate", Formatter.ToStringExact(Convert.ToDateTime(getStartDate), "yyMMdd"));
            param.Parameter.Add("fiid", getFIID);
            param.Parameter.Add("lnet", getLNET);
            param.WSDL = "PhoneBankingTransaction";

            if (getSearch == "next")
            {
                param.RequestTransType = "GetPBTransactionByATMNoOrAcctNoNext";
                param.Parameter.Add("nextPos", getNextPos);
                param.Parameter.Add("prevPos", getPrevPos);
                param.Parameter.Add("curPos", getCurrPos);
            }
            else if (getSearch == "prev")
            {
                param.RequestTransType = "GetPBTransactionByATMNoOrAcctNoPrev";
                param.Parameter.Add("nextPos", getNextPos);
                param.Parameter.Add("prevPos", getPrevPos);
                param.Parameter.Add("curPos", getCurrPos);
            }

            BCAByPhoneTransaction data = ChannelTransaction.BBP(param);

            if (string.IsNullOrEmpty(data.Msg))
            {
                ViewBag.Message = data.Msg;
            }

            var trx = (from x in data.Transactions
                       select new
            {
                CustomerIDOrAccountNo = x.CustomerID,
                TransactionDate = x.TransactionDate,
                TransactionDescription = x.TransactionDesc,
                ResponseCode = x.ResponseCode,
                TransactionTime = x.TransactionTime,
            }).ToList();

            JSONResponse result = new JSONResponse();

            result.Value         = trx;
            result.Response      = data.NextPos + "<#>" + data.PrevPos + "<#>" + data.CurrPos;
            ViewBag.CountDataBBP = data.Transactions.Count();
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
예제 #11
0
 public TracedEnumerator(IEnumerator original, ChannelTransaction tran)
 {
     _tran     = tran;
     _original = original;
     _demander = EmptyDemander.Instance;
 }