Esempio n. 1
0
        public static string BuildFAFMessage(int merchantId, DateTime xctPostingDate)
        {
            string response = string.Empty;

            var merchant = MongoDBContext.FindMerchantById(merchantId);
            var merchantDailyActivity = MongoDBContext.FindMerchantDailyActivity(merchantId, xctPostingDate);

            if (merchantDailyActivity == null)
            {
                merchantDailyActivity = new MerchantDailyActivityMBE()
                {
                    merchant_id = merchantId, xct_posting_date = xctPostingDate
                };
                MongoDBContext.InsertMerchantDailyActivity(merchantDailyActivity);
            }

            if (!merchantDailyActivity.is_fast_access_funding_enabled.HasValue ||
                !merchantDailyActivity.is_fast_access_funding_enabled.Value)
            {
                response = $"Reply CONFIRM to have today's settlement deposited into debit card account ending in {merchant.setup_options.debit_card_no.Right(4)} tomorrow morning upon batch close.";
            }
            else
            {
                response = $"Reply UNDO to NOT use Fast Access Funding for today's settlement and have it deposited on the normal schedule.";
            }

            return(response);
        }
Esempio n. 2
0
        public static string BuildConfirmFAFMessage(int merchantId, DateTime xctPostingDate)
        {
            string response = string.Empty;

            var merchantDailyActivity = MongoDBContext.FindMerchantDailyActivity(merchantId, xctPostingDate);

            if (merchantDailyActivity == null)
            {
                merchantDailyActivity = new MerchantDailyActivityMBE()
                {
                    merchant_id = merchantId, xct_posting_date = xctPostingDate
                };
                MongoDBContext.InsertMerchantDailyActivity(merchantDailyActivity);
            }

            if (!merchantDailyActivity.is_fast_access_funding_enabled.HasValue ||
                !merchantDailyActivity.is_fast_access_funding_enabled.Value)
            {
                response = @"Funds for the Final Settlement amount will now be deposited via FastAccess tomorrow morning.";

                merchantDailyActivity.is_fast_access_funding_enabled = true;
                MongoDBContext.UpdateMerchantDailyActivity(merchantDailyActivity);
            }
            else
            {
                response = @"Funds for the Final Settlement amount are already set to be deposited via FastAccess tomorrow morning.";
            }

            return(response);
        }
Esempio n. 3
0
        public static string BuildUndoFAFMessage(int merchantId, DateTime xctPostingDate)
        {
            string response = string.Empty;

            var merchantDailyActivity = MongoDBContext.FindMerchantDailyActivity(merchantId, xctPostingDate);

            if (merchantDailyActivity == null)
            {
                merchantDailyActivity = new MerchantDailyActivityMBE()
                {
                    merchant_id = merchantId, xct_posting_date = xctPostingDate
                };
                MongoDBContext.InsertMerchantDailyActivity(merchantDailyActivity);
            }

            if (!merchantDailyActivity.is_fast_access_funding_enabled.HasValue ||
                !merchantDailyActivity.is_fast_access_funding_enabled.Value)
            {
                response = @"Funds for this Final Settlement amount are already set Not to use Fast Access Funding.";
            }
            else
            {
                response = @"Funds for this Final Settlement amount will Not use Fast Access Funding and will be deposited on the normal date.";

                var merchantActivity = MongoDBContext.FindMerchantDailyActivity(merchantId, xctPostingDate);
                merchantActivity.is_fast_access_funding_enabled = false;
                MongoDBContext.UpdateMerchantDailyActivity(merchantActivity);
            }

            return(response);
        }
Esempio n. 4
0
        public void TestInsertMerchantDailyActivity()
        {
            var activity = new MerchantDailyActivityMBE()
            {
                merchant_id      = _merchantTestsGlobal.MERCHANT_ID,
                xct_posting_date = _merchantTestsGlobal.XCT_POSTING_DATE
            };

            MongoDBContext.InsertMerchantDailyActivity(activity);
        }
Esempio n. 5
0
        public void TestInsertDupMerchantDailyActivityThrowsEx()
        {
            var activity = new MerchantDailyActivityMBE()
            {
                merchant_id      = _merchantTestsGlobal.MERCHANT_ID,
                xct_posting_date = _merchantTestsGlobal.XCT_POSTING_DATE
            };

            // this tests our unique index
            Assert.Throws <MongoWriteException>(() => MongoDBContext.InsertMerchantDailyActivity(activity));
        }
Esempio n. 6
0
        public static void InsertMerchantDailyActivity(MerchantDailyActivityMBE merchantDailyActivity)
        {
            (string serverName, int portNumber, string dbName) = GetMongoDBConnectionInfo();

            var client = new MongoClient($"mongodb://{serverName}:{portNumber}");

            var db         = client.GetDatabase(dbName);
            var collection = db.GetCollection <MerchantDailyActivityMBE>(MerchantDailyActivityMBE.COLLECTION_NAME);

            collection.InsertOne(merchantDailyActivity);
        }
