diff --git a/backend/app/src/main/java/eu/viandeendirect/service/OrderService.java b/backend/app/src/main/java/eu/viandeendirect/service/OrderService.java index 72862f4..bfa38d6 100644 --- a/backend/app/src/main/java/eu/viandeendirect/service/OrderService.java +++ b/backend/app/src/main/java/eu/viandeendirect/service/OrderService.java @@ -33,7 +33,7 @@ public ResponseEntity createOrder(Order order) { Order orderCreated = orderRepository.save(order); List lots = new ArrayList<>(); order.getItems().forEach(item -> { - PackageLot lot = item.getPackageLot(); + PackageLot lot = packageLotRepository.findById(item.getPackageLot().getId()).get(); int updatedQuantySold = lot.getQuantitySold() + item.getQuantity(); if (updatedQuantySold > lot.getQuantity()) { throw new ResponseStatusException( diff --git a/backend/app/src/test/java/eu/viandeendirect/service/TestOrderService.java b/backend/app/src/test/java/eu/viandeendirect/service/TestOrderService.java index 34ea718..38baaca 100644 --- a/backend/app/src/test/java/eu/viandeendirect/service/TestOrderService.java +++ b/backend/app/src/test/java/eu/viandeendirect/service/TestOrderService.java @@ -67,7 +67,10 @@ void createOrder_should_persist_order_in_database() { assertThat(orderCreated.getId()).isNotNull(); List itemsCreated = orderItemRepository.findByOrder(orderCreated); assertThat(itemsCreated).hasSize(1); - assertThat(packageLot.getQuantitySold()).isEqualTo(quantitySoldBeforeOrderCreation + 1); + var packageLotReloaded = packageLotRepository.findById(packageLot.getId()).get(); + assertThat(packageLotReloaded.getQuantitySold()).isEqualTo(quantitySoldBeforeOrderCreation + 1); + assertThat(packageLotReloaded.getProduction()).isNotNull(); + } @Test diff --git a/frontend/app/src/domains/sale/components/SaleCard.tsx b/frontend/app/src/domains/sale/components/SaleCard.tsx index e10ebb5..6e6ac8d 100644 --- a/frontend/app/src/domains/sale/components/SaleCard.tsx +++ b/frontend/app/src/domains/sale/components/SaleCard.tsx @@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react' import { Button, ButtonGroup, Card, CardActions, CardContent, Typography } from "@mui/material" import dayjs from 'dayjs' -import SaleCardBeefProduction from './SaleCardBeefProduction.js'; +import SaleCardBeefProduction from './SaleCardBeefProduction.tsx'; import { ApiInvoker } from '../../../api/ApiInvoker.ts'; import { useKeycloak } from '@react-keycloak/web'; import Order from 'viandeendirect_eu/dist/model/Order' @@ -18,11 +18,11 @@ export default function SaleCard({ sale: sale, manageOrdersCallback: manageOrder useEffect(() => { apiInvoker.callApiAuthenticatedly(keycloak, api => api.getSaleOrders, sale.id, setOrders, console.error) - }, [keycloak, sale]) + }, [keycloak]) useEffect(() => { apiInvoker.callApiAuthenticatedly(keycloak, api => api.getSaleProductions, sale.id, setProductions, console.error) - }, [keycloak, sale]) + }, [keycloak]) return ( diff --git a/frontend/app/src/domains/sale/components/SaleCardBeefProduction.js b/frontend/app/src/domains/sale/components/SaleCardBeefProduction.tsx similarity index 68% rename from frontend/app/src/domains/sale/components/SaleCardBeefProduction.js rename to frontend/app/src/domains/sale/components/SaleCardBeefProduction.tsx index d565b2e..4f1eaed 100644 --- a/frontend/app/src/domains/sale/components/SaleCardBeefProduction.js +++ b/frontend/app/src/domains/sale/components/SaleCardBeefProduction.tsx @@ -1,17 +1,29 @@ +import React from 'react' import { useEffect, useState } from 'react'; import { useKeycloak } from '@react-keycloak/web' import { Typography } from "@mui/material" import { ApiInvoker } from '../../../api/ApiInvoker.ts' import { AnimalTypeUtils } from '../../../enum/AnimalType.ts'; import PieChart from '../../commons/components/PieChart.tsx' -import styles from './SaleCard.css' +import Production from 'viandeendirect_eu/dist/model/BeefProduction' +import './SaleCard.css' export default function SaleCardBeefProduction({production: production}) { + const [beefProduction, setBeefProduction] = useState() const [productionPercentageSold, setProductionPercentageSold] = useState([]) const { keycloak } = useKeycloak() const apiInvoker = new ApiInvoker() + useEffect(() => { + apiInvoker.callApiAuthenticatedly( + keycloak, + api => api.getBeefProduction, + production.id, + setBeefProduction, + console.error) + }, [keycloak]) + useEffect(() => { apiInvoker.callApiAuthenticatedly( keycloak, @@ -19,7 +31,7 @@ export default function SaleCardBeefProduction({production: production}) { production.id, setProductionPercentageSold, console.error) - }, [keycloak, production]) + }, [keycloak]) return <>
@@ -29,12 +41,12 @@ export default function SaleCardBeefProduction({production: production}) {
- {AnimalTypeUtils.getAnimalTypeLabel(production.animalType)} n° {production.animalIdentifier} + {AnimalTypeUtils.getAnimalTypeLabel(beefProduction?.animalType)} n° {beefProduction?.animalIdentifier}
- Poids vif estimé : {production.animalLiveWeight} kg + Carcasse chaude estimée : {beefProduction?.warmCarcassWeight} kg