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")}

); } return (
{!usage.groups.length && (

{t("infrastructureUsage.empty")}

)} {usage.unresolved.length > 0 &&

{t("infrastructureUsage.incomplete")}

} {usage.history.length > 0 && (
{t("infrastructureUsage.history", { count: usage.history.length })}
)}

{t("infrastructureUsage.notice")}

); }