API Home dan Linking

This commit is contained in:
2024-04-18 08:46:49 +07:00
parent 666712f015
commit 1f26289b7a
11 changed files with 601 additions and 0 deletions

View File

@@ -11,6 +11,7 @@ use Illuminate\Support\Facades\DB;
use App\Models\Member;
use App\Models\User;
use App\Models\Service;
use App\Models\Icd;
use DateTime;
class Helper
@@ -117,6 +118,16 @@ class Helper
}
}
public static function diagnosisName($code)
{
$icd = Icd::where('code', $code)->get()->first();
if ($icd){
return $icd->name;
} else {
return '-';
}
}
public static function paginateResources($resource)
{
return [
@@ -443,4 +454,23 @@ class Helper
}
}
public static function calculateDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371) {
// Convert degrees to radians
$latFrom = deg2rad($latitudeFrom);
$lonFrom = deg2rad($longitudeFrom);
$latTo = deg2rad($latitudeTo);
$lonTo = deg2rad($longitudeTo);
// Calculate the change in coordinates
$deltaLat = $latTo - $latFrom;
$deltaLon = $lonTo - $lonFrom;
// Apply Haversine formula
$a = sin($deltaLat / 2) * sin($deltaLat / 2) + cos($latFrom) * cos($latTo) * sin($deltaLon / 2) * sin($deltaLon / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$distance = $earthRadius * $c;
return $distance;
}
}

View File

@@ -4,6 +4,12 @@ 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;
@@ -21,7 +27,46 @@ class MemberResource extends JsonResource
$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,
@@ -33,6 +78,9 @@ class MemberResource extends JsonResource
'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;

View File

@@ -23,6 +23,8 @@ class Person extends Model
'birth_date',
'birth_place',
'language',
'isOnline',
'review',
'race',
'citizenship',
'current_employment',