diff --git a/app/home/(user)/_components/cart/analysis-location.tsx b/app/home/(user)/_components/cart/analysis-location.tsx index ff1ff0e..9e1ab16 100644 --- a/app/home/(user)/_components/cart/analysis-location.tsx +++ b/app/home/(user)/_components/cart/analysis-location.tsx @@ -19,17 +19,13 @@ import { } from '@kit/ui/select'; import { updateCartPartnerLocation } from '../../_lib/server/update-cart-partner-location'; +import partnerLocations from './partner-locations.json'; + const AnalysisLocationSchema = z.object({ locationId: z.string().min(1), }); -const MOCK_LOCATIONS: { id: string, name: string }[] = [ - { id: "synlab-tallinn-1", name: "SYNLAB - Tallinn" }, - { id: "synlab-tartu-1", name: "SYNLAB - Tartu" }, - { id: "synlab-parnu-1", name: "SYNLAB - Pärnu" }, -] - -export default function AnalysisLocation({ cart, analysisPackages }: { cart: StoreCart, analysisPackages: StoreCartLineItem[] }) { +export default function AnalysisLocation({ cart, synlabAnalyses }: { cart: StoreCart, synlabAnalyses: StoreCartLineItem[] }) { const { t } = useTranslation('cart'); const form = useForm>({ @@ -39,12 +35,16 @@ export default function AnalysisLocation({ cart, analysisPackages }: { cart: Sto resolver: zodResolver(AnalysisLocationSchema), }); + const getLocation = (locationId: string) => partnerLocations.find(({ name }) => name === locationId); + + const selectedLocation = getLocation(form.watch('locationId')); + const onSubmit = async ({ locationId }: z.infer) => { const promise = updateCartPartnerLocation({ cartId: cart.id, - lineIds: analysisPackages.map(({ id }) => id), + lineIds: synlabAnalyses.map(({ id }) => id), partnerLocationId: locationId, - partnerLocationName: MOCK_LOCATIONS.find((location) => location.id === locationId)?.name ?? '', + partnerLocationName: getLocation(locationId)?.name ?? '', }); toast.promise(promise, { @@ -55,7 +55,7 @@ export default function AnalysisLocation({ cart, analysisPackages }: { cart: Sto } return ( -
+
onSubmit(data))} @@ -78,18 +78,35 @@ export default function AnalysisLocation({ cart, analysisPackages }: { cart: Sto - - {t('cart:locations.locationSelect')} - - {MOCK_LOCATIONS.map((location) => ( - {location.name} + {Object.entries(partnerLocations + .reduce((acc, curr) => ({ + ...acc, + [curr.city]: [...((acc[curr.city] as typeof partnerLocations) ?? []), curr], + }), {} as Record)) + .map(([city, locations]) => ( + + {city} + {locations.map((location) => ( + {location.name} + ))} + ))} -
+ {selectedLocation && ( +
+

+ {selectedLocation.address} +

+

+ {selectedLocation.hours} +

+
+ )} +

diff --git a/app/home/(user)/_components/cart/partner-locations.json b/app/home/(user)/_components/cart/partner-locations.json new file mode 100644 index 0000000..1266f0c --- /dev/null +++ b/app/home/(user)/_components/cart/partner-locations.json @@ -0,0 +1,122 @@ +[ + { + "name": "SYNLAB Eesti Veerenni verevõtupunkt", + "address": "Veerenni 53a, VI korrus Tel: 17123", + "hours": "Verevõtt E-R 7.30-15.30 ja L 8.00-16.00 (lõunapaus 13.00-13.30)", + "city": "Tallinn" + }, + { + "name": "SYNLAB Eesti kesklinna verevõtupunkt", + "address": "Pärnu mnt 15 (Kawe Plaza), I korrus Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-16.00 (lõunapaus 12.00-12.30)", + "city": "Tallinn" + }, + { + "name": "SYNLAB Eesti Lasnamäe verevõtupunkt", + "address": "Linnamäe tee 3 (Lasnamäe Tervisemaja), II korrus Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-16.00 (lõunapaus 12.00-12.30)", + "city": "Tallinn" + }, + { + "name": "SYNLAB Eesti Ülemiste verevõtupunkt", + "address": "Valukoja 7 (Ülemiste Tervisemaja), II korrus Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-16.00 (lõunapaus 12.00-12.30)", + "city": "Tallinn" + }, + { + "name": "SYNLAB Eesti Sepapaja verevõtupunkt", + "address": "Sepapaja 12/1 (Ülemiste Tervisemaja 2, Karl Ernst von Baeri maja), III korrus Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-16.00 (lõunapaus 12.30-13.00)", + "city": "Tallinn" + }, + { + "name": "SYNLAB Eesti Viimsi verevõtupunkt", + "address": "Ravi tee 4 (Viimsi Fertilitas) Tel: 17123", + "hours": "Verevõtt tööpäeviti 7.30-15.30 (lõunapaus 12.30-13.00)", + "city": "Viimsi" + }, + { + "name": "SYNLAB Eesti Maardu verevõtupunkt", + "address": "Kallasmaa 4 (Maardu Tervisekeskus) Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-15.00 (lõunapaus 12.00-12.30)", + "city": "Maardu" + }, + { + "name": "SYNLAB Eesti Tartu kliiniline labor", + "address": "Raatuse 21, II korrus Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-16.30", + "city": "Tartu" + }, + { + "name": "SYNLAB Eesti Tasku verevõtupunkt", + "address": "Turu 2, IV korrus (Tasku Meditsiinikeskus) Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-15.30", + "city": "Tartu" + }, + { + "name": "SYNLAB Eesti Tartu Tervisekeskuse verevõtupunkt", + "address": "Mõisavahe 34b, I korrus Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-15.00 (lõunapaus 12:30-13:00)", + "city": "Tartu" + }, + { + "name": "SYNLAB Eesti Pärnu Tervis SPA verevõtupunkt", + "address": "Seedri 6 (Tervis SPA), kabinet 202 Tel: 17123", + "hours": "Verevõtt tööpäeviti E-N 8.00-15.00 R 8.00-13.00", + "city": "Pärnu" + }, + { + "name": "SYNLAB Eesti Suur-Sepa verevõtupunkt", + "address": "Suur-Sepa 14, kabinet 102 Tel: 17123", + "hours": "Verevõtt tööpäeviti E-N 8.00-16.00 (lõunapaus 12.30-13.00) ja R 8.00-14.00 (lõunapaus 12.30-13.00)", + "city": "Pärnu" + }, + { + "name": "SYNLAB Eesti Narva verevõtupunkt", + "address": "Fama 10/2, kabinet 14 Tel: 17123", + "hours": "Verevõtt tööpäeviti 7.30-12.00", + "city": "Narva" + }, + { + "name": "SYNLAB Eesti Sillamäe verevõtupunkt", + "address": "Kajaka 9, IV korrus, kabinet 404 Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-11.30", + "city": "Sillamäe" + }, + { + "name": "SYNLAB Eesti Jõhvi verevõtupunkt", + "address": "Jaama 34, I korrus, kabinet 15 Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-13.00", + "city": "Jõhvi" + }, + { + "name": "SYNLAB Eesti Viljandi verevõtupunkt", + "address": "Tallinna 19, II korrus, kabinet 210 Tel: 17123", + "hours": "Verevõtt tööpäeviti E-N 8.00-15.00 ja R 8.00-12.00", + "city": "Viljandi" + }, + { + "name": "SYNLAB Eesti Võru labor", + "address": "Tartu tn 9 Tel: 17123", + "hours": "Verevõtt tööpäeviti E-N 8.00-15.30 R 8.00-13.00", + "city": "Võru" + }, + { + "name": "SYNLAB Eesti Elva labor", + "address": "Supelranna 21, kabinet 133 Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-14.00", + "city": "Elva" + }, + { + "name": "SYNLAB Eesti Põltsamaa labor", + "address": "Lossi 49 Tel: 17123", + "hours": "Verevõtt tööpäeviti E-N 8.00-15.00 (lõunapaus 12:00-12:30) ja R 8.00-12.00", + "city": "Põltsamaa" + }, + { + "name": "SYNLAB Eesti Otepää labor", + "address": "Tartu mnt 2 Tel: 17123", + "hours": "Verevõtt tööpäeviti 8.00-12.00", + "city": "Otepää" + } +] \ No newline at end of file