revised state

This commit is contained in:
zino
2021-05-17 15:55:13 +02:00
parent 956b3c3b4c
commit 96dd6dcfc0

View File

@@ -3,41 +3,43 @@ import * as I from "../types/types";
import * as XMLHelper from "./xmlhelper";
import * as UI from "./ui";
export function addSeatToState(inSelectedSeat: I.JSCSelectedSeat) {
export function addSeatToState(inSelectedSeat: I.JSCSelectedSeat): void {
addSeatObjToState(inSelectedSeat);
const pricescaleID: string = config.state.selectedSeatsObj[inSelectedSeat.id].data.seatsObj.id[0];
const pricescaleObj: I.Pricescale5 | undefined = XMLHelper.getVenuePriceStructurePropertyByPricescaleID(pricescaleID);
if (pricescaleObj) {
const firstBuyerTypeID: string = pricescaleObj.buyer_type[0].id[0];
const buyerTypeCode: string | undefined = XMLHelper.getBuyerTypeCodeByBuyerTypeID(firstBuyerTypeID);
const selectedSeatsArrItem: (string | undefined)[] = [inSelectedSeat.id, firstBuyerTypeID, buyerTypeCode];
addSeatsItemToState(selectedSeatsArrItem);
}
else
console.warn(`Cannot find corresponding venueXML pricescaleObj for pricescale with ID ${pricescaleID}`);
}
function addSeatsItemToState(inItem: (string | undefined)[]): void {
if (inItem.every(v => v !== ("" || undefined || null))) {
config.state.selectedSeatsArr.push(<string[]>inItem);
config.state.cartChanged = true;
}
}
function addSeatObjToState(inSelectedSeat: I.JSCSelectedSeat): void {
const seatID: string = inSelectedSeat.id;
const seatObj: I.StateJSCSelectedSeats = {
[seatID]: inSelectedSeat
}
config.state.selectedSeatsObj = { ...config.state.selectedSeatsObj, ...seatObj };
const pricescaleID: string = config.state.selectedSeatsObj[seatID].data.seatsObj.id[0];
const pricescaleObj: I.Pricescale5 | undefined = XMLHelper.getVenuePriceStructurePropertyByPricescaleID(pricescaleID);
console.log(pricescaleObj);
if (!pricescaleObj) {
console.warn(`Cannot find corresponding venueXML pricescaleObj for pricescale with ID ${pricescaleID}`);
return;
}
// get id and code of first buyer type
const firstBuyerTypeID: string = pricescaleObj.buyer_type[0].id[0];
// const firstPriceStructureCode: string = inVenueXML.price_structure[0].code[0]; // todo: code of first price_structure always correct? what about multiple schablonen?
const buyerTypeCode: string | undefined = XMLHelper.getBuyerTypeCodeByBuyerTypeID(firstBuyerTypeID);
if (buyerTypeCode) {
config.state.selectedSeatsArr.push([seatID, firstBuyerTypeID, buyerTypeCode]);
config.state.cartChanged = true;
}
config.state.selectedSeatsObj = { ...config.state.selectedSeatsObj, ...seatObj }
}
export function removeSeatFromState(inSelectedSeat: I.JSCSelectedSeat) {
const seatID: string = inSelectedSeat.id;
delete config.state.selectedSeatsObj[seatID];
const index = config.state.selectedSeatsArr.findIndex(arr => {
return arr[0] === inSelectedSeat.id;
});
export function removeSeatFromState(inSelectedSeat: I.JSCSelectedSeat): void {
delete config.state.selectedSeatsObj[inSelectedSeat.id];
const index: number = config.state.selectedSeatsArr.findIndex(arr => arr[0] === inSelectedSeat.id);
config.state.selectedSeatsArr.splice(index, 1);
config.state.cartChanged = true;
if (!config.state.selectedSeatsArr.length)
@@ -45,7 +47,8 @@ export function removeSeatFromState(inSelectedSeat: I.JSCSelectedSeat) {
}
export function maximumSelectedSeatsReached(inSeatObj: I.JSCSelectedSeat): boolean {
const seatmap = config.state.seatmap;
const seatmap: any = config.state.seatmap;
if (config.state.selectedSeatsArr.length >= config.maxSelectedSeats) {
UI.showJBoxNotice(`Sie können maximal ${config.maxSelectedSeats} Plätze auswählen.`);
seatmap.status(inSeatObj.id, "available");