<?php

namespace App\Http\Controllers\Groups;

use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\RateLimiter;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Services\AccountService;
use App\Services\GroupService;
use App\Follower;
use App\Profile;
use App\Models\Group;
use App\Models\GroupMember;
use App\Models\GroupInvitation;

class GroupsDiscoverController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function getDiscoverPopular(Request $request)
    {
        abort_if(!$request->user(), 404);
        $groups = Group::orderByDesc('member_count')
            ->take(12)
            ->pluck('id')
            ->map(function($id) {
                return GroupService::get($id);
            })
            ->filter(function($id) {
                return $id;
            })
            ->take(6)
            ->values();
        return $groups;
    }

    public function getDiscoverNew(Request $request)
    {
        abort_if(!$request->user(), 404);
        $groups = Group::latest()
            ->take(12)
            ->pluck('id')
            ->map(function($id) {
                return GroupService::get($id);
            })
            ->filter(function($id) {
                return $id;
            })
            ->take(6)
            ->values();
        return $groups;
    }
}