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(); }
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); }