import { Component, inject, OnInit } from '@angular/core'; import { CommonModule } from '@angular/common'; import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; import { NgIcon } from '@ng-icons/core'; import { PageTitle } from '@app/components/page-title/page-title'; import { SubscriptionsList } from './subscriptions-list/subscriptions-list'; import { SubscriptionDetails } from './subscription-details/subscription-details'; import { SubscriptionPayments } from './subscription-payments/subscription-payments'; // AJOUTER import { SubscriptionAccessService } from './services/subscription-access.service'; import { Subscription } from 'rxjs'; @Component({ selector: 'app-subscriptions', standalone: true, imports: [ CommonModule, NgbNavModule, NgIcon, PageTitle, SubscriptionsList, SubscriptionDetails, SubscriptionPayments ], templateUrl: './subscriptions.html', }) export class Subscriptions implements OnInit { private subscriptions: Subscription[] = []; private accessService = inject(SubscriptionAccessService); activeView: 'list' | 'details' | 'payments' = 'list'; // AJOUTER 'payments' selectedSubscriptionId: string | null = null; // Permissions canAccessModule = true; accessDenied = false; currentUserRole = ''; currentMerchantId?: number; subscriptionInitialized = false; ngOnInit(): void { console.log('🔍 Subscription: ngOnInit() appelĂ©'); // Attendre que le SubscriptionAccessService soit VRAIMENT prĂȘt this.subscriptions.push( this.accessService.waitForReady().subscribe({ next: () => { console.log('✅ Subscription: waitForReady() a Ă©mis - Initialisation...'); this.subscriptionInitialized = true; this.checkAccess(); }, error: (err) => { console.error('❌ Subscription: Erreur dans waitForReady():', err); } }) ); } private checkAccess() { const access = this.accessService.getSubscriptionAccess(); this.canAccessModule = access.canViewSubscriptions; this.accessDenied = !access.canViewSubscriptions; this.currentUserRole = access.userRoleLabel; this.currentMerchantId = access.merchantId; } showListView() { this.activeView = 'list'; this.selectedSubscriptionId = null; } showDetailsView(subscriptionId: string) { this.activeView = 'details'; this.selectedSubscriptionId = subscriptionId; } // NOUVELLE MÉTHODE showPaymentsView(subscriptionId: string) { this.activeView = 'payments'; this.selectedSubscriptionId = subscriptionId; } // NOUVELLE MÉTHODE onViewPaymentsRequested(subscriptionId: string) { this.showPaymentsView(subscriptionId); } // Utilitaires pour le template getUserBadgeClass(): string { const access = this.accessService.getSubscriptionAccess(); return access.isHubUser ? 'badge bg-primary' : 'badge bg-success'; } getUserBadgeIcon(): string { const access = this.accessService.getSubscriptionAccess(); return access.isHubUser ? 'lucideShield' : 'lucideStore'; } getUserBadgeText(): string { return this.currentUserRole; } }