import { inventoryApi, inventoryKeys } from "@metis/assets/client"; import { BrowserLink, useListQuery } from "@metis/core/client"; import { Button } from "@repo/shadcn-ui/components/button"; import { useTranslation } from "react-i18next"; import type { CompanyDTO } from "../../../../common"; import { printerApi, printerKeys } from "../../../printer-configurations/shared/api"; import { profileApi, profileKeys } from "../../../work-profiles/shared/api"; import { printerUsage } from "../helpers/printer-usage"; export function AssetPrinterUsage({ company, assetId }: { company: CompanyDTO; assetId: string }) { const { t } = useTranslation("companies"); const printers = useListQuery({ queryKey: printerKeys.company(company.id), queryFn: () => printerApi.get(company.id), }); const profiles = useListQuery({ queryKey: profileKeys.company(company.id), queryFn: () => profileApi.get(company.id), }); const inventory = useListQuery({ queryKey: inventoryKeys.company(company.id), queryFn: () => inventoryApi.get(company.id), }); const failed = printers.isError || profiles.isError || inventory.isError; const usage = printerUsage( assetId, printers.data?.configurations ?? [], profiles.data?.profiles ?? [], inventory.data?.assets ?? [] ); if (printers.isPending || profiles.isPending || inventory.isPending) { return
{t("loading")}
; } if (failed) { return ({t("infrastructureUsage.error")}
{t("infrastructureUsage.empty")}
)} {usage.unresolved.length > 0 &&{t("infrastructureUsage.incomplete")}
}{t(`mail.${configuration.values.state}`)} ·{" "} {t(`printers.${configuration.values.connection}`)} {configuration.values.isDefault ? ` · ${t("infrastructureUsage.default")}` : ""}
{(!profile.values.active || configuration.needsReview) && ({t("infrastructureUsage.review")}
)}{t("infrastructureUsage.notice")}