Lae/app/Http/Controllers/Api/ReplyController.php

63 lines
1.7 KiB
PHP
Raw Normal View History

2022-08-15 14:29:57 +00:00
<?php
2022-11-16 05:22:41 +00:00
namespace App\Http\Controllers\Api;
2022-08-15 14:29:57 +00:00
2022-11-06 11:28:22 +00:00
use App\Http\Controllers\Controller;
2022-09-13 05:07:36 +00:00
use App\Models\WorkOrder\Reply;
use App\Models\WorkOrder\WorkOrder;
2023-02-07 09:04:11 +00:00
use function auth;
2022-12-11 11:47:30 +00:00
use Illuminate\Http\JsonResponse;
2022-11-06 11:28:22 +00:00
use Illuminate\Http\Request;
2022-08-15 14:29:57 +00:00
class ReplyController extends Controller
{
/**
* Display a listing of the resource.
*/
2023-01-10 13:42:27 +00:00
public function index(WorkOrder $workOrder): JsonResponse
2022-08-15 14:29:57 +00:00
{
2023-01-10 13:42:27 +00:00
$replies = (new Reply)->workOrderId($workOrder->id)->with('module')->withUser()->simplePaginate(20);
2022-08-15 14:29:57 +00:00
return $this->success($replies);
}
/**
* Store a newly created resource in storage.
*/
2023-01-10 13:42:27 +00:00
public function store(Request $request, WorkOrder $workOrder): JsonResponse
2022-08-15 14:29:57 +00:00
{
2022-09-08 16:12:02 +00:00
$this->validate($request, [
2022-08-15 14:29:57 +00:00
'content' => 'string|required|min:1|max:1000',
]);
2023-01-01 13:00:21 +00:00
if ($workOrder->isFailure()) {
return $this->error('工单状态异常,无法进行回复。请尝试重新建立工单。');
}
2022-08-19 15:27:57 +00:00
2023-01-02 10:52:38 +00:00
// 如果工单已经关闭,那么访客不能回复
2023-02-07 09:04:11 +00:00
if ($workOrder->isClosed() && ! auth('sanctum')->check()) {
2023-01-02 10:52:38 +00:00
return $this->error('工单已关闭,无法进行回复。');
}
2023-01-01 13:00:21 +00:00
$create = [
2022-11-21 04:43:43 +00:00
'content' => $request->input('content'),
2022-09-13 05:07:36 +00:00
'work_order_id' => $workOrder->id,
2023-01-01 13:00:21 +00:00
];
if (auth('sanctum')->check()) {
$create['user_id'] = auth('sanctum')->id();
2023-01-31 17:53:12 +00:00
$create['name'] = auth('sanctum')->user()->name;
2023-01-01 13:00:21 +00:00
} else {
$this->validate($request, [
'name' => 'string|required|min:1|max:255',
]);
$create['name'] = $request->input('name');
}
2022-08-15 14:29:57 +00:00
2023-01-10 13:42:27 +00:00
$reply = (new Reply)->create($create);
2022-08-15 14:29:57 +00:00
return $this->success($reply);
}
}