import { EntityDetailView } from '@/components/views/entity-detail-view';
import type { EntityIdentity } from '@/components/views/entity-detail-view';
import type { CatalogVariantsShowProps } from '@/types/catalog';

export default function VariantsShow({ variant }: CatalogVariantsShowProps) {
    const identity: EntityIdentity = {
        name: variant.name,
        key: `#${variant.pcm_id}`,
        status: variant.status,
        description:
            variant.disclaimer_de ??
            variant.disclaimer_fr ??
            variant.disclaimer_it,
        price: variant.price,
        links: {
            model: variant.model
                ? {
                      id: variant.model.id,
                      model_key: variant.model.model_key,
                      name: variant.model.name,
                      names: {
                          name_de: variant.model.name_de,
                          name_fr: variant.model.name_fr,
                          name_it: variant.model.name_it,
                      },
                  }
                : undefined,
            bodyType: variant.body_type
                ? {
                      id: variant.body_type.id,
                      body_key: variant.body_type.body_key,
                      name: variant.body_type.name,
                      names: {
                          name_de: variant.body_type.name_de,
                          name_fr: variant.body_type.name_fr,
                          name_it: variant.body_type.name_it,
                      },
                  }
                : undefined,
            trim: variant.trim
                ? {
                      id: variant.trim.id,
                      trim_key: variant.trim.trim_key,
                      name: variant.trim.name,
                  }
                : undefined,
            engine: variant.engine
                ? {
                      id: variant.engine.id,
                      engine_key: variant.engine.engine_key,
                      name: variant.engine.name,
                  }
                : undefined,
        },
    };

    return (
        <EntityDetailView
            entityType="variant"
            identity={identity}
            payloadSupported
            features={variant.features}
            dataValues={variant.data_values}
            featureDisclaimers={variant.feature_disclaimers}
        />
    );
}
