Files
roi-theme/Public/AdsensePlacement/Application/UseCases/CheckAdsenseVisibilityUseCase.php
FrankZamora 26546e1d69 feat(api): implement javascript-first architecture for cache compatibility
- Add REST endpoint GET /roi-theme/v1/adsense-placement/visibility
- Add Domain layer: UserContext, VisibilityDecision, AdsenseSettings VOs
- Add Application layer: CheckAdsenseVisibilityUseCase
- Add Infrastructure: AdsenseVisibilityChecker, Controller, Enqueuer
- Add JavaScript controller with localStorage caching
- Add test plan for production validation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 13:03:14 -06:00

37 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace ROITheme\Public\AdsensePlacement\Application\UseCases;
use ROITheme\Public\AdsensePlacement\Domain\Contracts\AdsenseVisibilityCheckerInterface;
use ROITheme\Public\AdsensePlacement\Domain\ValueObjects\UserContext;
use ROITheme\Public\AdsensePlacement\Domain\ValueObjects\VisibilityDecision;
/**
* Use Case para verificar visibilidad de anuncios AdSense.
*
* Application Layer - Orquesta el checker de domain.
* No contiene logica de negocio, solo coordina.
*
* @package ROITheme\Public\AdsensePlacement\Application\UseCases
*/
final class CheckAdsenseVisibilityUseCase
{
public function __construct(
private AdsenseVisibilityCheckerInterface $visibilityChecker
) {
}
/**
* Ejecuta la verificacion de visibilidad.
*
* @param int $postId ID del post (0 para paginas de archivo/home)
* @param UserContext $userContext Contexto del usuario
* @return VisibilityDecision Decision de visibilidad
*/
public function execute(int $postId, UserContext $userContext): VisibilityDecision
{
return $this->visibilityChecker->check($postId, $userContext);
}
}