コード例 #1
0
ファイル: Bansta.cs プロジェクト: keenkid/BankReportService
        private void DoParse()
        {
            ListPaymentStatus = new List<PaymentStatus>();

            foreach (string section in loopSection)
            {
                try
                {
                    singleSection = section;
                    statusInfo = new PaymentStatus();

                    statusInfo.MessageID = MessageID;
                    SetCustomReference();
                    SetBankReference();
                    SetBankName();
                    statusInfo.Source = BankReportType.BANSTA;
                    SetStatusInformation();

                    ListPaymentStatus.Add(statusInfo);
                }
                catch(Exception ex)
                {
                    Logger.sysLog.ErrorFormat("{0} Custom Reference:{1}", ex.Message, statusInfo.RefID);
                }
            }
        }
コード例 #2
0
        public static int UpdatePaymentStatusTable(List<PaymentStatus> listPaymentStatus)
        {
            if (listPaymentStatus == null || listPaymentStatus.Count == 0)
            {
                return 0;
            }
            int count = 0;
            foreach (PaymentStatus status in listPaymentStatus)
            {
                try
                {
                    statusInfo = status;

                    DbDataAdapter adapter = BuildDbDataAdapter();

                    DataTable dt = new DataTable();

                    adapter.Fill(dt);

                    UpdateDataTable(dt);

                    count += adapter.Update(dt);
                }
                catch (Exception ex)
                {
                    Logger.sysLog.ErrorFormat("Database encounters error:\r\n{0}\r\nWhen operate data:\r\n{1}", ex.Message, status.ToString());
                }
            }
            return count;
        }
コード例 #3
0
        public static void StatusCodeAndDescriptionQuery(PaymentStatus statusInfo)
        {
            try
            {
                if (statusInfo == null || string.IsNullOrEmpty(statusInfo.BankStatusCode))
                {
                    throw new Exception("This EDI report is not a valid report.");
                }

                XDocument xmlDoc = XDocument.Parse(Res.BankingStatusCodeList);

                var rslt = (
                    from item in xmlDoc.Descendants(NODE_STATUS)
                    where 1 == 1
                    && string.Compare(item.Attribute(ATTRIBUTE_BANK).Value, statusInfo.BankCode, true) == 0
                    && string.Compare(item.Attribute(ATTRIBUTE_CODE).Value, statusInfo.BankStatusCode, true) == 0
                    && item.Attribute(ATTRIBUTE_SOURCE).Value.ToUpper().Contains(statusInfo.Source.ToString().ToUpper())
                    select
                    new { Description = item.Attribute(ATTRIBUTE_DESC).Value, StatusCode = item.Attribute(ATTRIBUTE_RESULT).Value }
                    ).First();

                statusInfo.OurStatusCode = rslt.StatusCode.SqlInjectionPrevent();
                statusInfo.BankStatusDesc = rslt.Description.SqlInjectionPrevent();
            }
            catch (Exception ex)
            {
                if (ex is InvalidOperationException)
                {
                    throw new Exception(string.Format("Please contact your supplier, \r\nThere is no XML NODE for Bank:{0},Report:{1} and bank status code:{2}.",
                        statusInfo.BankCode, statusInfo.Source, statusInfo.BankStatusCode));
                }
                throw;
            }
        }
コード例 #4
0
        public static void ActionCodeDescritionQuery(PaymentStatus statusInfo)
        {
            try
            {
                if (string.IsNullOrEmpty(statusInfo.BankStatusCode))
                {
                    throw new Exception("This EDI report is not a valid report.");
                }

                XDocument xmlDoc = XDocument.Parse(Res.ActionCode);

                var rslt = (from item in xmlDoc.Descendants(NODE_STATUS)
                            where item.Attribute(ATTRIBUTE_CODE).Value == statusInfo.BankStatusCode
                            select new { Description = item.Attribute(ATTRIBUTE_DESC).Value, StatusCode = item.Attribute(ATTRIBUTE_RESULT).Value }
                    ).First();

                statusInfo.OurStatusCode = rslt.StatusCode.SqlInjectionPrevent();
                statusInfo.BankStatusDesc = rslt.Description.SqlInjectionPrevent();
            }
            catch (Exception ex)
            {
                if (ex is InvalidOperationException)
                {
                    throw new Exception(string.Format("Please contact your supplier, \r\nThere is no XML NODE for Bank:{0},Report:{1} and bank status code:{2}.",
                        statusInfo.BankCode, statusInfo.Source, statusInfo.BankStatusCode));
                }
                throw;
            }
        }
