import { Injectable, signal } from '@angular/core'; import {Sitzplatz} from '@infinimotion/model-frontend'; @Injectable({ providedIn: 'root', }) export class SelectedSeatsService { private selectedSeatsSignal = signal([]); private seatIsSelectable: boolean = true; private commited = false; private debug = false; get selectedSeats() { return this.selectedSeatsSignal; } pushSelectedSeat(selectedSeat: Sitzplatz): void { this.selectedSeatsSignal.update(seats => [...seats, selectedSeat]); } removeSelectedSeat(selectedSeat: Sitzplatz): void { this.selectedSeatsSignal.update(seats => seats.filter(seat => seat.id !== selectedSeat.id) ); } getSelectedSeatsList(): Sitzplatz[] { return this.selectedSeatsSignal(); } getSelectedSeatsByCategory(categoryId: number): Sitzplatz[] { return this.selectedSeatsSignal().filter(seat => seat.row.category.id === categoryId); } clearSelectedSeatsList(): void { this.selectedSeatsSignal.set([]); this.commited = false; } getSeatIsSelectable(): boolean{ return this.seatIsSelectable; } setSeatIsSelectableTrue(): void { this.seatIsSelectable = true; this.commited = false; } setSeatIsSelectableFalse(): void { this.seatIsSelectable = false; } getCommited(): boolean { return this.commited; } setCommitedTrue(): void { this.commited = true; } getDebug(): boolean { return this.debug; } toggleDebug(): void { this.debug = !this.debug; } }