<?php

namespace App\Services;

use App\Models\AdminShadowFilter;
use Cache;

class AdminShadowFilterService
{
    const CACHE_KEY = 'pf:services:asfs:';

    public static function queryFilter($name = 'hide_from_public_feeds')
    {
        return AdminShadowFilter::whereItemType('App\Profile')
            ->whereActive(1)
            ->where('hide_from_public_feeds', true)
            ->pluck('item_id')
            ->toArray();
    }

    public static function getHideFromPublicFeedsList($refresh = false)
    {
        $key = self::CACHE_KEY.'list:hide_from_public_feeds';
        if ($refresh) {
            Cache::forget($key);
        }

        return Cache::remember($key, 86400, function () {
            return AdminShadowFilter::whereItemType('App\Profile')
                ->whereActive(1)
                ->where('hide_from_public_feeds', true)
                ->pluck('item_id')
                ->toArray();
        });
    }

    public static function canAddToPublicFeedByProfileId($profileId)
    {
        return ! in_array($profileId, self::getHideFromPublicFeedsList());
    }

    public static function refresh()
    {
        $keys = [
            self::CACHE_KEY.'list:hide_from_public_feeds',
        ];

        foreach ($keys as $key) {
            Cache::forget($key);
        }
    }
}
