2023-02-15 14:19:18 +03:00

117 lines
3.0 KiB
TypeScript

/* eslint-disable @typescript-eslint/naming-convention */
import type { GetQuoteDataInput, GetQuoteDataOutput } from '../load-kp/types';
import initializeApollo from '@/apollo/client';
import type * as CRMTypes from '@/graphql/crm.types';
import { gql } from '@apollo/client';
const QUERY_GET_LEASING_OBJECT_DATA_FROM_QUOTE = gql`
query GetLeasingObjectDataFromQuote($quoteId: Uuid!) {
quote(quoteId: $quoteId) {
evo_brandid
evo_category
evo_delivery_time
evo_engine_hours
evo_engine_type
evo_engine_volume
evo_equipmentid
evo_leasingobject_typeid
evo_leasingobject_used
evo_max_mass
evo_max_speed
evo_mileage
evo_modelid
evo_object_count
evo_power
evo_recalc_limit
evo_seats
evo_trailer
evo_use_for
evo_vin
evo_year
}
}
`;
export type Quote = NonNullable<CRMTypes.GetLeasingObjectDataFromQuoteQuery['quote']>;
type QuoteLeasingObjectProcessData = {
values: Partial<GetQuoteDataOutput['values']>;
};
export default async function getLeasingObjectDataFromKP({
values: { quote: quoteId, recalcWithRevision },
}: GetQuoteDataInput): Promise<QuoteLeasingObjectProcessData> {
const apolloClient = initializeApollo();
const {
data: { quote },
} = await apolloClient.query<
CRMTypes.GetLeasingObjectDataFromQuoteQuery,
CRMTypes.GetLeasingObjectDataFromQuoteQueryVariables
>({
query: QUERY_GET_LEASING_OBJECT_DATA_FROM_QUOTE,
variables: {
quoteId,
},
});
if (!quote) {
throw new Error('Quote is empty');
}
const {
evo_brandid,
evo_category,
evo_delivery_time,
evo_engine_hours,
evo_engine_type,
evo_engine_volume,
evo_equipmentid,
evo_leasingobject_typeid,
evo_leasingobject_used,
evo_max_mass,
evo_max_speed,
evo_mileage,
evo_modelid,
evo_object_count,
evo_power,
evo_recalc_limit,
evo_seats,
evo_trailer,
evo_use_for,
evo_year,
evo_vin,
} = quote;
let leaseObjectCount = evo_object_count ?? undefined;
if (recalcWithRevision && evo_recalc_limit) {
leaseObjectCount = evo_recalc_limit;
}
return {
values: {
brand: evo_brandid,
configuration: evo_equipmentid,
countSeats: evo_seats ?? undefined,
deliveryTime: evo_delivery_time,
engineHours: evo_engine_hours ?? undefined,
engineType: evo_engine_type,
engineVolume: evo_engine_volume ?? undefined,
leaseObjectCategory: evo_category,
leaseObjectCount,
leaseObjectMotorPower: evo_power ?? undefined,
leaseObjectType: evo_leasingobject_typeid,
leaseObjectUseFor: evo_use_for,
leaseObjectUsed: evo_leasingobject_used ?? undefined,
leaseObjectYear: evo_year ?? undefined,
maxMass: evo_max_mass ?? undefined,
maxSpeed: evo_max_speed ?? undefined,
mileage: evo_mileage ?? undefined,
model: evo_modelid,
vin: evo_vin,
withTrailer: evo_trailer ?? undefined,
},
};
}