<?php

namespace App\Services\MicrosoftGraph;

use App\Models\User;
use Illuminate\Support\Facades\Log;

/**
 * Static helper class for backward compatibility
 * @deprecated Use UserMembershipService instead
 */
class UserMembershipTracker
{
    /**
     * Track when a user joins a committee or workgroup
     * @deprecated Use UserMembershipService::trackUserJoined instead
     */
    public static function trackUserJoined($model, User $user, string $membershipType = null): void
    {
        $service = app(UserMembershipService::class);
        $service->trackUserJoined($model, $user, $membershipType);
    }

    /**
     * Track when a user leaves a committee or workgroup
     * @deprecated Use UserMembershipService::trackUserLeft instead
     */
    public static function trackUserLeft($model, User $user, string $oldMembershipType = null): void
    {
        $service = app(UserMembershipService::class);
        $service->trackUserLeft($model, $user, $oldMembershipType);
    }

    /**
     * Track when a user's membership type changes
     * @deprecated Use UserMembershipService::trackUserTypeChanged instead
     */
    public static function trackUserTypeChanged($model, User $user, string $oldType, string $newType): void
    {
        $service = app(UserMembershipService::class);
        $service->trackUserTypeChanged($model, $user, $oldType, $newType);
    }

    /**
     * Get unprocessed changes for a specific model
     * @deprecated Use MsgraphPendingChangeService::getPendingChangesForModel instead
     */
    public static function getPendingChangesForModel($model)
    {
        $service = app(MsgraphPendingChangeService::class);
        return $service->getPendingChangesForModel($model);
    }

    /**
     * Get all unprocessed changes ordered by priority
     * @deprecated Use MsgraphPendingChangeService::getAllPendingChanges instead
     */
    public static function getAllPendingChanges()
    {
        $service = app(MsgraphPendingChangeService::class);
        return $service->getAllPendingChanges();
    }

    /**
     * Mark changes as processed for a specific model
     * @deprecated Use MsgraphPendingChangeService::markModelChangesAsProcessed instead
     */
    public static function markModelChangesAsProcessed($model): int
    {
        $service = app(MsgraphPendingChangeService::class);
        return $service->markModelChangesAsProcessed($model);
    }
}
