File "SortToProjectCreditResource.php"
Full Path: /var/www/html/back/app/Http/Resources/SortToProjectCreditResource.php
File size: 1.45 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Resources;
use App\Domain\Payment\Enums\PaymentTypeEnum;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class SortToProjectCreditResource extends JsonResource
{
public function toArray(Request $request): array
{
$groupedByProject = $this->paymentDistributions
->filter(fn($item) => $item->project && $item->payment)
->groupBy('project_id');
$projects = $groupedByProject->map(function ($distributions, $projectId) {
$project = $distributions->first()->project;
$totalExtradition = $distributions
->filter(fn($item) => $item->payment->payment_type == PaymentTypeEnum::PAYMENT_TYPE_ISSUEANCE->value)
->sum(fn($item) => (float)$item->amount);
$totalAmount = $distributions->sum(fn($item) => (float)$item->amount);
return [
'id' => $project->id,
'description' => $project->description,
'short_description' => $project->short_description,
'offer_number' => $project->offer_number,
'object_address' => $project->object_address,
'total_extradition' => $totalExtradition,
'total_amount' => $totalAmount,
];
})->values();
return [
'id' => $this->id,
'name' => $this->name,
'projects' => $projects->toArray(),
];
}
}