Перевод на доменную архитектуру
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Infrastructure\Reports\Sources;
|
||||
|
||||
use App\Domain\Reports\Contracts\PatientSource;
|
||||
use App\Domain\Reports\Models\PatientCollection;
|
||||
use App\Domain\Reports\Models\ReportContext;
|
||||
use App\Models\Department;
|
||||
use App\Models\User;
|
||||
use App\Services\DateRange;
|
||||
use App\Infrastructure\Reports\Adapters\LegacyReportServiceAdapter;
|
||||
use Carbon\Carbon;
|
||||
|
||||
final readonly class LegacyAutoFillPatientSource implements PatientSource
|
||||
{
|
||||
public function __construct(
|
||||
private LegacyReportServiceAdapter $legacyAdapter,
|
||||
) {}
|
||||
|
||||
public function load(ReportContext $context): PatientCollection
|
||||
{
|
||||
$department = Department::query()->findOrFail($context->departmentId);
|
||||
$user = User::query()->findOrFail($context->actorUserId ?? $context->userId);
|
||||
$scopedUser = clone $user;
|
||||
$scopedUser->rf_department_id = $department->department_id;
|
||||
$scopedUser->setRelation('department', $department);
|
||||
$dateRange = new DateRange(
|
||||
startDate: Carbon::parse($context->periodStart->format('Y-m-d H:i:s'), 'Asia/Yakutsk'),
|
||||
endDate: Carbon::parse($context->periodEnd->format('Y-m-d H:i:s'), 'Asia/Yakutsk'),
|
||||
startDateRaw: $context->periodStart->format('Y-m-d H:i:s'),
|
||||
endDateRaw: $context->periodEnd->format('Y-m-d H:i:s'),
|
||||
isOneDay: $context->periodStart->diff($context->periodEnd)->days <= 1,
|
||||
);
|
||||
|
||||
return new PatientCollection(
|
||||
items: [],
|
||||
metadata: [
|
||||
'payload' => $this->legacyAdapter->buildAutoFillPayload($scopedUser, $department, $dateRange),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user