UNPKG

@procraft/widget-order

Version:

Order widget for landing

83 lines (68 loc) 3.1 kB
// import { WidgetOrderCourseItem } from '../../interfaces' // import { CourseFragment } from '../../interfaces/CourseFragment' import { CatalogFieldValue } from '../../modules/gql/generated/types' /** * Формирование коммерческих данных для элементов каталога. * Это надо, чтобы определять можно ли предоставить составную скидку. */ export const getCatalogItemData = ( // catalogItem: Omit<WidgetOrderCourseItem['catalogItem'], 'sales'>, fieldValue: CatalogFieldValue // course: CourseFragment, ) => { // const course = courses.find((n) => n.uid === catalogItem.course?.courseId) // if (!course) { // return null // } // console.log('getCatalogItemData course', course); // console.log('getCatalogItemData catalogItem', catalogItem); // TODO Удалить иэ схемы АПИ // const tariffPerFlowDataItem = course.tariffPerFlowDataItems?.find( // (tariffPerFlowDataItem) => { // return ( // // tariffPerFlowDataItem.courseId === course.uid && // tariffPerFlowDataItem.courseId === catalogItem.course?.courseId && // // tariffPerFlowDataItem.flowId === flow.uid && // tariffPerFlowDataItem.flowId === catalogItem.course.flowId && // // tariffPerFlowDataItem.courseTariffId === tariff.uid // tariffPerFlowDataItem.courseTariffId === catalogItem.course.tariffId // ) // } // ) // console.log('getCatalogItemData tariffPerFlowDataItem', tariffPerFlowDataItem); // if (!tariffPerFlowDataItem) { // return null // } // const tariff = course.tariffs?.find( // (n) => n.uid === catalogItem.course?.tariffId // ) // console.log('getCatalogItemData tariff', tariff); // if (!tariff) { // return null // } // const flow = course.flows?.find((n) => n.uid === tariffPerFlowDataItem.flowId) // // TODO Сейчас пока добавил проверу по дате завршения, но вообще на бэке // // должны доработать и отдавать только актуальные данные, так что // // в дальнейшем можно будет исключить эту проверку. // if (!flow || (flow.finishesAt && flow.finishesAt < new Date())) { // return null // } /** * !!! Если null, то без ограничения мест */ // const placesLeft = // tariffPerFlowDataItem?.computed?.capacityRemainder !== undefined // ? tariffPerFlowDataItem?.computed?.capacityRemainder // : null // TODO Сейчас сервер не возвращает эти данные, ждем фикса const placesLeft = fieldValue.availableCount || null /** * Доступность для покупки. * Если нет свободных мест и места ограничены, то нельзя купить */ const available: boolean = typeof placesLeft !== 'number' || placesLeft > 0 return { available, placesLeft, } }