コード例 #1
0
        public string Execute(Intent context, MonzoResource resource)
        {
            var accounts = _monzoClient.GetAccounts().Result;

            var enabledAccounts = accounts.Where(x => !x.Closed).ToList();

            string message;

            if (enabledAccounts.Count > 1)
            {
                message = $"You have {enabledAccounts.Count} accounts with Monzo. ";

                for (var i = 0; i < enabledAccounts.Count; i++)
                {
                    var account = enabledAccounts[i];
                    var type    = account.Type.Replace("uk_", "");
                    message += $"The {(i+1).ToOrdinalWords()} account is for {account.Description} and is a {type} card. ";
                }
            }
            else
            {
                var account = enabledAccounts.First();
                var type    = account.Type.Replace("uk_", "");
                message = $"There is one account for {account.Description} which is a {type} card.";
            }

            return(message);
        }
コード例 #2
0
        public string Execute(Intent context, MonzoResource resource)
        {
            var accounts = _monzoClient.GetAccounts().Result;

            var validAccount = accounts.First(x => !x.Closed);

            var balance = _monzoClient.GetBalance(validAccount).Result;

            var amountData = CurrencyHelper.GetAmountString(balance);


            var message = string.Empty;

            if (amountData.Major < 0 || amountData.Minor < 0)
            {
                message = $"Your account is overdrawn by {amountData.Amount}";
            }

            if (!string.IsNullOrEmpty(amountData.Amount))
            {
                message = $"There is {amountData.Amount} available in your account";
            }
            else if (amountData.Minor == 0 && amountData.Major == 0)
            {
                message = "There is no money available in your account.";
            }

            return(message);
        }
コード例 #3
0
        public string Execute(Intent context, MonzoResource resource)
        {
            var account = _monzoClient.GetAccounts().Result;

            var validAccount = account.First(x => !x.Closed);

            var today = DateTime.SpecifyKind(DateTime.Today, DateTimeKind.Utc);

            var transactions = _monzoClient.GetTransactions(validAccount, today).Result;

            var totalAmount = transactions?.Sum(x => x.Amount) ?? 0;

            var currencyData = CurrencyHelper.GetAmountString(Math.Abs(totalAmount));

            return(totalAmount == 0 ? "You haven't spent anything today" : $"Today you've spent a total of {currencyData.Amount}");
        }
コード例 #4
0
        public string Execute(Intent context, MonzoResource resource)
        {
            var merchant = context.Slots["Merchant"].Value;

            var account = _monzoClient.GetAccounts().Result;

            var validAccount = account.First(x => !x.Closed);

            var transactions = _monzoClient.GetTransactions(validAccount).Result;

            var merchantTransactions =
                transactions.Where(x => x.Description.Contains(merchant, StringComparison.OrdinalIgnoreCase));

            var lastTransaction = merchantTransactions.OrderByDescending(x => x.Created).FirstOrDefault();

            if (lastTransaction == null)
            {
                return($"I'm sorry, I couldn't find any transactions for {merchant}");
            }

            var amount = CurrencyHelper.GetAmountString(Math.Abs(lastTransaction.Amount));

            var isYesterday = DateTime.Now.Date.AddDays(-1) == lastTransaction.Created.Date;
            var isToday     = DateTime.Now.Date.AddDays(0) == lastTransaction.Created.Date;

            string dateMessage;

            if (isYesterday)
            {
                dateMessage = "yesterday";
            }
            else if (isToday)
            {
                dateMessage = "today";
            }
            else
            {
                var day   = lastTransaction.Created.Day.ToOrdinalWords();
                var month = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(lastTransaction.Created.Month);
                var year  = lastTransaction.Created.Year;

                dateMessage = $"on the {day} of {month} {year}";
            }

            return($"Your last transaction at {merchant} was {dateMessage} for {amount.Amount}");
        }