コード例 #1
0
        public void Run(APIGatewayProxyRequest request, APIGatewayProxyResponse response, FinanceUser user)
        {
            var databaseClient   = new DatabaseClient <QuickBooksOnlineConnection>(new AmazonDynamoDBClient(), new ConsoleLogger());
            var qboClient        = new QuickBooksOnlineClient(PrivateAccounting.Constants.LakelandMiPuebloRealmId, databaseClient, new ConsoleLogger());
            var accountingClient = new AccountingQuickBooksOnlineClient(qboClient);
            var journal          = new PrivateAccountingJournal <JournalEntry>(new AmazonDynamoDBClient(), accountingClient);
            var journalEntry     = JsonConvert.DeserializeObject <JournalEntry>(request.Body);

            if (string.Equals(journalEntry.Type ?? string.Empty, Accounting.Constants.TYPE_INCOME, StringComparison.OrdinalIgnoreCase))
            {
                journalEntry.TaxCode = PrivateAccounting.Constants.QUICKBOOKS_TAX_RATE;
            }
            var validation = new List <string>();

            validation.AddRange(GetDateValidation(journalEntry.Date));
            if (!string.Equals(journalEntry.Type ?? string.Empty, Accounting.Constants.TYPE_INCOME, StringComparison.Ordinal) &&
                !string.Equals(journalEntry.Type ?? string.Empty, Accounting.Constants.TYPE_EXPENSE, StringComparison.Ordinal))
            {
                validation.Add($"Type is required and must be {Accounting.Constants.TYPE_INCOME} or {Accounting.Constants.TYPE_EXPENSE}");
            }
            if (journalEntry.Amount.GetValueOrDefault() <= 0)
            {
                validation.Add("Amount must be present and greater than 0");
            }
            if (validation.Any())
            {
                response.StatusCode = 400;
                response.Body       = new JObject {
                    { "error", JArray.FromObject(validation) }
                }.ToString();
                return;
            }
            journal.Save(journalEntry);
            response.Body = new JObject().ToString();
        }
コード例 #2
0
        public void Run(APIGatewayProxyRequest request, APIGatewayProxyResponse response, FinanceUser user)
        {
            var databaseClient   = new DatabaseClient <QuickBooksOnlineConnection>(new AmazonDynamoDBClient(), new ConsoleLogger());
            var qboClient        = new QuickBooksOnlineClient(PrivateAccounting.Constants.LakelandMiPuebloRealmId, databaseClient, new ConsoleLogger());
            var accountingClient = new AccountingQuickBooksOnlineClient(qboClient);
            var journal          = new PrivateAccountingJournal <JournalEntry>(new AmazonDynamoDBClient(), accountingClient);
            var results          = journal.SendToAccounting();

            response.Body = JsonConvert.SerializeObject(results);
        }