feat(MED-100): add partner locations list for cart
This commit is contained in:
@@ -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<z.infer<typeof AnalysisLocationSchema>>({
|
||||
@@ -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<typeof AnalysisLocationSchema>) => {
|
||||
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 (
|
||||
<div className="w-full bg-white flex flex-col txt-medium">
|
||||
<div className="w-full bg-white flex flex-col txt-medium gap-y-2">
|
||||
<Form {...form}>
|
||||
<form
|
||||
onSubmit={form.handleSubmit((data) => onSubmit(data))}
|
||||
@@ -78,18 +78,35 @@ export default function AnalysisLocation({ cart, analysisPackages }: { cart: Sto
|
||||
</SelectTrigger>
|
||||
|
||||
<SelectContent>
|
||||
<SelectGroup>
|
||||
<SelectLabel>{t('cart:locations.locationSelect')}</SelectLabel>
|
||||
|
||||
{MOCK_LOCATIONS.map((location) => (
|
||||
<SelectItem key={location.id} value={location.id}>{location.name}</SelectItem>
|
||||
{Object.entries(partnerLocations
|
||||
.reduce((acc, curr) => ({
|
||||
...acc,
|
||||
[curr.city]: [...((acc[curr.city] as typeof partnerLocations) ?? []), curr],
|
||||
}), {} as Record<string, typeof partnerLocations>))
|
||||
.map(([city, locations]) => (
|
||||
<SelectGroup key={city}>
|
||||
<SelectLabel>{city}</SelectLabel>
|
||||
{locations.map((location) => (
|
||||
<SelectItem key={location.name} value={location.name}>{location.name}</SelectItem>
|
||||
))}
|
||||
</SelectGroup>
|
||||
))}
|
||||
</SelectGroup>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</form>
|
||||
</Form>
|
||||
|
||||
{selectedLocation && (
|
||||
<div className="flex flex-col gap-y-2 mb-4">
|
||||
<p className="text-sm">
|
||||
{selectedLocation.address}
|
||||
</p>
|
||||
<p className="text-sm">
|
||||
{selectedLocation.hours}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<p className="text-sm text-muted-foreground">
|
||||
<Trans i18nKey={'cart:locations.description'} />
|
||||
</p>
|
||||
|
||||
122
app/home/(user)/_components/cart/partner-locations.json
Normal file
122
app/home/(user)/_components/cart/partner-locations.json
Normal file
@@ -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ää"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user