62 lines
1.8 KiB
PHP
62 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Client\Doctor;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Client\ReportSubmitRequest;
|
|
use App\Http\Resources\Client\CaseResource;
|
|
use App\Http\Resources\Client\ReportResource;
|
|
use App\Models\Document;
|
|
use App\Models\Report;
|
|
use App\Services\Document\CaseService;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Inertia\Inertia;
|
|
|
|
class ReportController extends Controller
|
|
{
|
|
protected CaseService $caseService;
|
|
|
|
public function __construct(CaseService $caseService)
|
|
{
|
|
$this->caseService = $caseService;
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
$reports = Report::with(['document', 'doctor'])
|
|
->where(function ($query) {
|
|
$query->where('doctor_id', Auth::id())
|
|
->orWhereHas('document', fn ($documentQuery) => $documentQuery->where('requester_id', Auth::id()));
|
|
})
|
|
->latest('submitted_at')
|
|
->paginate(10)
|
|
->withQueryString()
|
|
->onEachSide(1);
|
|
|
|
$pendingCases = $this->caseService->isDoctor(Auth::user())
|
|
? CaseResource::collection($this->caseService->pendingForUser(Auth::user())->get())
|
|
: null;
|
|
|
|
return Inertia::client('Dashboard/Reports/Index', [
|
|
'reports' => ReportResource::collection($reports),
|
|
'pendingCases' => $pendingCases,
|
|
]);
|
|
}
|
|
|
|
public function store(ReportSubmitRequest $request)
|
|
{
|
|
$document = Document::findOrFail($request->validated('document_id'));
|
|
|
|
$this->caseService->submitReport(
|
|
$document,
|
|
Auth::user(),
|
|
$request->validated(),
|
|
$request->file('files', [])
|
|
);
|
|
|
|
session()->flash('success', 'گزارش با موفقیت ثبت شد.');
|
|
|
|
return redirect()->route('dashboard.cases.index');
|
|
}
|
|
}
|