コード例 #5
0
        public static void FillTransactionRejectReason(PaymentStatus status)
        {
            if (null == status || string.IsNullOrEmpty(status.BankReasonCode))
            {
                return;
            }

            try
            {
                XDocument xdoc = XDocument.Parse(Res.TransactionRejectReason);
                string desc = (from elmt in xdoc.Descendants("reason")
                               where 0 == string.Compare(elmt.Attribute("code").Value, status.BankReasonCode, true)
                               select elmt.Attribute("desc").Value).First();
                status.BankStatusDesc = desc;
            }
            catch
            {
                //
            }
        }
コード例 #6
0
ファイル: Utility.cs プロジェクト: keenkid/BankReportService
 public void GetOurStatus(PaymentStatus status)
 {
     if (null == status ||
         string.IsNullOrEmpty(status.BankStatusCode) ||
         status.Level == PaymentStatusLevel.Invalid)
     {
         return;
     }
     string level = (status.Level == PaymentStatusLevel.File) ? "FILE" : "TRAN";
     foreach (SwiftPaymentStatus util in _swiftPaymentStatusList)
     {
         if (0 == string.Compare(util.StatusLevel, level, true) &&
             0 == string.Compare(util.StatusCode, status.BankStatusCode, true))
         {
             status.OurStatusCode = util.StatusResult;
             status.BankStatusDesc = util.StatusDesc;
             break;
         }
     }
 }
コード例 #7
0
ファイル: Paymul.cs プロジェクト: keenkid/BankReportService
        private void DoParse()
        {
            ListPaymentStatus = new List<PaymentStatus>();
            int idx = 0;
            foreach (var section in loopSection)
            {
                singleSection = section;
                statusInfo = new PaymentStatus();

                statusInfo.MessageID = MessageID;
                SetCustomReference();
                statusInfo.BankRef = string.Empty;
                SetBankName();
                SetLineSpan(idx);
                statusInfo.Source = BankReportType.PAYMUL;
                statusInfo.OurStatusCode = "P";
                statusInfo.BankStatusCode = "P";
                statusInfo.BankStatusDesc = "Payment is sending to bank gateway";

                ListPaymentStatus.Add(statusInfo);
                idx++;
            }
        }
コード例 #8
0
        private static string BuildSqlScript()
        {
            sqlBuilder = new StringBuilder();

            foreach (PaymentStatus statusInfo in ListStatusInfo)
            {
                status = statusInfo;

                if (statusInfo.Source == BankReportType.PAYMUL)
                {
                    BuildInsertScript();
                }
                else
                {
                    BuildUpdateScript();
                }
            }
            Regex regex = new Regex(@";\b");
            string sqlStr = regex.Replace(sqlBuilder.ToString(), m => { return ";\n"; });
            if (string.IsNullOrEmpty(sqlStr))
            {
                return string.Empty;
            }
            return string.Format("BEGIN\n{0}\nEND;", sqlStr);
        }
コード例 #9
0
        private List<PaymentStatus> GetTransactionLevelPaymentStatus()
        {
            try
            {
                XDocument xdoc = XDocument.Parse(FileContent);
                var trans = xdoc.Descendants(PAIN002_TRAN_LEVEL_TAG).ToList();
                _listPaymentStatus = new List<PaymentStatus>();

                if (null != trans && 0 < trans.Count())
                {
                    trans.ForEach(transLevelDoc =>
                    {
                        var refID = transLevelDoc.Descendants(ORIGINAL_REFID);
                        var paymentStatus = transLevelDoc.Descendants(ORIGINAL_PAYMENT_STATUS);

                        if (null != refID && 0 < refID.Count() &&
                            null != paymentStatus && 0 < paymentStatus.Count())
                        {
                            var PaymentStatus = new PaymentStatus()
                            {
                                RefID = refID.First().Value,
                                Level = PaymentStatusLevel.Transaction,
                                BankStatusCode = paymentStatus.First().Value
                            };
                            _utility.GetOurStatus(PaymentStatus);

                            GetReasonCodeAndDesc(transLevelDoc, PaymentStatus);

                            _listPaymentStatus.Add(PaymentStatus);
                        }
                    });
                    return _listPaymentStatus;
                }
                return null;
            }
            catch
            {
                return null;
            }
        }
