feat(MED-131): update analyses on package logic
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import axios from 'axios';
|
||||
import { XMLParser } from 'fast-xml-parser';
|
||||
import fs from 'fs';
|
||||
import { createAnalysisGroup } from '~/lib/services/analysis-group.service';
|
||||
import { createAnalysisGroup, getAnalysisGroups } from '~/lib/services/analysis-group.service';
|
||||
import { IMedipostPublicMessageDataParsed } from '~/lib/services/medipost.types';
|
||||
import { createAnalysis, createNoDataReceivedEntry, createNoNewDataReceivedEntry, createSyncFailEntry, createSyncSuccessEntry } from '~/lib/services/analyses.service';
|
||||
import { getLastCheckedDate } from '~/lib/services/sync-entries.service';
|
||||
@@ -64,6 +64,8 @@ export default async function syncAnalysisGroups() {
|
||||
);
|
||||
}
|
||||
|
||||
const existingAnalysisGroups = await getAnalysisGroups();
|
||||
|
||||
// SAVE PUBLIC MESSAGE DATA
|
||||
|
||||
const providers = toArray(parsed?.Saadetis?.Teenused.Teostaja);
|
||||
@@ -79,6 +81,12 @@ export default async function syncAnalysisGroups() {
|
||||
|
||||
const codes: ICode[] = [];
|
||||
for (const analysisGroup of analysisGroups) {
|
||||
const existingAnalysisGroup = existingAnalysisGroups?.find(({ original_id }) => original_id === analysisGroup.UuringuGruppId);
|
||||
if (existingAnalysisGroup) {
|
||||
console.info(`Analysis group '${analysisGroup.UuringuGruppNimi}' already exists`);
|
||||
continue;
|
||||
}
|
||||
|
||||
// SAVE ANALYSIS GROUP
|
||||
const analysisGroupId = await createAnalysisGroup({
|
||||
id: analysisGroup.UuringuGruppId,
|
||||
|
||||
@@ -24,7 +24,7 @@ import { PackageHeader } from '@/components/package-header';
|
||||
import { InfoTooltip } from '@/components/ui/info-tooltip';
|
||||
import { StoreProduct } from '@medusajs/types';
|
||||
import type { AnalysisElement } from '~/lib/services/analysis-element.service';
|
||||
import { getAnalysisElementOriginalIds } from '@lib/data/products';
|
||||
import { getAnalysisElementOriginalIds } from '@/utils/medusa-product';
|
||||
|
||||
const CheckWithBackground = () => {
|
||||
return (
|
||||
@@ -34,6 +34,24 @@ const CheckWithBackground = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const PackageTableHead = async ({ product, nrOfAnalyses }: { product: StoreProduct, nrOfAnalyses: number }) => {
|
||||
const { t, language } = await createI18nServerInstance();
|
||||
const variant = product.variants?.[0];
|
||||
const titleKey = product.title;
|
||||
const price = variant?.calculated_price?.calculated_amount ?? 0;
|
||||
return (
|
||||
<TableHead className="py-2">
|
||||
<PackageHeader
|
||||
title={t(titleKey)}
|
||||
tagColor='bg-cyan'
|
||||
analysesNr={t('product:nrOfAnalyses', { nr: nrOfAnalyses })}
|
||||
language={language}
|
||||
price={price}
|
||||
/>
|
||||
</TableHead>
|
||||
)
|
||||
}
|
||||
|
||||
const ComparePackagesModal = async ({
|
||||
analysisElements,
|
||||
analysisPackages,
|
||||
@@ -43,7 +61,7 @@ const ComparePackagesModal = async ({
|
||||
analysisPackages: StoreProduct[];
|
||||
triggerElement: JSX.Element;
|
||||
}) => {
|
||||
const { t, language } = await createI18nServerInstance();
|
||||
const { t } = await createI18nServerInstance();
|
||||
|
||||
const standardPackage = analysisPackages.find(({ metadata }) => metadata?.analysisPackageTier === 'standard')!;
|
||||
const standardPlusPackage = analysisPackages.find(({ metadata }) => metadata?.analysisPackageTier === 'standard-plus')!;
|
||||
@@ -53,9 +71,9 @@ const ComparePackagesModal = async ({
|
||||
return null;
|
||||
}
|
||||
|
||||
const standardPackageAnalyses = await getAnalysisElementOriginalIds([standardPackage]);
|
||||
const standardPlusPackageAnalyses = await getAnalysisElementOriginalIds([standardPlusPackage]);
|
||||
const premiumPackageAnalyses = await getAnalysisElementOriginalIds([premiumPackage]);
|
||||
const standardPackageAnalyses = getAnalysisElementOriginalIds([standardPackage]);
|
||||
const standardPlusPackageAnalyses = getAnalysisElementOriginalIds([standardPlusPackage]);
|
||||
const premiumPackageAnalyses = getAnalysisElementOriginalIds([premiumPackage]);
|
||||
|
||||
return (
|
||||
<Dialog>
|
||||
@@ -86,25 +104,9 @@ const ComparePackagesModal = async ({
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead></TableHead>
|
||||
{analysisPackages.map(
|
||||
(product) => {
|
||||
const variant = product.variants?.[0];
|
||||
const titleKey = product.title;
|
||||
const price = variant?.calculated_price?.calculated_amount ?? 0;
|
||||
return (
|
||||
<TableHead key={titleKey} className="py-2">
|
||||
<PackageHeader
|
||||
title={t(titleKey)}
|
||||
tagColor='bg-cyan'
|
||||
analysesNr={t('product:nrOfAnalyses', {
|
||||
nr: product?.metadata?.nrOfAnalyses ?? 0,
|
||||
})}
|
||||
language={language}
|
||||
price={price}
|
||||
/>
|
||||
</TableHead>
|
||||
)
|
||||
})}
|
||||
<PackageTableHead product={standardPackage} nrOfAnalyses={standardPackageAnalyses.length} />
|
||||
<PackageTableHead product={standardPlusPackage} nrOfAnalyses={standardPlusPackageAnalyses.length} />
|
||||
<PackageTableHead product={premiumPackage} nrOfAnalyses={premiumPackageAnalyses.length} />
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { cache } from 'react';
|
||||
|
||||
import { getAnalysisElementOriginalIds, listProductTypes, listProducts } from "@lib/data/products";
|
||||
import { listProductTypes, listProducts } from "@lib/data/products";
|
||||
import { listRegions } from '@lib/data/regions';
|
||||
import { AnalysisElement, getAnalysisElements } from '~/lib/services/analysis-element.service';
|
||||
import { getAnalysisElementOriginalIds } from '@/utils/medusa-product';
|
||||
|
||||
async function countryCodesLoader() {
|
||||
const countryCodes = await listRegions().then((regions) =>
|
||||
@@ -33,7 +34,7 @@ async function analysisPackagesLoader() {
|
||||
});
|
||||
const analysisPackages = response.products;
|
||||
let analysisElements: AnalysisElement[] = [];
|
||||
const analysisElementOriginalIds = await getAnalysisElementOriginalIds(analysisPackages);
|
||||
const analysisElementOriginalIds = getAnalysisElementOriginalIds(analysisPackages);
|
||||
|
||||
if (analysisElementOriginalIds.length) {
|
||||
analysisElements = await getAnalysisElements({ originalIds: analysisElementOriginalIds });
|
||||
|
||||
Reference in New Issue
Block a user