64 lines
1.6 KiB
PHP
64 lines
1.6 KiB
PHP
<?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();
|
||
|
|
}
|
||
|
|
}
|