Exemplo n.º 1
0
        public Queue <GrappedRecharge> GetPendingRechargeQueue(int queueNo, int count = 100)
        {
            var masterDataTable = db.GetData("Select * from v_pending_recharge_req t WHERE queue_no=" + queueNo + "  AND ROWNUM < " + count + " order by dcreatedon", null);

            if (masterDataTable == null)
            {
                return(null);
            }
            if (masterDataTable.Rows.Count == 0)
            {
                return(null);
            }

            var results = new Queue <GrappedRecharge>();

            foreach (DataRow row in masterDataTable.Rows)
            {
                var obj = new GrappedRecharge();
                obj.Id                 = row["row_id"] == DBNull.Value ? -1 : int.Parse(row["row_id"].ToString());
                obj.SubscriberNo       = row["subs_no"] == DBNull.Value ? string.Empty : row["subs_no"].ToString();
                obj.MasterId           = row["cl_id"] == DBNull.Value ? int.MinValue : int.Parse(row["cl_id"].ToString());
                obj.Amount             = row["amount"] == DBNull.Value ? 0 : double.Parse(row["amount"].ToString());
                obj.PointOfSaleId      = row["pos_id"] == DBNull.Value ? string.Empty : row["pos_id"].ToString();
                obj.PointOfSaleAccount = row["pos_acc"] == DBNull.Value ? 0 : int.Parse(row["pos_acc"].ToString());
                obj.AccessChannelId    = row["access_channel"] == DBNull.Value ? string.Empty : row["access_channel"].ToString();
                obj.Status             = row["status"] == DBNull.Value ? 0 :int.Parse(row["status"].ToString());
                obj.StatusTime         = row["status_time"] == DBNull.Value ? DateTime.MinValue :DateTime.Parse(row["status_time"].ToString());
                obj.QueueNo            = row["queue_no"] == DBNull.Value ? 0 :int.Parse(row["queue_no"].ToString());
                obj.RefNo              = row["ref_no"] == DBNull.Value ? string.Empty : row["ref_no"].ToString();
                obj.RefMessage         = row["ref_message"] == DBNull.Value ? string.Empty : row["ref_message"].ToString();
                obj.RefTransNo         = row["ref_trans_no"] == DBNull.Value ? string.Empty : row["ref_trans_no"].ToString();
                obj.RefTime            = row["ref_time"] == DBNull.Value ? DateTime.MinValue :DateTime.Parse(row["ref_time"].ToString());
                obj.DebugInfo          = row["debug_info"] == DBNull.Value ? string.Empty : row["debug_info"].ToString();
                obj.ApiTransaction     = row["api_trans"] == DBNull.Value ? 0 : int.Parse(row["api_trans"].ToString());
                results.Enqueue(obj);
            }
            return(results);
        }
Exemplo n.º 2
0
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker         = sender as BackgroundWorker;
            GrappedRecharge  GrabbedRequest = null;
            string           msg            = string.Empty;

            for (int i = 1; (i <= 10); i++)
            {
                if ((worker.CancellationPending == true))
                {
                    e.Cancel = true;
                    break;
                }
                else
                {
                    // Perform a time consuming operation and report progress.
                    if (!chnotfetch.Checked)
                    {
                        QueuedRequests = new RechargeRepo(db, null).GetPendingRechargeQueue(int.Parse(ch));
                        if (!object.ReferenceEquals(QueuedRequests, null) && (QueuedRequests.Count > 0))
                        {
                            msg        = Environment.NewLine + DateTime.Now.ToString("dd HH:mm:ss") + " Load " + QueuedRequests.Count.ToString() + " request(s) from database";
                            logmessage = msg;
                            worker.ReportProgress(40, msg);
                            if (!chwithoutlog.Checked)
                            {
                                WritingLOGToFILE(logmessage);
                            }
                            while (QueuedRequests.Count > 0 && !chnotfetch.Checked)
                            {
                                //Thread.Sleep(2000);

                                int RequestsLeft = QueuedRequests.Count;
                                GrabbedRequest = QueuedRequests.Dequeue();

                                #region ...solve redundancy message
                                //if (GrabbedRequest.RequestQueueCommandId != (int)COMMANDS.PAYMENT_ROLLBACK
                                //    && GrabbedRequest.RequestQueueCommandId != (int)COMMANDS.YM_BONUS
                                //    && Utility.isRedundancyMessage(GrabbedRequest.Client_Mobile, GrabbedRequest.Client_Message, GrabbedRequest.Req_Time))
                                //{
                                //    ////////////////////////////////////////////////////////////
                                //    sms_outmessage OutMessage = new sms_outmessage();
                                //    OutMessage.Short_Code = SharedParams.Short_Code;
                                //    string Msg = SharedParams.System_Messages["REDUNDANCY_CMD"];
                                //    OutMessage.Message = Msg;
                                //    OutMessage.Mobile_No = GrabbedRequest.Client_Mobile;
                                //    OutMessage.Create();
                                //    GrabbedRequest.Debug_Info = SharedParams.System_Messages["REDUNDANCY_CMD"];
                                //    GrabbedRequest.Lifecycle = "REDUNDANCY_CMD";
                                //    GrabbedRequest.CloseRequestWithFail();
                                //    ////////////////////////////////////////////////////////////
                                //    worker.ReportProgress(40, "REDUNDANCY_CMD");
                                //    return;
                                //}
                                #endregion

                                //Utility.WritingLOGToFILE("-----------------------------------------------------------------");
                                //Utility.WritingLOGToFILE("ReqId[ "+GrabbedRequest.Id.ToString()+" ]");
                                msg = Environment.NewLine + DateTime.Now.ToString("dd HH:mm:ss") + " No[" + RequestsLeft + "] [" +
                                      GrabbedRequest.MasterId.ToString() + "] Recharge " + GrabbedRequest.SubscriberNo + "(" + GrabbedRequest.Amount.ToString("N0")
                                      + ") ...";
                                logmessage = msg;
                                worker.ReportProgress(40, msg);
                                #region Recharge
                                var watch = System.Diagnostics.Stopwatch.StartNew();
                                AttachMessage = string.Empty;
                                Operations operation = new Operations(db);
                                var        result    = operation.DoRecharge(GrabbedRequest);
                                watch.Stop();
                                double elapsedMs = watch.ElapsedMilliseconds;
                                msg         = operation.resultDisplayMsg + "  within " + Math.Round(elapsedMs / 1000, 2) + " sec ";
                                logmessage += msg;
                                worker.ReportProgress(40, msg);
                                if (!chwithoutlog.Checked)
                                {
                                    WritingLOGToFILE(logmessage);
                                }
                                #endregion
                            }
                        } //(GrabbedRequest != null)
                        else
                        {
                            msg         = Environment.NewLine + DateTime.Now.ToString("dd HH:mm:ss") + " Loading 0 request(s) from database";
                            logmessage += msg;
                            if (!chwithoutlog.Checked)
                            {
                                WritingLOGToFILE(logmessage);
                            }
                            worker.ReportProgress(0, msg);
                            Thread.Sleep(NoRowsWaitTimeout);
                        }
                        //System.Threading.Thread.Sleep(2000);
                        //worker.ReportProgress((i * 10));
                    }
                }
            }
        }
