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); }
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); }
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); }
public void TestInsertMerchantDailyActivity() { var activity = new MerchantDailyActivityMBE() { merchant_id = _merchantTestsGlobal.MERCHANT_ID, xct_posting_date = _merchantTestsGlobal.XCT_POSTING_DATE }; MongoDBContext.InsertMerchantDailyActivity(activity); }
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)); }
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); }
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); }
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); }
/// <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); }