コード例 #10
0
        private void GetReasonCodeAndDesc(XElement elmt, PaymentStatus status)
        {
            try
            {
                var rsnInf = elmt.Descendants(STATUS_REASON_INFORMATION);
                if (null != rsnInf && 0 < rsnInf.Count())
                {
                    var rsn = rsnInf.First().Descendants(STATUS_REASON);
                    if (null != rsn && 0 < rsn.Count())
                    {
                        var rsnCd = rsn.First().Descendants(STATUS_REASON_CODE);
                        if (null != rsnCd && 0 < rsnCd.Count())
                        {
                            status.BankReasonCode = rsnCd.First().Value;
                            TransactionReasonCode.FillTransactionRejectReason(status);
                        }
                    }
                    //
                    var rsnDesc = rsnInf.First().Descendants(STATUS_READON_DESC).ToList();
                    if (null != rsnDesc && 0 < rsnDesc.Count())
                    {
                        StringBuilder tmp = new StringBuilder();
                        rsnDesc.ForEach(rd => tmp.Append(rd.Value));
                        status.BankStatusDesc = tmp.ToString();
                    }
                }
            }
            catch
            {

            }
        }
コード例 #11
0
        private List<PaymentStatus> GetFileLevelPaymentStatus()
        {
            try
            {
                XDocument xdoc = XDocument.Parse(FileContent);
                var fileLevelDoc = xdoc.Descendants(PAIN002_FILE_LEVEL_TAG).First();
                var msgID = fileLevelDoc.Descendants(ORIGINAL_MESSAGEID);
                var msgStatus = fileLevelDoc.Descendants(ORIGINAL_MESSAGE_STATUS);

                _listPaymentStatus = new List<PaymentStatus>();

                if (null != msgID && 0 < msgID.Count() &&
                    null != msgStatus && 0 < msgStatus.Count())
                {
                    var PaymentStatus = new PaymentStatus()
                    {
                        MessageID = msgID.First().Value,
                        Level = PaymentStatusLevel.File,
                        BankStatusCode = msgStatus.First().Value
                    };
                    _utility.GetOurStatus(PaymentStatus);

                    GetReasonCodeAndDesc(fileLevelDoc, PaymentStatus);

                    _listPaymentStatus.Add(PaymentStatus);

                    return _listPaymentStatus;
                }
                return null;
            }
            catch
            {
                return null;
            }
        }
コード例 #12
0
ファイル: Contrl.cs プロジェクト: keenkid/BankReportService
        private void NegativeActionCodeSetting()
        {
            foreach (var section in loopSection)
            {
                try
                {
                    singleSection = section;
                    statusInfo = new PaymentStatus();

                    statusInfo.MessageID = MessageID;
                    SetCustomReference();
                    SetBankReference();
                    SetBankName();
                    SetLineSpan();
                    statusInfo.Source = BankReportType.CONTRL;
                    SetErrorCodeAndDescription();

                    ListPaymentStatus.Add(statusInfo);
                }
                catch
                {

                }
            }
        }
コード例 #13
0
ファイル: Contrl.cs プロジェクト: keenkid/BankReportService
        private void PositiveActionCodeSetting()
        {
            statusInfo = new PaymentStatus();

            statusInfo.MessageID = MessageID;

            SetCustomReference();
            SetBankReference();
            SetBankName();

            statusInfo.Source = BankReportType.CONTRL;
            statusInfo.BankStatusCode = actionCode;
            BankingStatusXmlQuery.ActionCodeDescritionQuery(statusInfo);

            ListPaymentStatus.Add(statusInfo);
        }