lms/Modules/Blog/app/Services/BlogCategoryService.php
2025-12-15 12:26:23 +01:00

67 lines
1.6 KiB
PHP

<?php
namespace Modules\Blog\Services;
use Illuminate\Support\Facades\DB;
use Modules\Blog\Models\BlogCategory;
class BlogCategoryService
{
public function getCategories(array $data)
{
$categories = BlogCategory::query()
->withCount(['blogs', 'publishedBlogs'])
->when(array_key_exists('status', $data) && $data['status'] && $data['status'] !== 'all', function ($query) use ($data) {
return $query->where('status', $data['status']);
})
->orderBy('sort', 'asc')
->get();
return $categories;
}
public function getCategoryBySlug(string $slug)
{
return BlogCategory::where('slug', $slug)->first();
}
public function getCategoriesStats(): array
{
$statistics = [
'total' => BlogCategory::count(),
'active' => BlogCategory::active()->count(),
'inactive' => BlogCategory::inactive()->count(),
];
return [
'statistics' => $statistics,
'statuses' => BlogCategory::getStatuses(),
];
}
public function storeCategory(array $data): BlogCategory
{
return BlogCategory::create($data);
}
public function updateCategory(string $id, array $data): bool
{
return BlogCategory::find($id)->update($data);
}
function deleteCategory(string $id): bool
{
$category = BlogCategory::find($id);
$defaultCategory = BlogCategory::where('slug', 'default')->first();
$category->blogs()->update([
'blog_category_id' => $defaultCategory->id,
]);
$category->delete();
return true;
}
}