import {Component, inject, OnInit, signal} from '@angular/core'; import {MembershipService, PendingMembershipResponse} from '../../services/membership'; import {ToastService} from '../../services/toast'; @Component({ selector: 'app-admin-memberships', standalone: true, templateUrl: './admin-memberships.html' }) export class AdminMembershipsComponent implements OnInit { private membershipService = inject(MembershipService); private toastService = inject(ToastService); pendingMemberships = signal([]); isLoading = signal(true); isProcessing = signal(null); ngOnInit() { this.loadPendingMemberships(); } loadPendingMemberships() { this.membershipService.getPendingMemberships().subscribe({ next: memberships => { this.pendingMemberships.set(memberships); this.isLoading.set(false); }, error: () => { this.isLoading.set(false); this.toastService.error('Fehler beim Laden der wartenden Anträge.'); } }); } approveMembership(id: string) { if (this.isProcessing()) return; this.isProcessing.set(id); this.membershipService.approveMembership(id).subscribe({ next: () => { this.toastService.success('Mitgliedschaft genehmigt.'); this.loadPendingMemberships(); this.isProcessing.set(null); }, error: (err) => { this.isProcessing.set(null); this.toastService.error(err.error?.message || 'Fehler bei der Genehmigung.'); } }); } rejectMembership(id: string) { if (this.isProcessing()) return; this.isProcessing.set(id); this.membershipService.rejectMembership(id).subscribe({ next: () => { this.toastService.success('Mitgliedschaft abgelehnt.'); this.loadPendingMemberships(); this.isProcessing.set(null); }, error: (err) => { this.isProcessing.set(null); this.toastService.error(err.error?.message || 'Fehler bei der Ablehnung.'); } }); } }