Esempio n. 7
0
        public static void UpdateMerchantDailyActivity(MerchantDailyActivityMBE merchantDailyActivity)
        {
            (string serverName, int portNumber, string dbName) = GetMongoDBConnectionInfo();

            var client = new MongoClient($"mongodb://{serverName}:{portNumber}");

            var db         = client.GetDatabase(dbName);
            var collection = db.GetCollection <MerchantDailyActivityMBE>(MerchantDailyActivityMBE.COLLECTION_NAME);

            var filter = new BsonDocument("_id", merchantDailyActivity.ID);

            collection.ReplaceOne(filter, merchantDailyActivity);
        }
Esempio n. 8
0
        public static void GenerateChargebacksXcts(int merchantId)
        {
            DateTime xctPostingDate = DateTime.Today;

            // get merchant metadata (MDB ??)
            var merchant = MongoDBContext.FindMerchantById(merchantId);

            #region Optionally Create MerchantDailyActivity record (if reqd)
            var merchantActivity = MongoDBContext.FindMerchantDailyActivity(merchantId, xctPostingDate);

            if (merchantActivity == null)
            {
                merchantActivity = new MerchantDailyActivityMBE()
                {
                    merchant_id      = merchantId,
                    xct_posting_date = xctPostingDate
                };

                MongoDBContext.InsertMerchantDailyActivity(merchantActivity);
            }
            #endregion

            int    xctCntToGenerate   = new Random().Next(1, 2);
            Random amountGenerator    = new Random();
            Random deltaDaysGenerator = new Random();

            var transactions = new List <TransactionMBE>();

            // create a random # of purchase xcts
            for (int loopCtr = 1; loopCtr <= xctCntToGenerate; loopCtr++)
            {
                int deltaDays = -1 * deltaDaysGenerator.Next(1, 3); // creates a number between 1 and 12

                DateTime xctDate = DateTime.Now.AddDays(deltaDays);

                transactions.Add(new TransactionMBE()
                {
                    terminal_id = merchant.terminals.OrderBy(t => Guid.NewGuid()).First().terminal_id,
                    card_data   = _paymentCards.OrderBy(t => Guid.NewGuid()).First(),
                    xct_amount  = Math.Round(new decimal(amountGenerator.NextDouble() * -50.0), 2),
                    xct_dt      = xctDate,
                    xct_id      = Guid.NewGuid(),
                    xct_type    = Enums.TRANSACTION_TYPE.chargeback
                });
            }

            // store xcts
            MongoDBContext.UpsertMerchantDailyActivity(merchantId, xctPostingDate, transactions);
        }
Esempio n. 9
0
        /// <summary>
        /// Create and store a set of random transactions on the specified merchant
        /// </summary>
        /// <remarks>
        /// Used to drive demos
        /// </remarks>
        public static void GenerateRandomPurchaseXcts(int merchantId)
        {
            DateTime xctPostingDate = DateTime.Today;

            // get merchant metadata (MDB ??)
            var merchant = MongoDBContext.FindMerchantById(merchantId);

            #region Optionally Create MerchantDailyActivity record (if reqd)
            var merchantActivity = MongoDBContext.FindMerchantDailyActivity(merchantId, xctPostingDate);

            if (merchantActivity == null)
            {
                merchantActivity = new MerchantDailyActivityMBE()
                {
                    merchant_id      = merchantId,
                    xct_posting_date = xctPostingDate
                };

                MongoDBContext.InsertMerchantDailyActivity(merchantActivity);
            }
            #endregion

            int    xctCntToGenerate = new Random().Next(5, 25);
            Random amountGenerator  = new Random();

            var transactions = new List <TransactionMBE>();

            // create a random # of purchase xcts
            for (int loopCtr = 1; loopCtr <= xctCntToGenerate; loopCtr++)
            {
                int cardPresentIndicator = new Random().Next(1, 100);

                transactions.Add(new TransactionMBE()
                {
                    terminal_id = merchant.terminals.OrderBy(t => Guid.NewGuid()).First().terminal_id,
                    card_data   = _paymentCards.OrderBy(t => Guid.NewGuid()).First(),
                    xct_amount  = Math.Round(new decimal(amountGenerator.NextDouble() * 1000.0), 2),
                    xct_dt      = DateTime.Now,
                    xct_id      = Guid.NewGuid(),
                    xct_type    = (cardPresentIndicator % 2 == 0) ?
                                  Enums.TRANSACTION_TYPE.cp_sale : Enums.TRANSACTION_TYPE.cnp_sale
                });
            }

            // store xcts
            MongoDBContext.UpsertMerchantDailyActivity(merchantId, xctPostingDate, transactions);
        }