aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java21
-rw-r--r--ufund-ui/src/app/components/funding-basket/funding-basket.component.ts30
-rw-r--r--ufund-ui/src/app/services/cupboard.service.ts5
3 files changed, 37 insertions, 19 deletions
diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java
index 12fb0a9..2cf8647 100644
--- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java
+++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java
@@ -1,6 +1,7 @@
package com.ufund.api.ufundapi.controller;
import java.io.IOException;
+import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -189,12 +190,22 @@ public class CupboardController {
* @return OK if successful, other statuses if failure
*/
@PutMapping("/checkout")
- public ResponseEntity<Object> checkoutNeeds(@RequestBody Map<String, Integer> data, @RequestHeader("jelly-api-key") String key) {
- int needID = data.get("needID");
- int checkoutAmount = data.get("amount");
- LOG.log(Level.INFO, "PUT /need/checkout body={0}", data);
+ public ResponseEntity<Object> checkoutNeeds(@RequestBody List<Map<String, Integer>> data, @RequestHeader("jelly-api-key") String key) {
+ LOG.log(Level.INFO, "PUT /cupboard/checkout body={0}", data);
try {
- cupboardService.checkoutNeed(needID, checkoutAmount, key);
+ authService.keyIsValid(key);
+
+ for (Map<String, Integer> map : data) {
+ int needID = map.get("needID");
+ if (cupboardService.getNeed(needID) != null) {
+ return new ResponseEntity<>("One or more need is invalid, please refresh.", HttpStatus.BAD_REQUEST);
+ }
+ }
+ for (Map<String, Integer> map : data) {
+ int needID = map.get("needID");
+ int checkoutAmount = map.get("amount");
+ cupboardService.checkoutNeed(needID, checkoutAmount, key);
+ }
return new ResponseEntity<>(HttpStatus.OK);
} catch (IllegalArgumentException ex) {
LOG.log(Level.WARNING, ex.getLocalizedMessage());
diff --git a/ufund-ui/src/app/components/funding-basket/funding-basket.component.ts b/ufund-ui/src/app/components/funding-basket/funding-basket.component.ts
index 18bb9b8..015d5b5 100644
--- a/ufund-ui/src/app/components/funding-basket/funding-basket.component.ts
+++ b/ufund-ui/src/app/components/funding-basket/funding-basket.component.ts
@@ -47,22 +47,28 @@ export class FundingBasketComponent implements OnInit {
order.push({id: +contribution.id, quantity: contribution.valueAsNumber});
}
- for (let c of document.querySelectorAll('.contribution')!) {
- let contribution = c as HTMLInputElement;
- try {
- let need = await firstValueFrom(this.cupboardService.getNeed(+contribution.id));
- await firstValueFrom(this.cupboardService.checkoutNeed(need.id, +contribution.value));
- need.current += +contribution.value;
- this.usersService.removeNeed(+need.id);
- this.toastService.sendToast(ToastType.INFO, "Checkout successful");
- } catch (ex: any) {
- this.toastService.sendToast(ToastType.ERROR, ex.error);
- }
+ try {
+ this.cupboardService.checkoutNeed(order)
+ } catch (ex:any) {
+ this.toastService.sendToast(ToastType.ERROR, ex.error);
+ return
}
+
+ console.log(order)
+
+ for (let contribution of order) {
+ let need = await firstValueFrom(this.cupboardService.getNeed(contribution.id))
+ need.current += contribution.quantity;
+ this.usersService.removeNeed(need.id);
+ this.toastService.sendToast(ToastType.INFO, "Checkout successful");
+ }
+
+ // this.usersService.getBasket().subscribe(console.log)
+ // this.usersService.refreshBasket()
}
resetColor(ev: any) {
- console.log(ev);
+ // console.log(ev);
(ev.target as HTMLInputElement).setAttribute("style", "border-color: unset")
}
}
diff --git a/ufund-ui/src/app/services/cupboard.service.ts b/ufund-ui/src/app/services/cupboard.service.ts
index 9232c0c..786973e 100644
--- a/ufund-ui/src/app/services/cupboard.service.ts
+++ b/ufund-ui/src/app/services/cupboard.service.ts
@@ -47,7 +47,8 @@ export class CupboardService {
return this.http.delete<boolean>(`${this.url}/${id}`, this.httpOptions())
}
- checkoutNeed(id: number, quantity: number) {
- return this.http.put(`${this.url}/checkout`, {needID: id, amount: quantity}, this.httpOptions())
+ checkoutNeed(data: {id: number, quantity: number}[]) {
+ console.log("GOT HERE")
+ return this.http.put(`${this.url}/checkout`, data, this.httpOptions())
}
}