feat: Implement Fast Request feature with file upload and request management

This commit is contained in:
2026-08-26 17:40:45 +03:30
parent ba734679cf
commit 2d96978c38
33 changed files with 1294 additions and 852 deletions
@@ -0,0 +1,41 @@
<?php
namespace App\Http\Resources\Client;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class CaseResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'code' => $this->code,
'status' => $this->status,
'modality' => $this->modality,
'requester' => optional($this->requester)->fullname,
'submitted_at' => $this->submitted_at ? verta($this->submitted_at)->format('%Y/%m/%d - H:i') : null,
'processing_deadline' => $this->deadlineLabel(),
];
}
protected function deadlineLabel(): ?string
{
if (!$this->processing_deadline) {
return null;
}
if (now()->greaterThanOrEqualTo($this->processing_deadline)) {
return 'اتمام فرصت رسیدگی';
}
$minutes = (int) now()->diffInMinutes($this->processing_deadline, true);
if ($minutes < 60) {
return $minutes . ' دقیقه';
}
return 'کمتر از ' . (int) ceil($minutes / 60) . ' ساعت';
}
}
@@ -0,0 +1,19 @@
<?php
namespace App\Http\Resources\Client;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class DoctorResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'fullname' => $this->fullname,
'specialty' => $this->specialty,
'profile_url' => $this->profile_url,
];
}
}
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Resources\Client;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class FastRequestResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'code' => $this->code,
'modality' => $this->modality,
'status' => $this->status,
'priority' => $this->priority,
'pet' => new PetArchiveResource($this->whenLoaded('pet')),
];
}
}
@@ -0,0 +1,19 @@
<?php
namespace App\Http\Resources\Client;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class PetArchiveResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'name' => $this->name,
'type' => $this->type,
'breed' => $this->breed,
];
}
}