revised state
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user