Files
frontend/src/app/selected-seats.service.ts
2025-11-15 00:41:18 +01:00

70 lines
1.5 KiB
TypeScript

import { Injectable, signal } from '@angular/core';
import {Sitzplatz} from '@infinimotion/model-frontend';
@Injectable({
providedIn: 'root',
})
export class SelectedSeatsService {
private selectedSeatsSignal = signal<Sitzplatz[]>([]);
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;
}
}