public static string BuildSummaryMessage(int merchantId, DateTime xctPostingDate) { MerchantMBE merchant = MongoDBContext.FindMerchantById(merchantId); XctDailySummaryBE xctSummary = MerchantController.GetXctDailySummary(merchantId, xctPostingDate); StringBuilder sb = new StringBuilder(); sb.AppendLine($"Merchant Account Summary for: {xctPostingDate:ddd MMM dd, yyyy} as of {DateTime.Now.ToString("h:mm tt")} "); sb.AppendLine("\n"); if (xctSummary != null) { foreach (var xctType in xctSummary.SummaryByXctType) { sb.AppendLine($"{xctType.XctTypeDesc}:"); sb.AppendLine($"{xctType.XctTotalValue:C} [{xctType.XctCount} txns]"); if (xctType.XctType == Enums.TRANSACTION_TYPE.chargeback) { sb.AppendLine(" (text CBACK for details)"); } sb.AppendLine("\n"); } sb.AppendLine($"Net Total: {xctSummary.SummaryByXctType.Sum(x => x.XctTotalValue):C}"); sb.AppendLine("(all Card Transactions)"); sb.AppendLine("\n"); sb.AppendLine($"Final settlement amount will be deposited into your checking account ending in {merchant.setup_options.debit_card_no.Substring(1,4)} on {DateTime.Now.AddBusinessDays(2).ToString("ddd MMM dd, yyyy")} -- to" + " receive these funds tomorrow morning reply FAF"); } else { sb.AppendLine(@"No activity yet for today."); } return(sb.ToString()); }
/// <summary> /// Build a Xct Summary for the specified merchant & date /// </summary> /// <param name="merchantId"></param> /// <param name="xctPostingDate"></param> /// <returns></returns> public static XctDailySummaryBE GetXctDailySummary(int merchantId, DateTime xctPostingDate) { var merchantActivity = MongoDBContext.FindMerchantDailyActivity(merchantId, xctPostingDate); XctDailySummaryBE results = null; if (merchantActivity != null && merchantActivity.transactions != null && merchantActivity.transactions.Count > 0) { results = new XctDailySummaryBE(); results.SummaryByXctType = merchantActivity.transactions .OrderBy(x => x.xct_type) .GroupBy(x => x.xct_type) .Select(x => new XctTypeDailySummaryBE() { XctType = x.Key, //XctType = x.Key.ToString(), XctCount = x.Count(), XctTotalValue = x.Sum(r => r.xct_amount) }).ToList(); var subtotals2 = from row in merchantActivity.transactions group row by row.xct_type into grp orderby grp.Key select new { XctType = grp.Key, XctCount = grp.Count(), XctTotalValue = grp.Sum(r => r.xct_amount) }; } return(results); }