parsaaghayi-backend/app/Http/Controllers/ProjectController.php
parsa aghaei bd92c3e3fc initial
2024-09-25 13:05:18 +03:30

74 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Project;
class ProjectController extends Controller
{
public function index(Request $request)
{
$projects = Project::query();
// 1. اگر category مشخص شده باشد
if ($request->has('category')) {
$category = $request->input('category');
// فیلتر کردن پروژه‌ها بر اساس category با استفاده از LIKE
$projects = $projects->where('category', 'like', '%' . $category . '%');
}
// 2. انتخاب نوع مرتب‌سازی (جدیدترین یا قدیمی‌ترین)
$sortOrder = $request->input('sort', 'desc'); // 'desc' برای جدیدترین و 'asc' برای قدیمی‌ترین
$projects = $projects->orderBy('created_at', $sortOrder);
// 3. پیاده‌سازی pagination
$perPage = $request->input('per_page', 10); // تعداد پروژه‌ها در هر صفحه
$paginatedProjects = $projects->paginate($perPage);
// 4. دریافت تمام categories موجود از ستون category
$categories = Project::distinct()->pluck('category'); // گرفتن دسته‌بندی‌های یکتا
return response()->json([
'projects' => $paginatedProjects,
'categories' => $categories,
]);
}
public function create()
{
// برگرداندن ویو فرم ایجاد پروژه (اگر نیاز است)
}
public function store(Request $request)
{
$project = Project::create($request->all());
return response()->json($project, 201);
}
public function show($id)
{
$project = Project::findOrFail($id);
return response()->json($project);
}
public function edit($id)
{
// برگرداندن ویو فرم ویرایش پروژه (اگر نیاز است)
}
public function update(Request $request, $id)
{
$project = Project::findOrFail($id);
$project->update($request->all());
return response()->json($project);
}
public function destroy($id)
{
Project::destroy($id);
return response()->json(null, 204);
}
}