diff --git a/backend/GiecChallenge/Controllers/PurchaseController.cs b/backend/GiecChallenge/Controllers/PurchaseController.cs index 5bedea2..1adb012 100644 --- a/backend/GiecChallenge/Controllers/PurchaseController.cs +++ b/backend/GiecChallenge/Controllers/PurchaseController.cs @@ -56,7 +56,7 @@ public class PurchaseController : ControllerBase { try { GetUserId(); - return Ok(await _purchaseRepository.GetBetweenDate(_userId, DateTime.ParseExact(dateBegin, "dd-MM-yyyy", null), DateTime.ParseExact(dateEnd + " 23:59:59", "dd-MM-yyyy HH:mm:ss", null))); + return Ok(await _purchaseRepository.GetBetweenDate(_userId, DateTime.ParseExact(dateBegin, "dd-MM-yyyy", null).ToLocalTime(), DateTime.ParseExact(dateEnd + " 23:59:59", "dd-MM-yyyy HH:mm:ss", null).ToLocalTime())); } catch (Exception ex) { return StatusCode(500, new { Message = ex.Message }); @@ -68,7 +68,7 @@ public class PurchaseController : ControllerBase { try { GetUserId(); - return Ok(await _purchaseRepository.GetCO2BetweenDate(_userId, DateTime.ParseExact(dateBegin, "dd-MM-yyyy", null), DateTime.ParseExact(dateEnd + " 23:59:59", "dd-MM-yyyy HH:mm:ss", null))); + return Ok(await _purchaseRepository.GetCO2BetweenDate(_userId, DateTime.ParseExact(dateBegin, "dd-MM-yyyy", null).ToLocalTime(), DateTime.ParseExact(dateEnd + " 23:59:59", "dd-MM-yyyy HH:mm:ss", null).ToLocalTime())); } catch (Exception ex) { return StatusCode(500, new { Message = ex.Message }); diff --git a/frontend/package.json b/frontend/package.json index d06b761..322e000 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,6 +9,7 @@ "@testing-library/user-event": "^14.4.3", "axios": "^1.3.2", "bootstrap": "5.3.5", + "date-fns": "^4.1.0", "env-cmd": "^10.1.0", "http-proxy-middleware": "^3.0.5", "i18next": "25.0.1", @@ -16,7 +17,7 @@ "i18next-xhr-backend": "3.2.2", "react": "^19.1.0", "react-bootstrap": "2.10.9", - "react-datepicker": "8.3.0", + "react-datepicker": "8.6.0", "react-dom": "^19.1.0", "react-i18next": "15.4.1", "react-icons": "^5.5.0", diff --git a/frontend/public/locales/EN/Home.json b/frontend/public/locales/EN/Home.json index 7e40a47..bab60bd 100644 --- a/frontend/public/locales/EN/Home.json +++ b/frontend/public/locales/EN/Home.json @@ -3,7 +3,8 @@ "createNewProduct" : "Create new product", "startDate": "Start Date", "endDate": "End Date", - "labelCost": "CO2 consumption from {start} to {end}", + "labelCost": "CO2 consumption from ", + "dateSeparator": "to", "date": "Date", "CO2Cost": "CO2 cost", "WaterCost": "Water cost" diff --git a/frontend/public/locales/FR/Home.json b/frontend/public/locales/FR/Home.json index 02bce14..f80109e 100644 --- a/frontend/public/locales/FR/Home.json +++ b/frontend/public/locales/FR/Home.json @@ -3,7 +3,8 @@ "createNewProduct" : "Créer un nouveau produit", "startDate": "Date de début", "endDate": "Date de fin", - "labelCost": "Utilisation de CO2 sur la période du {start} au {end}", + "labelCost": "Utilisation de CO2 sur la période du ", + "dateSeparator": "au", "date": "Date", "CO2Cost": "Coût en CO2", "WaterCost": "Coût en eau" diff --git a/frontend/src/components/Home/HomePurchase.jsx b/frontend/src/components/Home/HomePurchase.jsx index 23d0a69..4fdcbb3 100644 --- a/frontend/src/components/Home/HomePurchase.jsx +++ b/frontend/src/components/Home/HomePurchase.jsx @@ -5,37 +5,50 @@ import ProgressBar from 'react-bootstrap/ProgressBar'; import { reset, getpurchasesbydate, deletepurchase, getCO2bydate} from '../../features/purchases/purchaseSlice' import {LinePurchase} from './LinePurchase' import { useTranslation } from 'react-i18next'; -import DatePicker from "react-datepicker"; +import { startOfWeek, endOfWeek } from 'date-fns'; +import { enGB, fr } from 'date-fns/locale'; +import DatePicker, { registerLocale } from "react-datepicker"; + import "react-datepicker/dist/react-datepicker.css"; export const HomePurchase = () => { const { isLoading, purchases, CO2Emissions } = useSelector((state) => state.purchase) - const [startDate, setStartDate] = useState(new Date()); - const [endDate, setEndDate] = useState(new Date()); + const [startDate, setStartDate] = useState(startOfWeek(new Date(), { weekStartsOn: 1 })); + const [endDate, setEndDate] = useState(endOfWeek(new Date(), { weekStartsOn: 1 })); const [purchasesUser, setPurchasesUser] = useState([]); const [CO2EmissionsPurcentage, setCO2EmissionsPurcentage] = useState(0.0); const { t } = useTranslation(["Home"]); + const rangeSeparator = " " + t("dateSeparator") + " "; + registerLocale('en-GB', enGB); const dispatch = useDispatch() useEffect(() => { setPurchasesUser(purchases); - setCO2EmissionsPurcentage(CO2Emissions / (2500 / 365 * (endDate.getDate() - startDate.getDate() + 1)) * 100); - }, [purchases, CO2Emissions]) + setCO2EmissionsPurcentage((endDate === undefined) ? 0 : (CO2Emissions / (2500 / 365 * (endDate?.getDate() - startDate.getDate() + 1)) * 100)); + }, [purchases, CO2Emissions]); useEffect(() => { - changeDate(); + if (endDate) { + changeDate(); + } }, [startDate, endDate]) + const onChangeDates = (dates) => { + const [start, end] = dates; + setStartDate(start); + setEndDate(end); + }; + function changeDate() { dispatch(reset()) dispatch(getpurchasesbydate({ startDate: startDate.toLocaleDateString("es-CL"), - endDate: endDate.toLocaleDateString("es-CL") + endDate: endDate?.toLocaleDateString("es-CL") })); dispatch(getCO2bydate({ startDate: startDate.toLocaleDateString("es-CL"), - endDate: endDate.toLocaleDateString("es-CL") + endDate: endDate?.toLocaleDateString("es-CL") })); } @@ -52,14 +65,23 @@ export const HomePurchase = () => { return ( <>