import { NotificationEvent, NotificationItem } from '../../models/notification.model';

export function notificationLabel(item: NotificationItem): string {
  switch (item.event) {
    case 'player_active_update':
      return item.payload.active
        ? `${item.payload.playerName} wurde aktiviert`
        : `${item.payload.playerName} wurde deaktiviert`;
    case 'player_team_role_update':
      return `Team-Rolle von ${item.payload.playerName} wurde geändert`;
    case 'player_creation':
      return `${item.payload.playerName} wurde zum Team hinzugefügt`;
    case 'public_access_enabled':
      return 'Der Freigabelink wurde aktiviert';
    case 'public_access_rotated':
      return 'Der Freigabelink wurde erneuert';
    case 'user_invite_link_create':
      return 'Ein neuer Einladungslink wurde erstellt';
  }
}

export function notificationIcon(event: NotificationEvent): string {
  switch (event) {
    case 'player_active_update':
      return 'person';
    case 'player_team_role_update':
      return 'badge';
    case 'player_creation':
      return 'person_add';
    case 'public_access_enabled':
    case 'public_access_rotated':
      return 'link';
    case 'user_invite_link_create':
      return 'mail';
  }
}

export function notificationTarget(item: NotificationItem, teamId: number): (string | number)[] {
  switch (item.event) {
    case 'player_active_update':
    case 'player_team_role_update':
    case 'player_creation':
      return ['/team', teamId, 'members', item.payload.playerId ?? 0];
    case 'public_access_enabled':
    case 'public_access_rotated':
      return ['/team', teamId, 'more', 'public-access'];
    case 'user_invite_link_create':
      return ['/team', teamId, 'more', 'invite'];
  }
}
