public void ConvertToRTGSTextFileFormatTestDataValid()
        {
            var outgoingSingleCreditController = new OutgoingSingleCreditController(connectionString);
            var outgoingSingleCreditHistory = new OutgoingSingleCredit()
            {
                TRN = "AL-004",
                Sequence = 136,
                Date = "151019",
                Amount = "IDR150000000,00",
                OrderingCustomerAccount = "1000063463456",
                OrderingCustomerName = "PUTU SURYA SUDARMADI",
                OrderingInstitutionAccount = "523466000990",
                OrderingInstitutionBank = "RIPAIDJ1",
                SenderCorrespondentAccount = "523466000990",
                SenderCorrespondentBank = "RIPAIDJ1",
                BeneficiaryInstitutionAccount = "520002000990",
                BeneficiaryInstitutionBank = "BRINIDJA",
                BeneficiaryCustomerAccount = "156789000002",
                BeneficiaryCustomerName = "RUDY ARTHA",
                Details = "SIT RTGS Gen II"
            };

            var sb = new StringBuilder();
            sb.Append("{1:F01RIPAIDJ1R0090002000136}");
            sb.Append("{2:I103INDOIDJRXXXXN}");
            sb.Append("{3:{113:0070}}");
            sb.Append("{4:");
            sb.AppendLine(":20:AL-004");
            sb.AppendLine(":23B:CRED");
            sb.AppendLine(":23E:SDVA");
            sb.AppendLine(":26T:100");
            sb.AppendLine(":32A:151019IDR150000000,00");
            sb.AppendLine(":50K:/1000063463456");
            sb.AppendLine("PUTU SURYA SUDARMADI");
            sb.AppendLine(":52A:/523466000990");
            sb.AppendLine("RIPAIDJ1");
            sb.AppendLine(":53A:/523466000990");
            sb.AppendLine("RIPAIDJ1");
            sb.AppendLine(":57A:/520002000990");
            sb.AppendLine("BRINIDJA");
            sb.AppendLine(":59:/156789000002");
            sb.AppendLine("RUDY ARTHA");
            sb.AppendLine(":70:SIT RTGS Gen II");
            sb.AppendLine(":71A:OUR");
            sb.AppendLine(":72:/CODTYPTR/100");
            sb.AppendLine(":77B:/FEAB/R");
            sb.AppendLine("/PTR/LOCAL-LOCAL");
            sb.Append("-}");

            var expected = sb.ToString();

            var actual = outgoingSingleCreditController.ConvertToRTGSTextFileFormat(outgoingSingleCreditHistory);

            Assert.AreEqual(expected, actual);
        }
        private void UpdateGeneratedTransactionStatus(OutgoingSingleCreditController outgoingSingleCreditController,
                                                        string transactionCode, OperationResult op)
        {
            outgoingSingleCreditController.UpdateGeneratedTransactionStatus(transactionCode, op);

            if (op.Success)
            {
                log.Write("Text file " + transactionCode + " has been sent to RTGS");
            }
            else
            {
                log.WriteErrorLog("Update generated transaction status failed.", op);
            }
        }
        public void GenerateTextFileTestValid()
        {
            var outgoingSingleCreditController = new OutgoingSingleCreditController(connectionString);
            var outgoingSingleCredit = new OutgoingSingleCredit()
            {
                TRN = "AL-004",
                Sequence = 136,
                Date = "151019",
                Amount = "IDR150000000,00",
                OrderingCustomerAccount = "1000063463456",
                OrderingCustomerName = "PUTU SURYA SUDARMADI",
                OrderingInstitutionAccount = "523466000990",
                OrderingInstitutionBank = "RIPAIDJ1",
                SenderCorrespondentAccount = "523466000990",
                SenderCorrespondentBank = "RIPAIDJ1",
                BeneficiaryInstitutionAccount = "520002000990",
                BeneficiaryInstitutionBank = "BRINIDJA",
                BeneficiaryCustomerAccount = "156789000002",
                BeneficiaryCustomerName = "RUDY ARTHA",
                Details = "SIT RTGS Gen II"
            };

            var transactionData = outgoingSingleCreditController.ConvertToRTGSTextFileFormat(outgoingSingleCredit);
            var ftpServerRtgs = "ftp://10.1.10.24/";
            var ftpUser = "******";
            var ftpPassword = "******";
            var fileName = outgoingSingleCredit.TRN + ".txt";

            var actual = outgoingSingleCreditController.GenerateTextFile(transactionData: transactionData,
                                                                         ftpServerRtgs: ftpServerRtgs,
                                                                         ftpUser: ftpUser,
                                                                         ftpPassword: ftpPassword,
                                                                         fileName: fileName);

            Assert.AreEqual(0, actual.MessageList.Count());

            using (WebClient client = new WebClient())
            {
                client.Credentials = new NetworkCredential(ftpUser, ftpPassword);
                var fileExists = client.DownloadString(ftpServerRtgs + "/" + fileName);
                Assert.IsNotNull(fileExists);
            }
        }
        private void ProcessGenerateTextFile(OutgoingSingleCredit outgoingSingleCredit)
        {
            var outgoingSingleCreditController = new OutgoingSingleCreditController(config.T24ConnectionString());
            var transactionData = outgoingSingleCreditController.ConvertToRTGSTextFileFormat(outgoingSingleCredit);
            var fileName = outgoingSingleCredit.TRN + ".txt";

            var result = outgoingSingleCreditController.GenerateTextFile(transactionData: transactionData,
                                                                         ftpServerRtgs: config.FtpServerRTGS,
                                                                         ftpUser: config.FtpUser,
                                                                         ftpPassword: config.FtpPassword,
                                                                         fileName: fileName);

            if (result.Success)
            {
                UpdateGeneratedTransactionStatus(outgoingSingleCreditController, outgoingSingleCredit.TRN, result);
            }
            else
            {
                log.WriteErrorLog("Generate text file failed.", result);
            }
        }