diff options
Diffstat (limited to '')
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())      }  }  | 