Exemplo n.º 3
0
        public async Task <RechargeResponseDto> DoRecharge(GrappedRecharge recharge)
        {
            //Thread.Sleep(2000);
            #region Local test
            var result = new RechargeResponseDto();

            var watch = System.Diagnostics.Stopwatch.StartNew();
            BasicHttpBinding httpBinding = new BasicHttpBinding();
            EndpointAddress  p           = new EndpointAddress(SharedParams.OCSEndpoint);

            //Start Send Request------------------------------ -
            var payService = new CBSService.CBSInterfaceAccountMgrClient(httpBinding, p);
            {
                /// payService = SharedParams.OCSEndpoint;
                CBSService.PaymentRequestMsg msg       = new CBSService.PaymentRequestMsg();
                CBSService.RequestHeader     reqheader = new CBSService.RequestHeader();

                reqheader.SessionEntity          = new CBSService.SessionEntityType();
                reqheader.SessionEntity.Name     = SharedParams.OCSApiUser;
                reqheader.SessionEntity.Password = SharedParams.OCSApiPassword;
                reqheader.TransactionId          = "";
                reqheader.SequenceId             = "1";
                reqheader.CommandId   = "Payment";
                reqheader.Version     = "1";
                reqheader.SerialNo    = "";
                reqheader.RequestType = CBSService.RequestHeaderRequestType.Event;
                reqheader.SessionEntity.RemoteAddress = SharedParams.PaymentRemoteAddress;
                msg.RequestHeader  = reqheader;
                msg.PaymentRequest = new CBSService.PaymentRequest();
                msg.PaymentRequest.SubscriberNo    = recharge.SubscriberNo;
                msg.PaymentRequest.PaymentAmt      = Convert.ToInt64(recharge.Amount) * 100;
                msg.PaymentRequest.PaymentMode     = "1000";
                msg.PaymentRequest.TransactionCode = $"VTU{recharge.Id}";
                msg.PaymentRequest.RefillProfileID = recharge.Amount.ToString();


                try
                {
                    var requestResult = await payService.PaymentAsync(msg);

                    if (requestResult != null)
                    {
                        result.ResultCode = requestResult.PaymentResultMsg.ResultHeader.ResultCode;
                        result.ResultDesc = requestResult.PaymentResultMsg.ResultHeader.ResultDesc;
                        result.TransNo    = requestResult.PaymentResultMsg.PaymentResult.InternalSerialNo;
                    }
                    else
                    {
                        result.ResultCode = "-1001";
                        result.ResultDesc = "OCS return null";
                    }
                }
                catch (Exception ex)
                {
                    result.ResultCode = "-1000";
                    result.ResultDesc = ex.GetType().Name + "-" + ex.Message;
                }
            }
            //}
            // End Send Request -------------------------------
            //await HTTPClientWrapper<RechargeResponseDto>.Get("");
            watch.Stop();
            double elapsedMs  = watch.ElapsedMilliseconds;
            var    collection = new RechargeCollection();
            collection.Id         = recharge.MasterId;
            collection.Status.Id  = result.ResultCode == SharedParams.SuccessPaymentCode ? 1 : 2;
            collection.RefNo      = result.ResultCode.ToString();
            collection.RefMessage = result.ResultDesc;
            collection.RefTransNo = result.TransNo;
            collection.RefTime    = DateTime.Now;
            collection.DebugInfo  = result.ResultDesc + " OCS(" + elapsedMs + ")";
            resultDisplayMsg      = collection.DebugInfo;
            elapsedMs             = 0;
            watch = System.Diagnostics.Stopwatch.StartNew();
            var dbResult = new RechargeRepo(db, null).UpdateWithBalance(collection);
            watch.Stop();
            elapsedMs         = watch.ElapsedMilliseconds;
            resultDisplayMsg += " DB(" + elapsedMs + ")";
            return(result);

            #endregion
        }