Update stats page design
This commit is contained in:
@@ -3,11 +3,13 @@
|
||||
namespace App\Helpers;
|
||||
|
||||
use App\Models\Comment;
|
||||
use App\Models\Downloads;
|
||||
use App\Models\Episode;
|
||||
use App\Models\Hentai;
|
||||
use App\Models\PopularDaily;
|
||||
use App\Models\PopularMonthly;
|
||||
use App\Models\PopularWeekly;
|
||||
use App\Models\User;
|
||||
use Conner\Tagging\Model\Tag;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@@ -61,6 +63,100 @@ class CacheHelper
|
||||
});
|
||||
}
|
||||
|
||||
public static function getTotalUserCount()
|
||||
{
|
||||
return Cache::remember('total_user_count', now()->addMinutes(60), function () {
|
||||
return User::count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getTotalCommentCount()
|
||||
{
|
||||
return Cache::remember('total_comment_count', now()->addMinutes(60), function () {
|
||||
return Comment::count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getTotalLikeCount()
|
||||
{
|
||||
return Cache::remember('total_like_count', now()->addMinutes(60), function () {
|
||||
return DB::table('markable_likes')->count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getTotalDownloadCount()
|
||||
{
|
||||
return Cache::remember('total_download_count', now()->addMinutes(60), function () {
|
||||
return Downloads::sum('count');
|
||||
});
|
||||
}
|
||||
|
||||
public static function get4kEpisodeCount()
|
||||
{
|
||||
return Cache::remember('episodes_4k_count', now()->addMinutes(60), function () {
|
||||
return Episode::where('interpolated', true)->count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getUHD48FpsEpisodeCount()
|
||||
{
|
||||
return Cache::remember('episodes_uhd48_count', now()->addMinutes(60), function () {
|
||||
return Episode::where('interpolated_uhd', true)->count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getTodayViewCount()
|
||||
{
|
||||
return Cache::remember('today_view_count', now()->addMinutes(30), function () {
|
||||
return PopularDaily::whereDate('created_at', today())->count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getWeeklyViewCount()
|
||||
{
|
||||
return Cache::remember('weekly_view_count', now()->addMinutes(60), function () {
|
||||
return PopularWeekly::whereDate('created_at', '>=', today()->subDays(7))->count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getPreviousWeeklyViewCount()
|
||||
{
|
||||
return Cache::remember('prev_weekly_view_count', now()->addMinutes(60), function () {
|
||||
return PopularWeekly::whereDate('created_at', '>=', today()->subDays(14))
|
||||
->whereDate('created_at', '<', today()->subDays(7))
|
||||
->count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getAverageViewsPerEpisode()
|
||||
{
|
||||
return Cache::remember('avg_views_per_episode', now()->addMinutes(60), function () {
|
||||
$totalEpisodes = Episode::count();
|
||||
if ($totalEpisodes === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return round(Episode::sum('view_count') / $totalEpisodes);
|
||||
});
|
||||
}
|
||||
|
||||
public static function getNewEpisodesThisWeek()
|
||||
{
|
||||
return Cache::remember('new_episodes_this_week', now()->addMinutes(60), function () {
|
||||
return Episode::whereDate('created_at', '>=', today()->subDays(7))->count();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getTopTags()
|
||||
{
|
||||
return Cache::remember('top_tags_stats', now()->addMinutes(120), function () {
|
||||
return Tag::where('count', '>', 0)
|
||||
->orderBy('count', 'desc')
|
||||
->limit(10)
|
||||
->get();
|
||||
});
|
||||
}
|
||||
|
||||
public static function getPopularAllTime(bool $guest)
|
||||
{
|
||||
$guestString = $guest ? 'guest' : 'authed';
|
||||
@@ -131,4 +227,4 @@ class CacheHelper
|
||||
return Comment::with('user')->latest()->take(10)->get();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,6 +103,18 @@ class HomeController extends Controller
|
||||
'viewCount' => CacheHelper::getTotalViewCount(),
|
||||
'episodeCount' => CacheHelper::getTotalEpisodeCount(),
|
||||
'hentaiCount' => CacheHelper::getTotalHentaiCount(),
|
||||
'userCount' => CacheHelper::getTotalUserCount(),
|
||||
'commentCount' => CacheHelper::getTotalCommentCount(),
|
||||
'likeCount' => CacheHelper::getTotalLikeCount(),
|
||||
'downloadCount' => CacheHelper::getTotalDownloadCount(),
|
||||
'episodes4k' => CacheHelper::get4kEpisodeCount(),
|
||||
'episodesUHD48' => CacheHelper::getUHD48FpsEpisodeCount(),
|
||||
'todayViews' => CacheHelper::getTodayViewCount(),
|
||||
'weeklyViews' => CacheHelper::getWeeklyViewCount(),
|
||||
'prevWeeklyViews' => CacheHelper::getPreviousWeeklyViewCount(),
|
||||
'avgViewsPerEpisode' => CacheHelper::getAverageViewsPerEpisode(),
|
||||
'newEpisodesThisWeek' => CacheHelper::getNewEpisodesThisWeek(),
|
||||
'topTags' => CacheHelper::getTopTags(),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user