diff --git a/src/src/app/components/trip/trip.component.ts b/src/src/app/components/trip/trip.component.ts index 0a1c1a2..019058d 100644 --- a/src/src/app/components/trip/trip.component.ts +++ b/src/src/app/components/trip/trip.component.ts @@ -1080,7 +1080,10 @@ export class TripComponent implements AfterViewInit { appendTo: 'body', closable: true, width: '50vw', - data: { places: this.places }, + data: { + places: this.places, + usedPlaces: this.placesUsedInTable, + }, breakpoints: { '960px': '80vw', '640px': '90vw', diff --git a/src/src/app/modals/trip-place-select-modal/trip-place-select-modal.component.ts b/src/src/app/modals/trip-place-select-modal/trip-place-select-modal.component.ts index 2af65ed..287efed 100644 --- a/src/src/app/modals/trip-place-select-modal/trip-place-select-modal.component.ts +++ b/src/src/app/modals/trip-place-select-modal/trip-place-select-modal.component.ts @@ -24,11 +24,13 @@ export class TripPlaceSelectModalComponent { places: Place[] = []; displayedPlaces: Place[] = []; + usedPlacesID: Set; constructor( private apiService: ApiService, private ref: DynamicDialogRef, private config: DynamicDialogConfig, + private utilsService: UtilsService, ) { this.apiService.getPlaces().subscribe({ next: (places) => { @@ -38,6 +40,7 @@ export class TripPlaceSelectModalComponent { }); const places: Place[] | undefined = this.config.data?.places; + this.usedPlacesID = this.config.data?.usedPlaces; if (places) { this.selectedPlaces = [...places]; this.selectedPlacesID = places.map((p) => p.id); @@ -60,6 +63,15 @@ export class TripPlaceSelectModalComponent { togglePlace(p: Place) { if (this.selectedPlacesID.includes(p.id)) { + if (this.usedPlacesID.has(p.id)) { + this.utilsService.toast( + 'error', + 'Place in use', + 'Place is currently used in your plans, remove it before unselecting it', + 4000, + ); + return; + } this.selectedPlacesID.splice(this.selectedPlacesID.indexOf(p.id), 1); this.selectedPlaces.splice( this.selectedPlaces.findIndex((place) => place.id === p.id),