@procraft/widget-order
Version:
Order widget for landing
83 lines (68 loc) • 3.1 kB
text/typescript
// 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,
}
}