<?php

use MintyPHP\Router;
use MintyPHP\Service\Access\PermissionService;
use MintyPHP\Service\Scheduler\SchedulerServicesFactory;
use MintyPHP\Support\Flash;
use MintyPHP\Support\Guard;

Guard::requireLogin();
Guard::requirePermission(PermissionService::SETTINGS_UPDATE);

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    Router::redirect('admin/settings');
}

$factory = new SchedulerServicesFactory();
$result = $factory->createUserLifecycleService()->run((int) ($_SESSION['user']['id'] ?? 0));
if (!($result['ok'] ?? false)) {
    $error = (string) ($result['error'] ?? 'unexpected_error');
    if ($error === 'lock_not_acquired') {
        Flash::error('User lifecycle already running', 'admin/settings', 'user_lifecycle_lock_not_acquired');
    } else {
        Flash::error('User lifecycle failed', 'admin/settings', 'user_lifecycle_failed');
    }
    Router::redirect('admin/settings');
}

Flash::success(
    sprintf(
        t('User lifecycle completed: %d deactivated, %d deleted'),
        (int) ($result['deactivated_count'] ?? 0),
        (int) ($result['deleted_count'] ?? 0)
    ),
    'admin/settings',
    'user_lifecycle_completed'
);
Router::redirect('admin/settings');
