public void Run(APIGatewayProxyRequest request, APIGatewayProxyResponse response, FinanceUser user) { var model = JsonConvert.DeserializeObject <SignupModel>(request.Body); if (!model.AgreedToLicense) { throw new Exception("agreedToLicense must be true"); } var provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), RegionEndpoint.USEast1); var userPool = new CognitoUserPool(Configuration.FINANCE_API_COGNITO_USER_POOL_ID, Configuration.FINANCE_API_COGNITO_CLIENT_ID, provider); var result = userPool.SignUpAsync( model.Email.ToLower(), model.Password, new Dictionary <string, string>(), new Dictionary <string, string>()); result.Wait(); var userService = new UserService(); userService.CreateUser(model.Email, model.AgreedToLicense, IpLookup.GetIp(request)); var json = new JObject { { "status", "Your user has successfully been created. " + $"Your user name is {model.Email}. " + "A confirmation link has been sent to your email from [email protected]. " + "You need to click the verification link in the email before you can login." } }; response.Body = json.ToString(); }
public void Run(APIGatewayProxyRequest request, APIGatewayProxyResponse response, FinanceUser user) { var model = JsonConvert.DeserializeObject <PurchaseModel>(request.Body); if (!model.AgreedToBillingTerms) { throw new Exception("Must agree to billing terms"); } Subscription subscription; try { subscription = Purchase( user.Email, model.CardCvc, model.CardNumber, model.CardExpirationMonth, model.CardExpirationYear); } catch (StripeException stripeException) { response.Body = new JObject { { "status", stripeException.Message } }.ToString(); response.StatusCode = 400; return; } response.Body = JsonConvert.SerializeObject(subscription); var jsonPatch = new JObject { ["billingAgreement"] = JObject.FromObject(new BillingAgreement { AgreedToBillingTerms = model.AgreedToBillingTerms, Date = DateTime.UtcNow.ToString("O"), IpAddress = IpLookup.GetIp(request) }) }; new UserService().UpdateUser(user.Email, jsonPatch); }
public void Run(APIGatewayProxyRequest request, APIGatewayProxyResponse response, FinanceUser user) { var receipt = JsonConvert.DeserializeObject <Receipt>(request.Body); var dbClient = new AmazonDynamoDBClient(); var logger = new ConsoleLogger(); var receiptDbClient = new DatabaseClient <ReceiptSaveResult>(dbClient, logger); var spotReservationDbClient = new DatabaseClient <SpotReservation>(dbClient, logger); var vendorDbClient = new DatabaseClient <Vendor>(dbClient, logger); var qboClient = new QuickBooksOnlineClient(PrivateAccounting.Constants.LakelandMiPuebloRealmId, new DatabaseClient <QuickBooksOnlineConnection>(dbClient, logger), logger); var allActiveCustomers = qboClient .QueryAll <Customer>("select * from customer") .ToDictionary(x => x.Id); var activeVendors = new ActiveVendorSearch() .GetActiveVendors(allActiveCustomers, vendorDbClient) .ToList(); var spotClient = new DatabaseClient <Spot>(dbClient, logger); var spotReservationCheck = new SpotReservationCheck(spotClient, spotReservationDbClient, activeVendors, allActiveCustomers); var validation = new ReceiptValidation(spotReservationCheck).Validate(receipt).Result; if (validation.Any()) { response.StatusCode = 400; response.Body = new JObject { { "error", JArray.FromObject(validation) } }.ToString(); return; } var taxRate = new Tax().GetTaxRate(qboClient, PropertyRentalManagement.Constants.QUICKBOOKS_RENTAL_TAX_RATE); var cardPayment = new CardPayment(logger, Configuration.CLOVER_MI_PUEBLO_PRIVATE_TOKEN); var receiptService = new ReceiptSave(receiptDbClient, qboClient, taxRate, spotReservationDbClient, logger, cardPayment); string customerId = receipt.Customer.Id; if (string.IsNullOrWhiteSpace(customerId)) { var customer = new Customer { DisplayName = receipt.Customer.Name }; customer = qboClient.Create(customer); customerId = customer.Id.ToString(); } var vendor = activeVendors.FirstOrDefault(x => x.QuickBooksOnlineId.GetValueOrDefault().ToString() == customerId) ?? vendorDbClient.Create(VendorService.CreateModel(int.Parse(customerId), null, null, null)); receipt.Id = string.IsNullOrWhiteSpace(receipt.Id) ? Guid.NewGuid().ToString() : receipt.Id; // Needed until UI is deployed. var receiptResult = receiptService.SaveReceipt(receipt, customerId, user.FirstName, user.LastName, user.Email, vendor, IpLookup.GetIp(request)); response.Body = JsonConvert.SerializeObject(receiptResult); }