diff --git a/src/api/catalog/FurnitureOffer.ts b/src/api/catalog/FurnitureOffer.ts index 5b68c11..c6574c5 100644 --- a/src/api/catalog/FurnitureOffer.ts +++ b/src/api/catalog/FurnitureOffer.ts @@ -117,4 +117,9 @@ export class FurnitureOffer implements IPurchasableOffer { return true; } + + public get itemIds(): string + { + return String(this._furniData?.id ?? ''); + } } diff --git a/src/api/catalog/IPurchasableOffer.ts b/src/api/catalog/IPurchasableOffer.ts index b182865..cccb635 100644 --- a/src/api/catalog/IPurchasableOffer.ts +++ b/src/api/catalog/IPurchasableOffer.ts @@ -22,4 +22,5 @@ export interface IPurchasableOffer localizationDescription: string; isLazy: boolean; products: IProduct[]; + itemIds: string; } diff --git a/src/api/catalog/Offer.ts b/src/api/catalog/Offer.ts index 9182c03..3425a43 100644 --- a/src/api/catalog/Offer.ts +++ b/src/api/catalog/Offer.ts @@ -30,8 +30,9 @@ export class Offer implements IPurchasableOffer private _products: IProduct[]; private _badgeCode: string; private _bundlePurchaseAllowed: boolean = false; + private _itemIds: string = ''; - constructor(offerId: number, localizationId: string, isRentOffer: boolean, priceInCredits: number, priceInActivityPoints: number, activityPointType: number, giftable: boolean, clubLevel: number, products: IProduct[], bundlePurchaseAllowed: boolean) + constructor(offerId: number, localizationId: string, isRentOffer: boolean, priceInCredits: number, priceInActivityPoints: number, activityPointType: number, giftable: boolean, clubLevel: number, products: IProduct[], bundlePurchaseAllowed: boolean, itemIds: string = '') { this._offerId = offerId; this._localizationId = localizationId; @@ -43,6 +44,7 @@ export class Offer implements IPurchasableOffer this._clubLevel = clubLevel; this._products = products; this._bundlePurchaseAllowed = bundlePurchaseAllowed; + this._itemIds = itemIds || ''; this.setPricingModelForProducts(); this.setPricingType(); @@ -174,6 +176,11 @@ export class Offer implements IPurchasableOffer return this._products; } + public get itemIds(): string + { + return this._itemIds; + } + private setPricingModelForProducts(): void { const products = Product.stripAddonProducts(this._products); @@ -236,7 +243,7 @@ export class Offer implements IPurchasableOffer products.push(new Product(product.productType, product.productClassId, product.extraParam, product.productCount, productData, furnitureData)); } - const offer = new Offer(this.offerId, this.localizationId, this.isRentOffer, this.priceInCredits, this.priceInActivityPoints, this.activityPointType, this.giftable, this.clubLevel, products, this.bundlePurchaseAllowed); + const offer = new Offer(this.offerId, this.localizationId, this.isRentOffer, this.priceInCredits, this.priceInActivityPoints, this.activityPointType, this.giftable, this.clubLevel, products, this.bundlePurchaseAllowed, this.itemIds); offer.page = this.page; diff --git a/src/components/catalog/CatalogAdminContext.tsx b/src/components/catalog/CatalogAdminContext.tsx index b057ae0..4143b87 100644 --- a/src/components/catalog/CatalogAdminContext.tsx +++ b/src/components/catalog/CatalogAdminContext.tsx @@ -207,7 +207,7 @@ export const CatalogAdminProvider: FC<{ children: ReactNode }> = ({ children }) setLastError(null); pendingActionRef.current = 'saveOffer'; SendMessageComposer(new CatalogAdminSaveOfferComposer( - data.offerId || 0, data.pageId, parseInt(data.itemIds) || 0, + data.offerId || 0, data.pageId, data.itemIds || '', data.catalogName, data.costCredits, data.costPoints, data.pointsType, data.amount, data.clubOnly === '1' ? 1 : 0, data.extradata, data.haveOffer === '1', data.offerId_group, data.limitedStack, data.orderNumber, currentType @@ -220,7 +220,7 @@ export const CatalogAdminProvider: FC<{ children: ReactNode }> = ({ children }) setLastError(null); pendingActionRef.current = 'createOffer'; SendMessageComposer(new CatalogAdminCreateOfferComposer( - data.pageId, parseInt(data.itemIds) || 0, + data.pageId, data.itemIds || '', data.catalogName, data.costCredits, data.costPoints, data.pointsType, data.amount, data.clubOnly === '1' ? 1 : 0, data.extradata, data.haveOffer === '1', data.offerId_group, data.limitedStack, data.orderNumber, currentType diff --git a/src/components/catalog/views/admin/CatalogAdminOfferEditView.tsx b/src/components/catalog/views/admin/CatalogAdminOfferEditView.tsx index aa89b82..e42e02d 100644 --- a/src/components/catalog/views/admin/CatalogAdminOfferEditView.tsx +++ b/src/components/catalog/views/admin/CatalogAdminOfferEditView.tsx @@ -16,7 +16,7 @@ export const CatalogAdminOfferEditView: FC<{}> = () => const createOffer = catalogAdmin?.createOffer; const loading = catalogAdmin?.loading ?? false; - const [ itemIds, setItemIds ] = useState('0'); + const [ itemIds, setItemIds ] = useState(''); const [ catalogName, setCatalogName ] = useState(''); const [ costCredits, setCostCredits ] = useState(0); const [ costPoints, setCostPoints ] = useState(0); @@ -37,7 +37,7 @@ export const CatalogAdminOfferEditView: FC<{}> = () => if(editingOffer.offerId === -1) { setIsNew(true); - setItemIds('0'); + setItemIds(''); setCatalogName(''); setCostCredits(0); setCostPoints(0); @@ -53,7 +53,7 @@ export const CatalogAdminOfferEditView: FC<{}> = () => else { setIsNew(false); - setItemIds(String(editingOffer.product?.productClassId || 0)); + setItemIds(editingOffer.itemIds || ''); setCatalogName(editingOffer.localizationName || ''); setCostCredits(editingOffer.priceInCredits); setCostPoints(editingOffer.priceInActivityPoints); @@ -140,7 +140,7 @@ export const CatalogAdminOfferEditView: FC<{}> = () =>