nitro/apps/frontend/src/api/catalog/FurnitureOffer.ts

107 lines
2.3 KiB
TypeScript

import {GetProductOfferComposer, IFurnitureData} from "@nitro/renderer";
import {GetProductDataForLocalization, SendMessageComposer} from "..";
import {ICatalogPage} from "./ICatalogPage";
import {IProduct} from "./IProduct";
import {IPurchasableOffer} from "./IPurchasableOffer";
import {Offer} from "./Offer";
import {Product} from "./Product";
export class FurnitureOffer implements IPurchasableOffer {
private _furniData: IFurnitureData;
private _page: ICatalogPage;
private _product: IProduct;
constructor(furniData: IFurnitureData) {
this._furniData = furniData;
this._product = new Product(
this._furniData.type,
this._furniData.id,
this._furniData.customParams,
1,
GetProductDataForLocalization(this._furniData.className),
this._furniData
) as IProduct;
}
public activate(): void {
SendMessageComposer(new GetProductOfferComposer(this._furniData.rentOfferId > -1 ? this._furniData.rentOfferId : this._furniData.purchaseOfferId));
}
public get offerId(): number {
return this.isRentOffer ? this._furniData.rentOfferId : this._furniData.purchaseOfferId;
}
public get priceInActivityPoints(): number {
return 0;
}
public get activityPointType(): number {
return 0;
}
public get priceInCredits(): number {
return 0;
}
public get page(): ICatalogPage {
return this._page;
}
public set page(page: ICatalogPage) {
this._page = page;
}
public get priceType(): string {
return "";
}
public get product(): IProduct {
return this._product;
}
public get products(): IProduct[] {
return [this._product];
}
public get localizationId(): string {
return "roomItem.name." + this._furniData.id;
}
public get bundlePurchaseAllowed(): boolean {
return false;
}
public get isRentOffer(): boolean {
return this._furniData.rentOfferId > -1;
}
public get giftable(): boolean {
return false;
}
public get pricingModel(): string {
return Offer.PRICING_MODEL_FURNITURE;
}
public get clubLevel(): number {
return 0;
}
public get badgeCode(): string {
return "";
}
public get localizationName(): string {
return this._furniData.name;
}
public get localizationDescription(): string {
return this._furniData.description;
}
public get isLazy(): boolean {
return true;
}
}