Files
aso/app/Http/Resources/OLDLMS/MemberResource.php
2026-02-04 14:39:20 +07:00

89 lines
3.3 KiB
PHP

<?php
namespace App\Http\Resources\OLDLMS;
use App\Services\ClaimService;
use App\Models\Corporate;
use App\Models\CorporateBenefit;
use App\Models\RequestLog;
use App\Models\RequestLogBenefit;
use App\Models\MemberPlan;
use App\Helpers\Helper;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
class MemberResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
// $data = parent::toArray($request);
$currentMemberPlan = $this->memberPlans?->first();
$limitTelecon = $currentMemberPlan->plan->limit_telecon ?? null;
$limitTelecon = $this->totalUsage >= 6 ? null : $limitTelecon;
$services = MemberPlan::where('member_id', $this->id)->with('plan')->get()->toArray();
$dataServices = [];
if ($services) {
foreach($services as $service) {
$serviceName = Helper::serviceName($service['plan']['service_code']);
$benefits = CorporateBenefit::where('plan_id', $service['plan_id'])->with('benefit')->get()->toArray();
$dataBenefit = [];
foreach($benefits as $benefit){
$dataBenefitItem = $benefit['benefit']['description'];
array_push($dataBenefit, $dataBenefitItem);
}
$data = [
'name' => $serviceName,
'benefit' => $dataBenefit
];
array_push($dataServices, $data);
}
}
// LOG
$dataLog = [];
$requestLogs = RequestLog::where('member_id', $this->id)->with('organization')->get()->toArray();
$totalBenefit = 0;
if ($requestLogs) {
foreach($requestLogs as $requestLog) {
$requestLogBenefit = RequestLogBenefit::where('request_log_id', $requestLog['id'])->sum('amount_approved');
$totalBenefit += $requestLogBenefit;
$data = [
'id' => $requestLog['id'],
'code' => $requestLog['code'],
'submission_date' => Carbon::parse($requestLog['submission_date'])->format('d M Y H:i:s'),
'provider_name' => $requestLog['organization']['name'],
'service' => Helper::serviceName($requestLog['service_code'])
];
array_push($dataLog, $data);
}
}
$data = [
'id' => $this->id,
'member_name' => $this->full_name,
'member_id' => $this->member_id,
'policy_holder' => $this->currentPolicy->corporate->name,
'policy_number' => $this->currentPolicy->code ?? null,
'date_of_birth' => $this->birth_date,
'gender' => $this->gender,
'start_date' => $this->members_effective_date,
'corporate_logo' => $_ENV['LMS_APP_STORAGE'] . $this->corporateLogo,
'valid_until' => $this->members_expire_date,
'total_benefit_usage' => $totalBenefit,
'service' => $dataServices,
'histor_log' => $dataLog
];
return $data;
}
}