Files
muninn/app/Http/Controllers/Api/PostController.php
T

64 lines
1.6 KiB
PHP
Raw Normal View History

2026-07-18 17:22:16 +03:00
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\StorePostRequest;
use App\Http\Requests\UpdatePostRequest;
use App\Http\Resources\PostResource;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index(Request $request)
{
$query = Post::query();
if ($request->filled('status')) {
$query->where('status', $request->string('status'));
}
if ($request->filled('site_id')) {
$query->where('site_id', $request->integer('site_id'));
}
if ($request->filled('social_account_id')) {
$query->where('social_account_id', $request->integer('social_account_id'));
}
if ($request->boolean('due')) {
$query->where('status', 'scheduled')
->where('scheduled_at', '<=', now());
}
return PostResource::collection($query->orderByDesc('created_at')->get());
}
public function show(Post $post)
{
return new PostResource($post);
}
public function store(StorePostRequest $request)
{
$post = Post::create($request->validated())->fresh();
return (new PostResource($post))->response()->setStatusCode(201);
}
public function update(UpdatePostRequest $request, Post $post)
{
$post->update($request->validated());
return new PostResource($post);
}
public function destroy(Post $post)
{
$post->delete();
return response()->noContent();
}
}