Files
apigizibalita/app/Http/Controllers/Api/CommentController.php
T
2026-06-07 19:10:00 +07:00

125 lines
3.4 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Models\Comment;
use App\Models\Post;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CommentController extends ApiBaseController
{
public function index()
{
$comment = Comment::with('user')->with('post')->get();
$response = [];
foreach ($comment as $key => $data) {
$response[$key] = [
"comment_id" => $data->id,
"post_id" => $data->post_id,
"title_post" => $data->post->title,
"content" => $data->post->content,
"user_id" => $data->user_id,
"nama" => $data->user->nama,
"role" => $data->role->role,
"email" => $data->user->email,
"comment" => $data->content,
"time" => Carbon::createFromFormat('Y-m-d H:i:s', $data->created_at)->format('Y-m-d H:i:s'),
];
}
return $this->successResponse("Data Post", $response);
}
public function store(Request $request)
{
$validator = validator($request->all(), [
'user_id' => ['required', 'integer'],
'post_id' => ['required', 'integer'],
'content' => ['required', 'string'],
]);
if ($validator->fails()) {
return $this->errorValidationResponse("Inputan Tidak Sesuai", $validator->errors());
}
$user = User::find($request->user_id);
if (!$user) {
return $this->errorNotFound("User Tidak Ditemukan");
}
$post = Post::find($request->post_id);
if (!$post) {
return $this->errorNotFound("Post Tidak Ditemukan");
}
$comment = new Comment();
$comment->fill([
'user_id' => $request->user_id,
'post_id' => $request->post_id,
'content' => $request->content,
]);
// Jika role user adalah TENAGA_KESEHATAN, tandai post sebagai telah dibaca
if ($user->role->role === 'TENAGA_KESEHATAN') {
$post->read = true;
$post->save();
}
$comment->save();
return $this->successResponse("Data Berhasil Disimpan");
}
public function show($id)
{
$comment = Post::find($id)->comments->all();
if (empty($comment)) {
return $this->errorNotFound("Data Post tidak ditemukan");
}
$response = [];
foreach ($comment as $key => $data) {
$user = User::find($data->user_id);
$response[$key] = [
"user_id" => $user->id,
"nama" => $user->nama,
"role" => $user->role->role,
"email" => $user->email,
"comment_id" => $data->id,
"content" => $data->content,
"time" => Carbon::createFromFormat('Y-m-d H:i:s', $data->created_at)->format('Y-m-d H:i:s'),
];
}
return $this->successResponse("Data Comment", $response);
}
public function update(Request $request, $id)
{
//
}
public function destroy($id)
{
$comment = Comment::findOrFail($id);
if (empty($comment)) {
return $this->errorNotFound("Data Comment tidak ditemukan");
}
$comment->delete();
return $this->successResponse("Success Delete Data Post");
}
}