Files

107 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Resources\Admin\ReportResource;
use App\Models\Report;
use Illuminate\Http\Request;
use Inertia\Inertia;
use App\Http\Requests\Admin\ReportRequest;
use App\Enums\ReportStatusEnum;
class ReportController extends Controller
{
public function index(Request $request)
{
$lists = Report::with(['document', 'doctor'])
->when(isset($request->search) , function ($query) use ($request){
$query->where(function ($q) use ($request) {
$q->where('id', 'LIKE', "%{$request->search}%")
->orWhereHas('document', function ($documentQuery) use ($request) {
$documentQuery->where('code', 'LIKE', "%{$request->search}%");
})
->orWhereHas('doctor', function ($userQuery) use ($request) {
$userQuery->where('fullname', 'LIKE', "%{$request->search}%")
->orWhere('username', 'LIKE', "%{$request->search}%")
->orWhere('email', 'LIKE', "%{$request->search}%");
});
});
})
->when(isset($request->status) && $request->status != 'همه وضعیت ها', function ($query) use ($request) {
$query->where('status' , $request->status);
})
->latest()
->paginate(20)
->withQueryString()
->onEachSide(1);
$reports = ReportResource::collection($lists);
return Inertia::admin('Reports/index', [
'reports' => $reports,
'search' => $request->search,
'status' => $request->status,
]);
}
public function create()
{
//
}
public function store(ReportRequest $request)
{
Report::create([
'document_id' => $request->document_id,
'doctor_id' => $request->doctor_id,
'status' => ReportStatusEnum::fromName($request->status)->value,
'body' => $request->body,
'submitted_at' => $request->submitted_at,
]);
session()->flash('success', 'گزارش با موفقیت ثبت شد');
return response(null , 200);
}
public function show(Report $report)
{
//
}
public function edit(Report $report)
{
return Inertia::admin('Reports/edit', [
'report' => $report,
]);
}
public function update(ReportRequest $request, Report $report)
{
$report->update([
'document_id' => $request->document_id,
'doctor_id' => $request->doctor_id,
'status' => ReportStatusEnum::fromName($request->status)->value,
'body' => $request->body,
'submitted_at' => $request->submitted_at,
]);
session()->flash('success', 'گزارش با موفقیت ویرایش شد');
return response(null , 200);
}
public function destroy(Report $report)
{
$report->delete();
session()->flash('success', 'گزارش با موفقیت حذف شد');
return response(null , 200);
}
}