diff --git a/.env-example b/.env-example index 7b90eaa0..c5dda0a5 100644 --- a/.env-example +++ b/.env-example @@ -75,8 +75,8 @@ MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" LMS_API_URL="http://lmsapi.primaya.id" -DUITKU_MERCHANT_KEY=c61af0a92d8e9b7fff00deecc975d84d -DUITKU_MERCHANT_CODE=D11810 +DUITKU_MERCHANT_KEY= +DUITKU_MERCHANT_CODE= DUITKU_IS_SANDBOX=TRUE WKHTML_PDF_BINARY=/var/www/aso/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 diff --git a/Modules/Client/Http/Controllers/Api/CorporateMemberController.php b/Modules/Client/Http/Controllers/Api/CorporateMemberController.php index 83fa13e3..cfc54a63 100644 --- a/Modules/Client/Http/Controllers/Api/CorporateMemberController.php +++ b/Modules/Client/Http/Controllers/Api/CorporateMemberController.php @@ -6,7 +6,7 @@ use App\Helpers\Helper; use App\Models\Member; use App\Models\Claim; use App\Models\ClaimRequest; -use App\Models\CorporateEmployee; +use App\Models\RequestLog; use App\Services\CorporateMemberService; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; @@ -18,15 +18,14 @@ use Modules\Client\Transformers\Dashboard\MemberResources as ClaimSubmitMemberRe use Modules\Client\Transformers\Dashboard\MemberResources as DashboardMemberResources; use Modules\Client\Transformers\Dashboard\MemberAlarmCenterResources as DashboardMemberAlarmResources; use Modules\Client\Transformers\Dashboard\MemberEmployeeDataResources as DashboardMemberEmployeeDataResources; -use Modules\Client\Transformers\DataMemberResource; -use Illuminate\Support\Facades\DB; - -use Box\Spout\Reader\Common\Creator\ReaderEntityFactory; use Box\Spout\Writer\Common\Creator\WriterEntityFactory; +use Modules\Client\Transformers\EmployeeData\UserProfile\DataMemberResource as EmployeeDataProfileMemberResource; use Modules\Internal\Services\MemberEnrollmentService; class CorporateMemberController extends Controller { + public $memberEnrollmentService; + public function __construct(public CorporateMemberService $corporateMemberService, MemberEnrollmentService $memberEnrollmentService) { $this->memberEnrollmentService = $memberEnrollmentService; @@ -62,173 +61,185 @@ class CorporateMemberController extends Controller public function show($corporate_id, $person_id) { - $data = Member::with(['claims', 'person', 'employeds', 'currentPlan.benefits', 'person.currentAddress']) - ->where('person_id', $person_id) - ->whereHas('employeds', function ($query) use ($corporate_id) { - $query->where('corporate_id', $corporate_id); - }) - ->first(); + $data = Member::query() + ->with(['person']) + ->where('person_id', $person_id) + ->whereHas('currentCorporate', function ($query) use ($corporate_id) { + $query->where('corporate_id', $corporate_id); + }) + ->firstOrFail(); - - $totalClaims = $data->claims->sum('total_claim'); - $data->total_claims = $totalClaims; - - //Get Family - - $data_family = DB::table('members') - ->join('persons', 'members.person_id', '=', 'persons.id') - ->select('members.*', 'persons.phone') + // Get Families + $data->families = Member::query() + ->with(['person']) ->where('principal_id', $data->member_id) ->get(); - if ($data_family->isEmpty()) { - $principal_id = DB::table('members') - ->where('member_id', $data->member_id) - ->select('principal_id') - ->first(); - $data_family = DB::table('members') - ->join('persons', 'members.person_id', '=', 'persons.id') - ->select('members.*', 'persons.phone') - ->where('principal_id', $principal_id->principal_id) - ->where('members.member_id', '<>', $data->member_id) - ->orWhere('members.member_id', $principal_id->principal_id) - ->get(); + + return response()->json(EmployeeDataProfileMemberResource::make($data)); + } + + public function generateMemberList($corporate_id) + { + // Mendapatkan data yang akan diekspor (misalnya, dari database) + $data = Member::with(['currentPlan', 'currentCorporate', 'division', 'employeds', 'currentPolicy']) + // ->filter($request->all()) + // ->where('corporate_id', $corporate_id) + ->whereHas('employeds', function ($employeds) use ($corporate_id) { + $employeds->where('corporate_id', $corporate_id); + })->get()->toArray(); + // Membuat penulis entitas Spout + $writer = WriterEntityFactory::createXLSXWriter(); + + // Membuka penulis untuk menulis ke file + $writer->openToFile(public_path('files/CorporateMembershipList.xlsx')); + // Menulis header kolom + $headers_map_to_table_fields = $this->memberEnrollmentService->listing_doc_headers; + $headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields); + + $writer->addRow($headerRow); + + // Menulis data + if (!empty($data)) { + foreach ($data as $item) { + $rowData = [ + $item['record_mode'], // Recode Mode + $item['record_type'], // Recode Type + $item['payor_id'], // Payor ID + $item['member_id'], // Member ID + $item['principal_id'], // Mapping ID + NULL, // Link Medis Member ID + $item['current_corporate']['code'] ?? null, // Corporate ID + $item['employeds'][0]['nik'] ?? null, // NIK + $item['division']['code'] ?? null, // Devision + $item['employeds'][0]['branch_code'] ?? null, // Branch Code + $item['bank_info'], // Bank Info + $item['language'], // Language + null, // Type of Work + $item['race'], // Race + $item['current_policy']['code'] ?? null, // Policy Number + $item['marital_status'], // Marital Status + $item['relation_with_principal'], // Relationship + str_replace('-', '', $item['members_effective_date']), // Member effective date + str_replace('-', '', $item['members_expire_date']), // Member expiry date + NULL, // Faskes FKTP (First Level Provider) or Individual preferred provider + NULL, // Faskes FKRTL (Next Level Provider) or Individual group preferred provider + $item['bpjs_class'], // The Right Classes Room of BPJS Participants + NULL, // Name of Faskes + NULL, // Rule BPJSK + NULL, // Internal Use + $item['full_name'], // Member Name + $item['address1'], // Address1 + $item['address2'], // Address2 + $item['address3'], // Address3 + $item['address4'], // Address4 + $item['city'], // City + NULL, // State + $item['postal_code'], // Post Code + NULL, // Telephone - Mobile + NULL, // Telephone - Res + NULL, // Telephone - Office + $item['nric'], // NRIC + $item['passport_no'], // Passport No + $item['passport_country'], // Passport Country + $item['email'], // Email + $item['identification_code'], // Identification Code + $item['birth_date'], // Date of Birth + $item['gender_code'], // Sex + NULL, // Internal Use + $item['current_plan']['code'] ?? null, // Plan-ID + NULL, // Employment-Status + NULL, // Internal Use + NULL, // Internal Use + NULL, // Internal Use + str_replace('-', '', $item['terminated_date']), // Date Terminated + $item['pre_existing'], // Pre Existing + $item['bpjs_id'], // BPJS ID + $item['endorsement_date'], // Endorsement Date + $item['remarks'], // Remarks + NULL, // Internal Use + NULL, // Member Since + NULL, // Internal Use + $item['policy_in_force'], // Policy Inforce + NULL, // Member Suspended + str_replace('-', '', $item['activation_date']), // Activation Date + NULL, // Internal Use + $item['start_no_claim'], // StartNoClaim + $item['end_no_claim'], // EndNoClaim + NULL, // Option Mode + ]; + $row = WriterEntityFactory::createRowFromArray($rowData); + $writer->addRow($row); + } } - $data->family = $data_family; - - //Claim History - $data_claim_history = DB::table('claim_requests') - ->join('claims', 'claims.claim_request_id', '=', 'claim_requests.id') - ->join('claim_items', 'claim_items.claim_id', '=', 'claims.id') - ->join('benefits', 'benefits.id', '=', 'claim_items.claim_itemable_id') - ->select('claim_requests.status', 'claim_requests.submission_date', 'benefits.description') - ->where('claim_requests.member_id', $data->id) - ->get(); - $data->claim_history = $data_claim_history; - - return response()->json(DataMemberResource::make($data)); - - + // Menutup penulis + $writer->close(); + // dd('test'); + // Mengembalikan response untuk mengunduh file + $filePath = public_path('files/CorporateMembershipList.xlsx'); + // dd($filePath); + // Mengembalikan response untuk mengunduh file + return Helper::responseJson([ + 'file_name' => "Corporate Plan & Benefit List " . date('Y-m-d h:i:s'), + "file_url" => url('files/CorporateMembershipList.xlsx') + ]); } - public function generateMemberList($corporate_id){ - // Mendapatkan data yang akan diekspor (misalnya, dari database) - $data = Member::with(['currentPlan', 'currentCorporate', 'division', 'employeds', 'currentPolicy']) - // ->filter($request->all()) - // ->where('corporate_id', $corporate_id) - ->whereHas('employeds', function ($employeds) use ($corporate_id) { - $employeds->where('corporate_id', $corporate_id); - })->get()->toArray(); - // Membuat penulis entitas Spout - $writer = WriterEntityFactory::createXLSXWriter(); - - // Membuka penulis untuk menulis ke file - $writer->openToFile(public_path('files/CorporateMembershipList.xlsx')); - // Menulis header kolom - $headers_map_to_table_fields = $this->memberEnrollmentService->listing_doc_headers; - $headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields); - - $writer->addRow($headerRow); - // dd('test'); - // Menulis data - if (!empty($data)) { - foreach ($data as $item) { - $rowData = [ $item['record_mode'], // Recode Mode - $item['record_type'], // Recode Type - $item['payor_id'], // Payor ID - $item['member_id'], // Member ID - $item['principal_id'], // Mapping ID - NULL, // Link Medis Member ID - $item['current_corporate']['code'] ?? null, // Corporate ID - $item['employeds'][0]['nik'] ?? null, // NIK - $item['division']['code'] ?? null, // Devision - $item['employeds'][0]['branch_code'] ?? null, // Branch Code - $item['bank_info'], // Bank Info - $item['language'], // Language - null, // Type of Work - $item['race'], // Race - $item['current_policy']['code'] ?? null, // Policy Number - $item['marital_status'], // Marital Status - $item['relation_with_principal'], // Relationship - str_replace('-', '',$item['members_effective_date']), // Member effective date - str_replace('-', '',$item['members_expire_date']), // Member expiry date - NULL, // Faskes FKTP (First Level Provider) or Individual preferred provider - NULL, // Faskes FKRTL (Next Level Provider) or Individual group preferred provider - $item['bpjs_class'], // The Right Classes Room of BPJS Participants - NULL, // Name of Faskes - NULL, // Rule BPJSK - NULL, // Internal Use - $item['full_name'], // Member Name - $item['address1'], // Address1 - $item['address2'], // Address2 - $item['address3'], // Address3 - $item['address4'], // Address4 - $item['city'], // City - NULL, // State - $item['postal_code'], // Post Code - NULL, // Telephone - Mobile - NULL, // Telephone - Res - NULL, // Telephone - Office - $item['nric'], // NRIC - $item['passport_no'], // Passport No - $item['passport_country'], // Passport Country - $item['email'], // Email - $item['identification_code'], // Identification Code - $item['birth_date'], // Date of Birth - $item['gender_code'], // Sex - NULL, // Internal Use - $item['current_plan']['code'] ?? null, // Plan-ID - NULL, // Employment-Status - NULL, // Internal Use - NULL, // Internal Use - NULL,// Internal Use - str_replace('-', '',$item['terminated_date']), // Date Terminated - $item['pre_existing'], // Pre Existing - $item['bpjs_id'], // BPJS ID - $item['endorsement_date'], // Endorsement Date - $item['remarks'], // Remarks - NULL, // Internal Use - NULL,// Member Since - NULL,// Internal Use - $item['policy_in_force'], // Policy Inforce - NULL, // Member Suspended - str_replace('-', '',$item['activation_date']), // Activation Date - NULL, // Internal Use - $item['start_no_claim'], // StartNoClaim - $item['end_no_claim'], // EndNoClaim - NULL, // Option Mode - ]; - $row = WriterEntityFactory::createRowFromArray($rowData); - $writer->addRow($row); - } - } - - // Menutup penulis - $writer->close(); - // dd('test'); - // Mengembalikan response untuk mengunduh file - $filePath = public_path('files/CorporateMembershipList.xlsx'); - // dd($filePath); - // Mengembalikan response untuk mengunduh file - return Helper::responseJson([ - 'file_name' => "Corporate Plan & Benefit List " . date('Y-m-d h:i:s'), - "file_url" => url('files/CorporateMembershipList.xlsx') - ]); - } - - public function showPerMember($corporate_id, $member_id){ - $data = ClaimRequest::where(['member_id' => $member_id]) - ->whereNotNull('claim_id') - ->paginate(10); - return response()->json(Helper::paginateResources(DataListClaimMemberResource::collection($data))); - } - - public function serviceMonitoring($corporate_id, $claim_id) + public function showPerMember(Request $request, $corporate_id, $member_id) { - $data = Claim::where('id', $claim_id)->first(); + $per_page = $request->has('per_page') ? $request->input('per_page') : 10; + + $data = Member::query() + ->with(['requestLogs']) + ->whereHas('currentCorporate', function ($query) use ($corporate_id) { + $query->where('corporate_id', $corporate_id); + }) + ->find($member_id); + + return response()->json(['full_name' => $data->full_name ?? null, 'paginations' => Helper::paginateResources(DataListClaimMemberResource::collection($data->requestLogs()->paginate($per_page)))]); + } + + public function serviceMonitoring(int $corporate_id, int $request_log_id) + { + $data = RequestLog::query() + ->with([ + 'member:id,member_id,person_id,birth_date,email,name_prefix,name,name_suffix' => [ + 'currentCorporate', + 'person:id,email,name_prefix,name,name_suffix,phone' + ], + 'organization:id,name', + 'requestLogBenefits:id,request_log_id,benefit_id,amount_incurred,amount_approved,amount_not_approved,excess_paid,keterangan' => [ + 'benefit' + ], + 'requestLogDailyMonitorings:id,request_log_id,created_at,subject,body_temperature,sistole,diastole,respiration_rate,analysis,lab_date,provider,examination' => [ + 'requestLogMedicalPlans:request_log_daily_monitoring_id,plan,type' + ], + 'service:code,name', + ]) + ->find($request_log_id, ['id', 'submission_date', 'discharge_date', 'member_id', 'service_code', 'organization_id']); + + $dataBenefit = []; + if (count($data->requestLogBenefits) > 0) { + $totalIncurred = 0; + $totalApprove = 0; + $totalNotApporve = 0; + $totalExcess = 0; + + foreach ($data->requestLogBenefits as $itemBenefit) { + $totalIncurred += $itemBenefit->amount_incurred; + $totalApprove += $itemBenefit->amount_approved; + $totalNotApporve += $itemBenefit->amount_not_approved; + $totalExcess += $itemBenefit->excess_paid; + } + + $dataBenefit['totalIncurred'] = $totalIncurred; + $dataBenefit['totalApprove'] = $totalApprove; + $dataBenefit['totalNotApprove'] = $totalNotApporve; + $dataBenefit['totalExcess'] = $totalExcess; + } + + $data->benefitTotal = $dataBenefit; + return Helper::responseJson(DataServiceMonitoring::make($data)); } - - } - diff --git a/Modules/Client/Http/Controllers/Api/CorporatePolicyController.php b/Modules/Client/Http/Controllers/Api/CorporatePolicyController.php index 6482a8b2..372fc62c 100644 --- a/Modules/Client/Http/Controllers/Api/CorporatePolicyController.php +++ b/Modules/Client/Http/Controllers/Api/CorporatePolicyController.php @@ -18,7 +18,7 @@ class CorporatePolicyController extends Controller public function index($corporate_id) { $currentCorporate = Auth::user()->managedCorporates() - ->with(['currentPolicy', 'employees']) + ->with(['currentPolicy']) ->find($corporate_id); $data = LimitResources::make($currentCorporate); diff --git a/Modules/Client/Http/Controllers/Api/TopUpController.php b/Modules/Client/Http/Controllers/Api/TopUpController.php index d6b324fc..f2d9a41d 100644 --- a/Modules/Client/Http/Controllers/Api/TopUpController.php +++ b/Modules/Client/Http/Controllers/Api/TopUpController.php @@ -20,7 +20,7 @@ class TopUpController extends Controller { $data = Auth::user() ->managedCorporates() - ->with(['currentPolicy', 'employees']) + ->with(['currentPolicy']) ->withCount(['employees', 'claims' => function ($query) { $query->where('claims.status', 'paid'); }]) @@ -36,20 +36,20 @@ class TopUpController extends Controller */ public function store(Request $request, $corporate_id) { - + $data = $request->validate([ 'topup' => 'required|numeric', ]); - $corporatePolicy = CorporatePolicy::query()->where('corporate_id',$corporate_id)->firstOrFail(); + $corporatePolicy = CorporatePolicy::query()->where('corporate_id', $corporate_id)->firstOrFail(); if (!$corporatePolicy) { - return response() -> json (['message' => 'Corporate policy not found'],404); + return response()->json(['message' => 'Corporate policy not found'], 404); } - $corporatePolicy -> total_premi += $data ['topup']; - $corporatePolicy -> save(); + $corporatePolicy->total_premi += $data['topup']; + $corporatePolicy->save(); - return response () -> json (['message' => 'Amount added to total_premi successfully'], 200); + return response()->json(['message' => 'Amount added to total_premi successfully'], 200); } /** diff --git a/Modules/Client/Routes/api.php b/Modules/Client/Routes/api.php index 28b28bcf..e7fc76e2 100644 --- a/Modules/Client/Routes/api.php +++ b/Modules/Client/Routes/api.php @@ -50,7 +50,7 @@ Route::prefix('client')->group(function () { Route::get('members/{id}', [CorporateMemberController::class, 'show']); Route::get('export-members/list', [CorporateMemberController::class, 'generateMemberList']); Route::get('alarm-center-members/{id}', [CorporateMemberController::class, 'showPerMember']); - Route::get('service-monitoring/{id}', [CorporateMemberController::class, 'serviceMonitoring']); + Route::get('service-monitoring/{request_log_id}', [CorporateMemberController::class, 'serviceMonitoring']); Route::get('claims/status', [ClaimController::class, 'status']); Route::get('claims', [ClaimController::class, 'index']); Route::get('claims/export', [ClaimController::class, 'export']); @@ -65,8 +65,6 @@ Route::prefix('client')->group(function () { Route::get('corporate', [CorporateCurrentController::class, 'index']); Route::put('corporate-update', [CorporateCurrentController::class, 'update']); - - }); Route::get('claims/{id}', [ClaimController::class, 'show']); diff --git a/Modules/Client/Transformers/AlarmCenter/DataListClaimMemberResource.php b/Modules/Client/Transformers/AlarmCenter/DataListClaimMemberResource.php index 988ebb55..9b815b95 100644 --- a/Modules/Client/Transformers/AlarmCenter/DataListClaimMemberResource.php +++ b/Modules/Client/Transformers/AlarmCenter/DataListClaimMemberResource.php @@ -2,9 +2,8 @@ namespace Modules\Client\Transformers\AlarmCenter; -use App\Models\Member; use Illuminate\Http\Resources\Json\JsonResource; -use Illuminate\Support\Facades\Storage; +use App\Models\Service; class DataListClaimMemberResource extends JsonResource { @@ -16,22 +15,27 @@ class DataListClaimMemberResource extends JsonResource */ public function toArray($request) { - $member = Member::findOrFail($this->member_id); + $serviceData = Service::where('code', $this->service_code)->first(); + if ($serviceData) { + $serviceName = $serviceData->name; + } else { + $serviceName = $this->service_cod; + } + if ($this->status == 'approved' && $this->status_final_log ){ + $status = 'Done'; + } else if ($this->status == 'declined' || $this->status_final_log == 'declined') { + $status = 'Declined'; + } else { + $status = 'Ongoing'; + } return [ 'id' => $this->id, - 'admission_date' => $this->submission_date, - 'discharge_date' => $this->submission_date, - 'code' => $this->code, - 'service_type' => $this->service_code == 'IP' ? 'Inpatient' : 'Outpatient', - 'status' => $this->service_code == 'approved' ? 'Done' : 'OnGoing', - 'claim_id' => $this->claim_id, - // 'memberId' => $this->member_id, - 'fullName' => $member->name, - // 'division' => $this->division_name ?? '', - // 'status' => $this->status, - // 'claimRequestId' => $this->claim_request_id, - // 'submissionDate' => $this->submission_date, - ]; + 'admission_date' => $this->submission_date ?? null, + 'discharge_date' => $this->discharge_date ?? null, + 'code' => $this->code ?? null, + 'service_type' => $serviceName, + 'status' => $status, + ]; } } diff --git a/Modules/Client/Transformers/AlarmCenter/DataServiceMonitoring.php b/Modules/Client/Transformers/AlarmCenter/DataServiceMonitoring.php index 4922f3eb..30bbf193 100644 --- a/Modules/Client/Transformers/AlarmCenter/DataServiceMonitoring.php +++ b/Modules/Client/Transformers/AlarmCenter/DataServiceMonitoring.php @@ -2,25 +2,8 @@ namespace Modules\Client\Transformers\AlarmCenter; -use App\Models\ClaimRequest; -use App\Models\DiagnosisSecondaryClaimHistoryCare; -use App\Models\ClaimEncounter; -use App\Models\ClaimHistoryCare; -use App\Models\Encounter; -use App\Models\Member; -use App\Models\Icd; -use App\Models\Organization; -use App\Models\MedicalPlan; -use App\Models\CorporateEmployee; -use App\Models\DailyMonitoring; -use App\Models\LaboratoriumResult; - - -use App\Helpers\Helper; - - use Illuminate\Http\Resources\Json\JsonResource; -use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Carbon; class DataServiceMonitoring extends JsonResource { @@ -32,157 +15,89 @@ class DataServiceMonitoring extends JsonResource */ public function toArray($request) { - $claim_request = ClaimRequest::findOrFail($this->claim_request_id); - $member = Member::findOrFail($this->member_id); - - - // History Care Hospital - $historyCareHospital = ClaimHistoryCare::where('claim_id', $this->id)->first(); - if ($historyCareHospital) { - $hospital = Organization::findOrFail($historyCareHospital->organization_id)->name; - $mainDianosis = Icd::findOrFail($historyCareHospital->main_diagnosis_id)->name; - $mainDianosisCode = Icd::findOrFail($historyCareHospital->main_diagnosis_id)->code; - - $comporatationDiagnosis = DiagnosisSecondaryClaimHistoryCare::where('claim_history_care_id', $historyCareHospital->id)->first(); - - $comporatationDiagnosisName = Icd::findOrFail($comporatationDiagnosis->icd_id)->name; - $comporatationDiagnosisCode = Icd::findOrFail($comporatationDiagnosis->icd_id)->code; - - $admissionDate = $historyCareHospital->admission_date; - $dischargeDate = $historyCareHospital->discharge_date; - $serviceCode = $historyCareHospital->service_code; - $symptoms = $historyCareHospital->symptoms; - $sign = $historyCareHospital->sign; - } else { - $hospital = '-'; - $mainDianosis = '-'; - $mainDianosisCode = '-'; - $comporatationDiagnosisName = '-'; - $comporatationDiagnosisCode = '-'; - $admissionDate = '-'; - $dischargeDate = '-'; - $serviceCode = '-'; - $symptoms = '-'; - $sign = '-'; - } - - - - - - - $dailyMonitoring = DailyMonitoring::where('claim_id', $claim_request->claim_id)->get()->toArray(); - $laboratoriumResult = LaboratoriumResult::where('claim_id', $claim_request->claim_id)->get()->toArray(); - - // Handle Daily Monitoring - $dataDailyMonitoring = []; - if (count($dailyMonitoring) > 0){ - $temp = []; - foreach($dailyMonitoring as $data){ - $temp['date'] = Helper::formatDateOnly($data['created_at']); - $temp['time'] = Helper::formatTimeOnly($data['created_at']); - $temp['status'] = 'Done'; - $temp['subject_title'] = $data['subject']; - $temp['body_temperature'] = $data['body_temperature']. 'mm[Hg]'; - $temp['sistole'] = $data['sistole']. 'mm[Hg]'; - $temp['diastole'] = $data['diastole']. 'mm[Hg]'; - $temp['respiration_rate'] = $data['respiration_rate']. 'mm[Hg]'; - $temp['analisis_title'] = $data['analysis']; - - $medicalPlan = MedicalPlan::where('claim_daily_monitoring_id', $data['id'])->get('plan')->toArray(); - if (count( $medicalPlan) > 0){ - $temp['Perencanaan'] = []; - foreach($medicalPlan as $item){ - array_push($temp['Perencanaan'], $item['plan']); - } - - } else { - $temp['Perencanaan'] = []; - } - array_push($dataDailyMonitoring, $temp); - } - } - - // Handle Laboratorium Result - $dataLaboratoruiumResult = []; - if (count($laboratoriumResult) > 0){ - $tempLab = []; - foreach($laboratoriumResult as $data){ - $tempLab['datetime'] = $data['date']; - $tempLab['reimbursement_code'] = "RE-0" . $data['id']; - $tempLab['examination'] = $data['examination']; - $tempLab['location'] = $data['location']; - - if (count($data['lab_result_file']) > 0){ - $tempLab['file'] = $data['lab_result_file'][0]['lab_result_file_obj']->path; // masih dumy untuk download nya belum bisa multiple - } - array_push($dataLaboratoruiumResult, $tempLab); - } - } - - $data = [ - "id" => $this->id, - "company_name" => $member->currentCorporate->name, - "member_name" => $member->name, - "member_code" => $member->member_id, - "member_id" => $member->id, - "phone" => $member->person->phone, - "email" => $member->email, - "birth_date" => $member->birth_date, - "symptoms" => $symptoms, - "sign" => $sign, - "main_diagnose" => $mainDianosis, - "main_diagnose_code" => $mainDianosisCode, - "comparative_diagnosis" => $comporatationDiagnosisName, - "comparative_diagnosis_code" => $comporatationDiagnosisCode, - "service_name" => $serviceCode, - "benefit_name" => "Konsultasi Dokter", - "hospital" => $hospital, - "admission_date" => $admissionDate, - "discharge_date" => $dischargeDate, - "dialy_monitoring" => $dataDailyMonitoring, - // "laboratorium_result" => [ - // "0" => [ - // [ - // "datetime" => "2023-10-05 10:00", - // "reimbursement_code" => "RE-011", - // "examination" => "SGOT", - // "location" => "Pramita Jakarta Ragunan", - // "files" => "https:://test.com" - // ], - // [ - // "datetime" => "2023-10-05 09:00", - // "reimbursement_code" => "RE-010", - // "examination" => "SGOT", - // "location" => "Pramita Jakarta Ragunan", - // "files" => "https:://test.com" - // ], - // ], - // "1" => [ - // [ - // "datetime" => "2023-10-04 10:00", - // "reimbursement_code" => "RE-09", - // "examination" => "Hematologi Lengkap", - // "location" => "Pramita Jakarta Ragunan", - // "files" => "https:://test.com" - // ], - // [ - // "datetime" => "2023-10-04 09:00", - // "reimbursement_code" => "RE-08", - // "examination" => "Hematologi Lengkap", - // "location" => "Pramita Jakarta Ragunan", - // "files" => "https:://test.com" - // ] - // ] - - // ], - - "laboratorium_result" => [$dataLaboratoruiumResult], // - - + return [ + 'companyName' => $this->member->currentCorporate->name ?? null, + 'serviceCode' => $this->service_code ?? null, + 'memberId' => $this->member->member_id ?? null, + 'fullName' => $this->member->full_name ?? null, + 'dateOfBirth' => $this->member->birth_date ?? null, + 'phoneNumber' => $this->person->phone ?? null, + 'email' => $this->member->email ?? ($this->member->person->email ?? null), + 'serviceName' => $this->service->name ?? ($this->service_code ?? null), + 'benefits' => collect($this->requestLogBenefits)->map(function ($requestLogBenefit) { + return [ + 'amountIncurred' => $requestLogBenefit->amount_incurred, + 'amountApproved' => $requestLogBenefit->amount_approved, + 'amountNotAprroved' => $requestLogBenefit->amount_not_approved, + 'excessPaid' => $requestLogBenefit->excess_paid, + 'description' => $requestLogBenefit->keterangan, + 'name' => $requestLogBenefit->benefit->description, + ]; + })->all() ?? null, + 'benefitTotal' => $this->benefitTotal ?? null, + 'hospital' => $this->organization->name ?? null, + 'admissionDate' => $this->submission_date ?? null, + 'dischargeDate' => $this->discharge_date ?? null, + 'dailyMonitorings' => $this->when($this->service_code === 'IP', collect($this->requestLogDailyMonitorings) + ->groupBy(function ($requestLogDailyMonitoring) { + return $requestLogDailyMonitoring->created_at->format('d M Y'); + }) + ->map(function ($groupedItems) { + return collect($groupedItems) + ->map(function ($requestLogDailyMonitoring) { + return [ + 'time' => $requestLogDailyMonitoring->created_at->format('H:i') ?? null, + 'status' => 'Done' ?? null, + 'subject' => $requestLogDailyMonitoring->subject ?? null, + 'bodyTemperature' => $requestLogDailyMonitoring->body_temperature ?? null, + 'sistole' => $requestLogDailyMonitoring->sistole . 'mm[Hg]' ?? null, + 'diastole' => $requestLogDailyMonitoring->diastole . 'mm[Hg]' ?? null, + 'respirationRate' => $requestLogDailyMonitoring->respiration_rate . '/min' ?? null, + 'analysis' => $requestLogDailyMonitoring->analysis ?? null, + 'complaints' => $requestLogDailyMonitoring->complaints ?? null, + 'plans' => $this->when($requestLogDailyMonitoring->requestLogMedicalPlans, collect($requestLogDailyMonitoring->requestLogMedicalPlans) + ->map(function ($requestLogMedicalPlan) { + return [ + 'type' => $requestLogMedicalPlan->type, + 'plan' => $requestLogMedicalPlan->plan + ]; + }) + ->sortBy('type') + ->all()) ?? null, + ]; + }) + ->sortByDesc(function ($item) { + return $item['time']; + }) + ->values(); + }) + ->sortByDesc(function ($groupedItems, $date) { + return Carbon::createFromFormat('d M Y', $date)->format('Y-m-d'); + }) + ->all()) ?? null, + 'laboratoriumResults' => $this->whenLoaded('requestLogDailyMonitorings', collect($this->requestLogDailyMonitorings) + ->groupBy(function ($requestLogDailyMonitoring) { + return Carbon::parse($requestLogDailyMonitoring->lab_date)->format('d M Y'); + }) + ->map(function ($groupedItems) { + return collect($groupedItems) + ->map(function ($requestLogDailyMonitoring) { + return [ + 'code' => $requestLogDailyMonitoring->code, + 'date' => Carbon::parse($requestLogDailyMonitoring->lab_date)->format('d M Y') ?? null, + 'examination' => $requestLogDailyMonitoring->examination ?? null, + 'location' => $requestLogDailyMonitoring->provider ?? null, + ]; + }) + ->sortByDesc(function ($item) { + return $item['code']; + }) + ->values(); + }) + ->sortByDesc(function ($groupedItems, $date) { + return Carbon::createFromFormat('d M Y', $date)->format('Y-m-d'); + }) + ->all()) ?? null ]; - - - return $data; } } diff --git a/Modules/Client/Transformers/Dashboard/MemberEmployeeDataResources.php b/Modules/Client/Transformers/Dashboard/MemberEmployeeDataResources.php index 23d66c0e..3cceea96 100644 --- a/Modules/Client/Transformers/Dashboard/MemberEmployeeDataResources.php +++ b/Modules/Client/Transformers/Dashboard/MemberEmployeeDataResources.php @@ -1,4 +1,5 @@ $this->person_id, 'memberId' => $this->member_id, 'fullName' => $this->full_name, - 'service' => $this->service_code, + // 'service' => $this->service_code, 'start_date' => $this->start_date, 'end_date' => $this->end_date, 'status' => $this->active, diff --git a/Modules/Client/Transformers/Dashboard/MemberResources.php b/Modules/Client/Transformers/Dashboard/MemberResources.php index d53d88ea..5f058e67 100644 --- a/Modules/Client/Transformers/Dashboard/MemberResources.php +++ b/Modules/Client/Transformers/Dashboard/MemberResources.php @@ -26,7 +26,7 @@ class MemberResources extends JsonResource 'percentage' => (!empty($this->currentPlan->limit_rules ?? 0)) ? (($this->claims_sum_total_claim / $this->currentPlan->limit_rules) * 100) : 0 ], 'status' => $this->active, - 'service_type' => $this->currentPlans, + // 'service_type' => $this->currentPlans, ]; } } diff --git a/Modules/Client/Transformers/EmployeeData/UserProfile/DataMemberResource.php b/Modules/Client/Transformers/EmployeeData/UserProfile/DataMemberResource.php new file mode 100644 index 00000000..40ac6fba --- /dev/null +++ b/Modules/Client/Transformers/EmployeeData/UserProfile/DataMemberResource.php @@ -0,0 +1,46 @@ + [ + 'name' => $this->full_name ?? null, + 'weight' => $this->person->last_weight_kg ?? null, + 'height' => $this->person->last_height_kg ?? null, + 'placeOfBirth' => ucwords($this->person->birth_place) ?? null, + 'dateOfBirth' => $this->birth_date ?? $this->person->birth_date, + 'gender' => ucwords(strtolower($this->gender ?? $this->person->gender)), + 'phoneNumber' => $this->person->phone ?? null, + 'email' => $this->email ?? ($this->person->email ?? null), + 'address' => $this->person->last_height_kg ?? null, + 'idNumber' => $this->person->nik ?? null, + 'religion' => ucwords(strtolower($this->person->religion)) ?? null, + 'maritalStatus' => $this->marital_status, + 'education' => ucwords(strtolower($this->person->last_education)) ?? null, + 'occupation' => null, + ], + 'families' => collect($this->families)->map(function ($family) { + return [ + 'name' => $family->full_name ?? null, + 'relationship' => $family->relationship ?? null, + 'dateOfBirth' => $family->birth_date ?? $family->person->birth_date, + 'email' => $this->email ?? ($this->person->email ?? null), + 'phoneNumber' => $this->person->phone ?? null, + 'status' => $this->status ?? null + ]; + })->all() + ]; + } +} diff --git a/Modules/HospitalPortal/Http/Controllers/Api/RequestLogController.php b/Modules/HospitalPortal/Http/Controllers/Api/RequestLogController.php index 6c7e6155..2b3ac399 100644 --- a/Modules/HospitalPortal/Http/Controllers/Api/RequestLogController.php +++ b/Modules/HospitalPortal/Http/Controllers/Api/RequestLogController.php @@ -71,33 +71,33 @@ class RequestLogController extends Controller // Membuat kode organisasi $kodeOrganisasi = "ORG000" . $singkatan; - + // Insert data ke tabel organizations $organization_id = DB::table('organizations') ->insertGetId([ 'name' => $request->organization_name, - 'code' => $kodeOrganisasi, - 'type' => 'hospital', + 'code' => $kodeOrganisasi, + 'type' => 'hospital', 'created_at' => now(), 'created_by' => auth()->user()->id ]); - + // Insert data ke tabel addresses $address_id = DB::table('addresses') ->insertGetId([ - 'text'=> $request->address_provider, - 'addressable_type' => 'App\Models\Organization', + 'text'=> $request->address_provider, + 'addressable_type' => 'App\Models\Organization', 'addressable_id' => $organization_id, - 'type' => 'hospital', + 'type' => 'hospital', 'created_at' => now(), 'created_by' => auth()->user()->id ]); - + // Update main_address_id di tabel organizations DB::table('organizations') ->where('organizations.id', '=', $organization_id) ->update(['main_address_id' => $address_id]); - + // Commit transaksi DB::commit(); $request->merge(['organization_id' => $organization_id]); @@ -144,7 +144,7 @@ class RequestLogController extends Controller } catch (\Exception $e) { // Rollback transaksi jika terjadi kesalahan DB::rollBack(); - + // Handle error, bisa di-log atau dikembalikan sebagai response return ApiResponse::apiResponse('Server Error', $data, $e->getMessage(), 500); } @@ -178,11 +178,11 @@ class RequestLogController extends Controller }) ->when($request->input('status'), function ($query, $status) { $query->where(function ($query) use ($status) { - + if ($status === 'requested') { $query->where('request_logs.status', '=', 'requested'); } - + if ($status === 'reviewed') { $query->where('request_logs.status', '=', 'approved'); } @@ -194,29 +194,29 @@ class RequestLogController extends Controller if ($status === 'declined') { $query->where('request_logs.status', '=', 'declined'); } - + }); }) ->select( 'request_logs.id', 'request_logs.member_id', 'request_logs.final_log', - 'request_logs.code', - 'members.name as full_name', + 'request_logs.code', + 'members.name as full_name', 'members.member_id as no_polis', 'members.birth_date', DB::raw(' - CASE + CASE WHEN request_logs.status = "requested" THEN "requested" WHEN request_logs.status = "approved" THEN "approved" WHEN request_logs.status = "declined" THEN "declined" WHEN request_logs.status = "reviewed" THEN "reviewed" - ELSE "" + ELSE "" END AS status '), DB::raw(' (SELECT organizations.name FROM organizations WHERE organizations.id = request_logs.organization_id LIMIT 1) AS provider - '), + '), 'request_logs.submission_date') ->paginate($limit); return response()->json(Helper::paginateResources($results)); @@ -250,11 +250,11 @@ class RequestLogController extends Controller }) ->when($request->input('status'), function ($query, $status) { $query->where(function ($query) use ($status) { - + if ($status === 'requested') { $query->where('request_logs.status_final_log', '=', 'requested'); } - + if ($status === 'reviewed') { $query->where('request_logs.status_final_log', '=', 'approved'); } @@ -266,39 +266,39 @@ class RequestLogController extends Controller if ($status === 'declined') { $query->where('request_logs.status_final_log', '=', 'declined'); } - + }); }) ->where('request_logs.final_log', '=', 1) ->select( 'request_logs.id', 'request_logs.final_log', - 'request_logs.code', - 'members.name as full_name', + 'request_logs.code', + 'members.name as full_name', 'members.member_id as no_polis', 'members.id AS member_id', 'request_logs.service_code', 'members.birth_date', DB::raw(' - CASE + CASE WHEN request_logs.status_final_log = "requested" THEN "requested" WHEN request_logs.status_final_log = "approved" THEN "approved" WHEN request_logs.status_final_log = "declined" THEN "declined" WHEN request_logs.status_final_log = "reviewed" THEN "reviewed" - ELSE "" + ELSE "" END AS status - '), + '), 'request_logs.submission_date', DB::raw(' - CASE + CASE WHEN service_code = "OP" THEN "Outpatient" WHEN service_code = "IP" THEN "Inpatient" - ELSE "" + ELSE "" END AS service_type '), DB::raw(' (SELECT organizations.name FROM organizations WHERE organizations.id = request_logs.organization_id LIMIT 1) AS provider - '), + '), DB::raw(' (Select request_log_id FROM claim_requests WHERE claim_requests.request_log_id = request_logs.id LIMIT 1) AS check_claim ') @@ -428,7 +428,7 @@ class RequestLogController extends Controller 'members.nric', 'members.id', 'members.principal_id', - 'members.name', + 'members.name', 'members.birth_date', 'members.member_id', 'members.gender', @@ -439,20 +439,20 @@ class RequestLogController extends Controller "LinkSehat" AS penjamin '), DB::raw(' - (Select corporates.name FROM corporates + (Select corporates.name FROM corporates LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id WHERE corporate_employees.member_id = members.id LIMIT 1) AS nama_perusahaan '), DB::raw(' - (Select corporates.id FROM corporates + (Select corporates.id FROM corporates LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id WHERE corporate_employees.member_id = members.id LIMIT 1) AS id_perusahaan '), DB::raw(' - (Select corporates.code FROM corporates + (Select corporates.code FROM corporates LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id WHERE corporate_employees.member_id = members.id LIMIT 1) AS code_perusahaan - '), + '), DB::raw(' (Select services.name FROM services WHERE services.code = "'.$dataRequestLog->service_code.'" LIMIT 1) AS jenis_perwatan @@ -464,12 +464,12 @@ class RequestLogController extends Controller (Select member_policies.status FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS status_polis '), DB::raw(' - (Select plans.code FROM member_plans + (Select plans.code FROM member_plans LEFT JOIN plans ON plans.id = member_plans.plan_id WHERE member_plans.member_id = members.id AND plans.service_code = "'.$dataRequestLog->service_code.'" LIMIT 1) AS code_plan '), DB::raw(' - (Select plans.limit_rules FROM member_plans + (Select plans.limit_rules FROM member_plans LEFT JOIN plans ON plans.id = member_plans.plan_id WHERE member_plans.member_id = members.id LIMIT 1) AS limit_rules '), @@ -478,20 +478,20 @@ class RequestLogController extends Controller '), 'members.members_effective_date AS mulai', 'members.members_expire_date AS akhir' - ) + ) ->first(); - $data['namaKaryawan'] = ''; + $data['namaKaryawan'] = ''; if($dataMember->principal_id) { $dataNamaKaryawan = DB::table('members') ->where('members.member_id', '=', $dataMember->principal_id) ->select('members.name') ->first(); - $data['namaKaryawan'] = $dataNamaKaryawan->name; + $data['namaKaryawan'] = $dataNamaKaryawan->name; } else{ $data['namaKaryawan'] = $dataMember->name; - } + } $data['dataMember'] = $dataMember; @@ -536,7 +536,7 @@ class RequestLogController extends Controller ->select( 'files.path', DB::raw(' - (Select persons.name FROM users + (Select persons.name FROM users LEFT JOIN persons ON users.person_id = persons.id WHERE users.id = "'.$dataRequestLog->approved_by.'" LIMIT 1) AS name_approve ') @@ -557,7 +557,7 @@ class RequestLogController extends Controller // Halaman 1 $html1 = view('pdf.req_log_page_1', $data); - + // Halaman 2 // $html2 = view('pdf.req_log_page_2', $data); @@ -567,10 +567,10 @@ class RequestLogController extends Controller $pdf->loadHtml($htmlCombined); $pdf->render(); - + $headers = [ 'Content-Type' => 'application/pdf', - 'Content-Disposition' => 'inline; filename="file.pdf"', + 'Content-Disposition' => 'inline; filename="file.pdf"', ]; return response($pdf->output(), 200, $headers); @@ -588,7 +588,7 @@ class RequestLogController extends Controller 'members.nric', 'members.id', 'members.principal_id', - 'members.name', + 'members.name', 'members.birth_date', 'members.member_id', 'members.gender', @@ -599,17 +599,17 @@ class RequestLogController extends Controller "LinkSehat" AS penjamin '), DB::raw(' - (Select corporates.name FROM corporates + (Select corporates.name FROM corporates LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id WHERE corporate_employees.member_id = members.id LIMIT 1) AS nama_perusahaan '), DB::raw(' - (Select corporates.id FROM corporates + (Select corporates.id FROM corporates LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id WHERE corporate_employees.member_id = members.id LIMIT 1) AS id_perusahaan '), DB::raw(' - (Select corporates.code FROM corporates + (Select corporates.code FROM corporates LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id WHERE corporate_employees.member_id = members.id LIMIT 1) AS code_perusahaan '), @@ -624,12 +624,12 @@ class RequestLogController extends Controller (Select member_policies.status FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS status_polis '), DB::raw(' - (Select plans.code FROM member_plans + (Select plans.code FROM member_plans LEFT JOIN plans ON plans.id = member_plans.plan_id WHERE member_plans.member_id = members.id AND plans.service_code = "'.$dataRequestLog->service_code.'" LIMIT 1) AS code_plan '), DB::raw(' - (Select plans.limit_rules FROM member_plans + (Select plans.limit_rules FROM member_plans LEFT JOIN plans ON plans.id = member_plans.plan_id WHERE member_plans.member_id = members.id LIMIT 1) AS limit_rules '), @@ -638,9 +638,9 @@ class RequestLogController extends Controller '), 'members.members_effective_date AS mulai', 'members.members_expire_date AS akhir' - ) + ) ->first(); - $data['namaKaryawan'] = ''; + $data['namaKaryawan'] = ''; if($dataMember->principal_id) { $dataNamaKaryawan = DB::table('members') @@ -648,11 +648,11 @@ class RequestLogController extends Controller ->select('members.name') ->limit(1) ->first(); - $data['namaKaryawan'] = $dataNamaKaryawan->name; + $data['namaKaryawan'] = $dataNamaKaryawan->name; } else{ $data['namaKaryawan'] = $dataMember->name; - } + } $data['dataMember'] = $dataMember; @@ -675,7 +675,7 @@ class RequestLogController extends Controller $data['dataClaimLog'] = $dataClaimLog; - + $dataRumahSakit = DB::table('organizations') ->leftJoin('addresses', 'addresses.addressable_id', '=', 'organizations.id') ->where('organizations.id', '=', $dataRequestLog->organization_id) @@ -715,7 +715,7 @@ class RequestLogController extends Controller ->select( 'files.path', DB::raw(' - (Select persons.name FROM users + (Select persons.name FROM users LEFT JOIN persons ON users.person_id = persons.id WHERE users.id = "'.$dataRequestLog->approved_by.'" LIMIT 1) AS name_approve ') @@ -734,7 +734,7 @@ class RequestLogController extends Controller // Halaman 1 $html1 = view('pdf.final_log_page_1', $data); - + // Halaman 2 $html2 = view('pdf.final_log_page_2', $data); @@ -743,10 +743,10 @@ class RequestLogController extends Controller $pdf->loadHtml($htmlCombined); $pdf->render(); - + $headers = [ 'Content-Type' => 'application/pdf', - 'Content-Disposition' => 'inline; filename="file.pdf"', + 'Content-Disposition' => 'inline; filename="file.pdf"', ]; return response($pdf->output(), 200, $headers); diff --git a/Modules/Internal/Http/Controllers/Api/AuthController.php b/Modules/Internal/Http/Controllers/Api/AuthController.php index 505f8731..6c32f45d 100644 --- a/Modules/Internal/Http/Controllers/Api/AuthController.php +++ b/Modules/Internal/Http/Controllers/Api/AuthController.php @@ -6,7 +6,6 @@ use App\Http\Controllers\Controller; use App\Models\User; use App\Models\Person; use Crypt; -use Error; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; diff --git a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php index 817a27ef..8acfb802 100644 --- a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php @@ -456,12 +456,12 @@ class CorporateMemberController extends Controller public function viewECard(Request $request, $member_id){ $member = Member::with([ - 'currentPlan', - 'currentPolicy', - 'currentCorporate', - 'currentCorporate.files', + 'currentPlan', + 'currentPolicy', + 'currentCorporate', + 'currentCorporate.files', // 'currentPlan.corporateBenefits.benefit' - ])->find($member_id); + ])->find($member_id); if ($member->currentCorporate->id == 5){ // Vale $pdf = PDF::loadView('pdf.ecard', compact('member'))->setPaper('A5', 'portrait'); diff --git a/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php b/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php index dbb941ee..ef4f23ab 100644 --- a/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php +++ b/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php @@ -42,7 +42,7 @@ class DailyMonitoringController extends Controller ->leftJoin('members', 'request_logs.member_id', '=', 'members.id') ->leftJoin('member_plans', 'request_logs.member_id', '=', 'member_plans.member_id') ->leftJoin('organizations', 'organizations.id', '=', 'request_logs.organization_id') - ->select('members.member_id','members.name','member_plans.start AS startdate','member_plans.end AS enddate', 'request_logs.submission_date as addmision_date', 'organizations.name as provider' ) + ->select('members.member_id','members.name','members.members_effective_date AS startdate','members.members_expire_date AS enddate', 'request_logs.submission_date as addmision_date', 'organizations.name as provider' ) ->where('request_logs.service_code', 'IP') ->where('request_logs.status_final_log', 'approved') ->groupBy('request_logs.member_id') @@ -118,7 +118,7 @@ class DailyMonitoringController extends Controller public function AddDetailMonitoringList(Request $request, $claim_code) { $request->merge(['claim_code' => $claim_code]); - + // validation rule $validator = Validator::make($request->all(),[ 'claim_code' => 'required|exists:claim_requests,code', @@ -145,7 +145,7 @@ class DailyMonitoringController extends Controller ->select('id') ->where('code', $claim_code) ->first(); - + // get claim $claim = DB::table('claims') ->select('id') @@ -219,7 +219,7 @@ class DailyMonitoringController extends Controller public function AddDetailMonitoringListRequestLog(Request $request, $request_code) { $request->merge(['request_code' => $request_code]); - + // validation rule $validator = Validator::make($request->all(),[ 'request_code' => 'required|exists:request_logs,code', @@ -319,7 +319,7 @@ class DailyMonitoringController extends Controller 'extension' => $extension, 'path' => $path, ]); - + } } if ($request->medical_action_letter){ @@ -337,7 +337,7 @@ class DailyMonitoringController extends Controller 'extension' => $extension, 'path' => $path, ]); - + // $file->storeAs($this->path_for_store, $fileName); } } @@ -356,7 +356,7 @@ class DailyMonitoringController extends Controller 'extension' => $extension, 'path' => $path, ]); - + // $file->storeAs($this->path_for_store, $fileName); } } @@ -389,10 +389,10 @@ class DailyMonitoringController extends Controller $request_log = DB::table('request_logs') ->where('code', $request_code) ->update([ - 'discharge_date' => now(), + 'discharge_date' => now(), 'updated_by' => auth()->user()->id, 'updated_at' => now() - ]); + ]); if ($request_log) { return response()->json([ 'error' => false, diff --git a/Modules/Internal/Http/Controllers/Api/Linksehat/PaymentController.php b/Modules/Internal/Http/Controllers/Api/Linksehat/PaymentController.php index 3769b58a..28cb05a0 100644 --- a/Modules/Internal/Http/Controllers/Api/Linksehat/PaymentController.php +++ b/Modules/Internal/Http/Controllers/Api/Linksehat/PaymentController.php @@ -37,21 +37,26 @@ class PaymentController extends Controller && !empty($request->appointment_start) && !empty($request->appointment_end) ) { - $appointments = $appointments->whereHas('detail', function (Builder $detail) use ($request) { + // $appointments = $appointments->whereHas('detail', function (Builder $detail) use ($request) { - // Appointment Start - // if ($request->has('appointment_start')) { - $detail->where('dCreateOn', '>=', $request->appointment_start); - // } else { - // $detail->where('dTanggalAppointment', '>', now()->format('Y-m-d')); - // } + // // Appointment Start + // // if ($request->has('appointment_start')) { + // $detail->where('dTanggalAppointment', '>=', $request->appointment_start); + // // } else { + // // $detail->where('dTanggalAppointment', '>', now()->format('Y-m-d')); + // // } - // if ($request->has('appointment_end')) { - $detail->where('dCreateOn', '<=', $request->appointment_end); - // } else { - // $detail->where('dTanggalAppointment', '<', now()->addDay(1)->format('Y-m-d')); - // } + // // if ($request->has('appointment_end')) { + // $detail->where('dTanggalAppointment', '<=', $request->appointment_end); + // // } else { + // // $detail->where('dTanggalAppointment', '<', now()->addDay(1)->format('Y-m-d')); + // // } + // }); + + $appointments = $appointments->where(function($q) use ($request) { + $q->where('dCreateOn', '>=', $request->appointment_start) + ->where('dCreateOn', '<=', $request->appointment_end); }); } diff --git a/Modules/Internal/Http/Controllers/Api/RequestLogController.php b/Modules/Internal/Http/Controllers/Api/RequestLogController.php index a560ceaf..fa9d2a89 100644 --- a/Modules/Internal/Http/Controllers/Api/RequestLogController.php +++ b/Modules/Internal/Http/Controllers/Api/RequestLogController.php @@ -109,8 +109,8 @@ class RequestLogController extends Controller $memberValid = false; if ($member){ - if (($member->members_effective_date <= date('Y-m-d')) && - ($member->members_expire_date >= date('Y-m-d')) && + if (($member->members_effective_date <= date('Y-m-d')) && + ($member->members_expire_date >= date('Y-m-d')) && ($member->active == 1) && ($member->suspended == 'N') ){ @@ -128,12 +128,12 @@ class RequestLogController extends Controller organization_id: $request->organization_id, source: $request->source ); - + DB::commit(); } catch (\Throwable $th) { DB::rollBack(); - + return Helper::responseJson(status: 'failed', statusCode: 500, message: $th->getMessage()); } } else { @@ -150,18 +150,18 @@ class RequestLogController extends Controller organization_id: $request->organization_id, source: $request->source ); - + DB::commit(); } catch (\Throwable $th) { DB::rollBack(); - + return Helper::responseJson(status: 'failed', statusCode: 500, message: $th->getMessage()); } // return Helper::responseJson(status: 'failed', statusCode: 500, message: 'Member Not Valid'); } } - + } return Helper::responseJson(status: 'success', statusCode: 200, message: 'Request LOG berhasil ajukan!', data: $request->toArray()); @@ -187,7 +187,7 @@ class RequestLogController extends Controller // 'member.current_policy', 'claim', 'organization', - + ]); return Helper::responseJson(data: RequestLogShowResource::make($claimRequest)); @@ -221,7 +221,12 @@ class RequestLogController extends Controller $requestLog->approved_by = auth()->user()->id; $requestLog->approved_at = Carbon::now(); $requestLog->save(); - + + // update nirc member + $member = Member::findOrFail($requestLog->member_id); + $member->nric = $request->no_identitas; + $member->save(); + return response()->json([ 'error' => false, 'message' => 'Update succses', @@ -252,7 +257,7 @@ class RequestLogController extends Controller 'error' => true, 'message' => 'LOG Belum Terverifikasi', 'data' => $requestLog], - 200); + 200); } $member = Member::findOrFail($requestLog->member_id) @@ -260,15 +265,15 @@ class RequestLogController extends Controller // 'currentPlan', 'currentPlan' => function ($plan) use ($id, $service_code) { $plan->where('plans.service_code', $service_code); - }, - 'currentPolicy', - 'currentPlan.corporateBenefits', + }, + 'currentPolicy', + 'currentPlan.corporateBenefits', 'currentPlan.corporateBenefits.benefit' ]); $pdf = PDF::loadView('pdf.guaranted_leter', compact('member', 'requestLog')); return $pdf->download('Guaranted Letter - '.$member->full_name.'.pdf'); - + return $requestLog; } @@ -282,7 +287,7 @@ class RequestLogController extends Controller $writer = WriterEntityFactory::createXLSXWriter(); // Membuka penulis untuk menulis ke file $writer->openToFile(public_path('files/Data Request LOG.xlsx')); - + // Sheet 1 $writer->getCurrentSheet()->setName('Data'); $headers_map_to_table_fields = RequestLog::$listing_data_doc_headers; @@ -300,7 +305,7 @@ class RequestLogController extends Controller // dd($dataRequestLog); foreach ($dataRequestLog as $index => $row){ $serviceType = $this->getServiceName($row['service_code']); - + $rowData = [ $row['id'], // id $row['code'], // code @@ -455,7 +460,7 @@ class RequestLogController extends Controller $file_name = now()->getPreciseTimestamp(3) . '-' . $request->file('file')->getClientOriginalName(); $file = $request->file('file')->storeAs('temp', $file_name); - + $reader = ReaderEntityFactory::createXLSXReader(Storage::path('temp/' . $file_name)); $reader->open(Storage::path('temp/' . $file_name)); @@ -683,7 +688,7 @@ class RequestLogController extends Controller ->offset($offset) ->limit($limit) ->get(); - + $data = []; if(count($memberList)>0){ $temp = []; diff --git a/Modules/Internal/Transformers/RequestLogShowResource.php b/Modules/Internal/Transformers/RequestLogShowResource.php index 5a5f7c57..0d87a921 100644 --- a/Modules/Internal/Transformers/RequestLogShowResource.php +++ b/Modules/Internal/Transformers/RequestLogShowResource.php @@ -2,18 +2,17 @@ namespace Modules\Internal\Transformers; -use App\Models\Benefit; +use App\Models\Plan; use App\Models\CorporateBenefit; -use App\Models\ClaimRequest; +use App\Models\MemberPlan; use App\Models\CorporateService; use App\Models\RequestLogBenefit; use App\Models\RequestLogMedicine; use App\Models\Organization; -use App\Models\MemberPlan; -use App\Models\Plan; use App\Models\Exclusion; use App\Models\Icd; use App\Helpers\Helper; +use App\Models\CorporatePolicy; use Illuminate\Http\Resources\Json\JsonResource; class RequestLogShowResource extends JsonResource @@ -26,11 +25,12 @@ class RequestLogShowResource extends JsonResource */ public function toArray($request) { - + $requestLog = parent::toArray($request); $corporateId = $requestLog['member']['current_plan']['corporate_id'] ?? 0; $member_id = $requestLog['member_id']; $planMember = MemberPlan::where('member_id', $member_id)->get('plan_id'); + $planId = Plan::whereIn('id', $planMember)->where('service_code', $requestLog['service_code'])->first(); $benefit = CorporateBenefit::with('benefit')->where('plan_id', $planId->id)->get()->toArray(); $benefitDetailLog = RequestLogBenefit::with('benefit')->where('request_log_id', $requestLog['id'])->get()->toArray(); @@ -58,6 +58,7 @@ class RequestLogShowResource extends JsonResource array_push($medicineData, $data); } } + // Service Rule $corporateService = CorporateService::query() ->where('corporate_id', $corporateId) @@ -67,7 +68,7 @@ class RequestLogShowResource extends JsonResource $config = []; if ($corporateService) { $config = $corporateService->configs->pluck('value', 'name')->toArray(); - } + } // Exclusion Service or diagnosis $exclusions = Exclusion::query() @@ -76,15 +77,21 @@ class RequestLogShowResource extends JsonResource ->with(['exclusionable', 'rules']) ->get()->toArray(); + // Policy Number + $policyNumber = CorporatePolicy::query() + ->where('corporate_id', $corporateId) + ->first(); + + $data = [ 'id' => $requestLog['id'], 'code' => $requestLog['code'], 'member_id' => $requestLog['member']['member_id'], - 'policy_number' => $requestLog['member']['current_policy']['code'], + 'policy_number' =>$policyNumber->code ? $policyNumber->code : '-', 'name' => $requestLog['member']['name'], 'date_of_birth' => $requestLog['member']['birth_date'], 'gender' => $requestLog['member']['gender'], - 'marital_status' => Helper::maritalNormalization($requestLog['member']['marital_status']), + 'marital_status' => $requestLog['member']['status_marital'], 'member_type' => Helper::memberType($requestLog['member']['record_type']), 'principal_id' => $requestLog['member']['principal_id'] ? $requestLog['member']['principal_id'] : '-', 'principal_name' => $requestLog['member']['principal_id'] ? Helper::principalName($requestLog['member']['principal_id']) : '-', @@ -101,13 +108,12 @@ class RequestLogShowResource extends JsonResource 'medicine' => $medicineData, 'files' => $requestLog['files'], 'provider' => $providerName, - 'no_identitas' => $requestLog['member']['nric'], 'keterangan' => $requestLog['keterangan'], 'hak_kamar_pasien' => $requestLog['hak_kamar_pasien'], 'penempatan_kamar' => $requestLog['penempatan_kamar'], 'catatan' => $requestLog['catatan'], - + ]; diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 01871237..e41efe7a 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -13,18 +13,19 @@ use App\Models\Service; class Helper { - public static function genderNormalization($anyGenderCode) + public static function genderNormalization($anyGenderCode = '-') { + if ($anyGenderCode == 'M') { - return 'Male'; + return 'male'; } else if ($anyGenderCode == 'F') { - return 'Female'; + return 'female'; } else if ($anyGenderCode == 'O') { - return 'Others'; + return 'others'; } else if ($anyGenderCode == 'U') { - return 'Unknown'; + return 'unknown'; } else { - return null; + return '-'; } } @@ -52,11 +53,12 @@ class Helper } else if ($anyGenderCode == 'U') { return 'unknown'; } else { - return null; + return '-'; } } - public static function memberType($code){ + public static function memberType($code) + { if ($code == 'P') { return 'Principal'; } else if ($code == 'D') { @@ -66,30 +68,29 @@ class Helper } } - public static function relationWithPrincipal($code){ + public static function relationWithPrincipal($code) + { if ($code == 'H') { return 'Husbund'; - } - else if ($code == 'W') { + } else if ($code == 'W') { return 'Wife'; - } - else if ($code == 'S') { + } else if ($code == 'S') { return 'Son'; - } - else if ($code == 'D') { + } else if ($code == 'D') { return 'Daughter'; - } - else { + } else { '-'; } } - public static function principalName($code){ + public static function principalName($code) + { $principalName = Member::where('member_id', $code)->get()->first(); return $principalName->name; } - public static function serviceName($code){ + public static function serviceName($code) + { $serviceName = Service::where('code', $code)->get()->first(); return $serviceName->name; } @@ -240,10 +241,11 @@ class Helper ], $statusCode); } - public static function validatePhoneNumber($phoneNumber) { + public static function validatePhoneNumber($phoneNumber) + { // Menghapus semua karakter selain angka dan + $cleanedNumber = preg_replace('/[^0-9+]/', '', $phoneNumber); - + // Memeriksa apakah nomor telepon hanya terdiri dari angka dan + if ($cleanedNumber == $phoneNumber) { // Nomor telepon valid @@ -254,11 +256,13 @@ class Helper } } - public static function formatRupiah($angka) { + public static function formatRupiah($angka) + { return "Rp " . number_format($angka, 0, ',', '.'); } - public static function sPaymentMethod($id) { + public static function sPaymentMethod($id) + { $sPaymentMethod = [ 1 => 'Pribadi', 2 => 'On-Site Payment', @@ -267,17 +271,19 @@ class Helper 5 => 'Voucher', 6 => 'ASO' ]; - + return $sPaymentMethod[$id]; } - public static function formatDateDB($date){ + public static function formatDateDB($date) + { $convertedDate = Carbon::createFromFormat('d-m-Y', $date)->format('Y-m-d H:i:s'); return $convertedDate; } - public static function formatDateOnly($date){ + public static function formatDateOnly($date) + { // Membuat objek Carbon dengan tanggal asli dan zona waktu UTC $carbonDate = Carbon::createFromFormat('Y-m-d\TH:i:s.u\Z', $date, 'UTC'); @@ -288,7 +294,8 @@ class Helper return $convertedDate; } - public static function formatTimeOnly($date){ + public static function formatTimeOnly($date) + { // Membuat objek Carbon dengan tanggal asli dan zona waktu UTC $carbonDate = Carbon::createFromFormat('Y-m-d\TH:i:s.u\Z', $date, 'UTC'); @@ -306,8 +313,7 @@ class Helper DB::table('notifications')->insert($data); DB::commit(); return true; - } - catch (\Exception $e) { + } catch (\Exception $e) { DB::rollback(); return $e->getMessage(); } @@ -319,28 +325,27 @@ class Helper $mail = new PHPMailer(true); try { // Server settings - $mail->isSMTP(); - $mail->Host = 'smtp.gmail.com'; - $mail->SMTPAuth = true; - $mail->Username = env('EMAIL'); - $mail->Password = env('PW_EMAIL'); - $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; - $mail->Port = 465; - $mail->SMTPSecure = "ssl"; + $mail->isSMTP(); + $mail->Host = 'smtp.gmail.com'; + $mail->SMTPAuth = true; + $mail->Username = env('EMAIL'); + $mail->Password = env('PW_EMAIL'); + $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; + $mail->Port = 465; + $mail->SMTPSecure = "ssl"; // Penerima email $mail->setFrom(env('EMAIL'), env('NAME_EMAIL')); $mail->addAddress($data['email'], $data['name']); // Konten email - $mail->isHTML(true); + $mail->isHTML(true); $mail->Subject = $data['subject']; $mail->Body = $data['body']; // Kirim email $mail->send(); return true; - } catch (\Exception $e) { dd($e); return ($mail->ErrorInfo); @@ -354,21 +359,21 @@ class Helper $mail = new PHPMailer(true); try { // Server settings - $mail->isSMTP(); - $mail->Host = 'smtp.gmail.com'; - $mail->SMTPAuth = true; - $mail->Username = env('EMAIL'); - $mail->Password = env('PW_EMAIL'); - $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; - $mail->Port = 465; - $mail->SMTPSecure = "ssl"; + $mail->isSMTP(); + $mail->Host = 'smtp.gmail.com'; + $mail->SMTPAuth = true; + $mail->Username = env('EMAIL'); + $mail->Password = env('PW_EMAIL'); + $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; + $mail->Port = 465; + $mail->SMTPSecure = "ssl"; // Penerima email $mail->setFrom(env('EMAIL'), env('NAME_EMAIL')); $mail->addAddress($data['email'], $data['name']); // Konten email - $mail->isHTML(true); + $mail->isHTML(true); $mail->Subject = $data['subject']; $mail->Body = $data['body']; $mail->addAttachment($data['attach'], 'e-card.pdf'); @@ -376,7 +381,6 @@ class Helper // Kirim email $mail->send(); return true; - } catch (\Exception $e) { dd($mail->ErrorInfo); return ($mail->ErrorInfo); @@ -389,7 +393,8 @@ class Helper ini_set('max_execution_time', '-1'); // Waktu untuk execution suatu function atau script ini_set('post_max_size', '32M'); // Batas post Yang di Upload ini_set('upload_max_filesize', '10M'); // Batas File yang di Upload - ini_set('max_input_time ', '-1'); // Batas max time menunggu input max 5 menit + ini_set('max_input_time ', '-1'); // Batas max time menunggu input max 5 menit + ini_set('memory_limit', '256M'); } } diff --git a/app/Models/Member.php b/app/Models/Member.php index 12202777..9062f38c 100644 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -59,14 +59,14 @@ class Member extends Model "endorsement_date", "members_effective_date", "members_expire_date", - "employee_status", "activation_date", "terminated_date", "remarks", "policy_in_force", "start_no_claim", "end_no_claim", - "suspended" + "suspended", + "active", ]; protected $appends = [ @@ -98,7 +98,7 @@ class Member extends Model } /* -------------------------------------------------------------------------- */ - /* relationship */ + /* Relationship */ /* -------------------------------------------------------------------------- */ public function claims() { @@ -158,36 +158,18 @@ class Member extends Model public function currentPlans() { return $this->hasManyThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id'); - // ->latest(); // TODO Fix This } public function currentPlan() { - return $this->hasOneThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id', ) - ->latest(); - // ->where('plans.service_code', $this->claimRequest->service_code); // TODO Fix This + return $this->hasOneThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id',) + ->latest(); } - // public function currentPlan() - // { - // return $this->hasOneThrough( - // Plan::class, - // MemberPlan::class, - // 'member_id', - // 'id', - // 'id', - // 'plan_id' - // ) - // ->join('claim_requests', 'claim_requests.service_code', '=', 'plans.service_code') - // ->latest('claim_requests.created_at') // Atau sesuaikan dengan kolom timestamp yang sesuai - // ->select('plans.*'); - // } - - public function currentEmployeds() { return $this->hasOneThrough(CorporateEmployee::class, Person::class, 'nik', 'id', 'id', 'nik') - ->latest(); // TODO Fix This + ->latest(); } public function policies() @@ -200,7 +182,6 @@ class Member extends Model return $this->hasOneThrough(CorporatePolicy::class, MemberPolicy::class, 'member_id', 'code', 'member_id', 'policy_id') ->where('status', 'active') ->orderBy('end', 'DESC'); - // return $this->hasOne(MemberPolicy::class, 'member_id', 'member_id')->where('status', 'active')->latestOfMany(); } public function currentActivePolicy() @@ -216,6 +197,11 @@ class Member extends Model { return $this->hasOneThrough(CorporateDivision::class, CorporateEmployee::class, 'member_id', 'id', 'id', 'division_id'); } + + public function requestLogs() + { + return $this->hasMany(RequestLog::class); + } /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ @@ -232,18 +218,30 @@ class Member extends Model { $arr = []; - if (!empty($this->person->name_prefix)) { - $arr[] = $this->person->name_prefix; - } + if ($this->relationLoaded('person')) { + if (!empty($this->person->name_prefix)) { + $arr[] = $this->person->name_prefix; + } - $arr[] = $this->person->name; + $arr[] = $this->person->name; - if (!empty($this->person->name_suffix)) { - $arr[] = $this->person->name_suffix; + if (!empty($this->person->name_suffix)) { + $arr[] = $this->person->name_suffix; + } + } else { + if (!empty($this->name_prefix)) { + $arr[] = $this->name_prefix; + } + + $arr[] = $this->name; + + if (!empty($this->name_suffix)) { + $arr[] = $this->name_suffix; + } } return Attribute::make( - get: fn () => !$this->person ? null : implode(' ', $arr) + get: fn () => $arr ? ucwords(strtolower(implode(' ', $arr))) : null ); } @@ -254,10 +252,22 @@ class Member extends Model ); } - protected function name(): Attribute + protected function relationship(): Attribute { + $relation = null; + + if ($this->relation_with_principal === 'S') { + $relation = 'Son'; + } elseif ($this->relation_with_principal === 'H') { + $relation = 'Husband'; + } elseif ($this->relation_with_principal === 'D') { + $relation = 'Daughter'; + } elseif ($this->relation_with_principal === 'Wife') { + $relation = 'Wife'; + } + return Attribute::make( - get: fn () => $this->person->name ?? ($this->name ?? null) + get: fn () => $relation ); } @@ -265,32 +275,32 @@ class Member extends Model protected function relations(): Attribute { $relation = '-'; - if ($this->relation_with_principal == 'H'){ + if ($this->relation_with_principal == 'H') { $relation = 'Husbund'; - } else if ($this->relation_with_principal == 'W'){ + } else if ($this->relation_with_principal == 'W') { $relation = 'Wife'; - } else if ($this->relation_with_principal == 'S'){ + } else if ($this->relation_with_principal == 'S') { $relation = 'Son'; - } else if ($this->relation_with_principal == 'D'){ + } else if ($this->relation_with_principal == 'D') { $relation = 'Daughter'; - } + } return Attribute::make( - get: fn () => $relation + get: fn () => $relation ); } protected function statusMarital(): Attribute { $maritalStatus = '-'; - if ($this->marital_status == 'M'){ + if ($this->marital_status == 'M') { $maritalStatus = 'Married'; - } else if ($this->relation_with_principal == 'D'){ + } else if ($this->relation_with_principal == 'D') { $maritalStatus = 'Divorced'; - } else if ($this->relation_with_principal == 'S'){ - $maritalStatus = 'Sungle'; - } + } else if ($this->relation_with_principal == 'S') { + $maritalStatus = 'Single'; + } return Attribute::make( - get: fn () => $maritalStatus + get: fn () => $maritalStatus ); } @@ -306,12 +316,12 @@ class Member extends Model protected function birthDateeCard(): Attribute { // $date = $this->person->birth_date ?? ($this->birth_date ?? null); - if ($this->birth_date){ + if ($this->birth_date) { $date = $this->birth_date; return Attribute::make( get: fn () => !empty($date) ? Carbon::parse($date)->format('d / M / Y') : null ); - } else if ($this->person->birth_date){ + } else if ($this->person->birth_date) { return Attribute::make( get: fn () => !empty($date) ? Carbon::parse($date)->format('d / M / Y') : null ); @@ -322,9 +332,28 @@ class Member extends Model } } + protected function birthDateCard(): Attribute + { + $date = $this->birth_date; + + if ($date) { + return Attribute::make( + get: fn () => !empty($date) ? Carbon::parse($date)->format('d / M / Y') : '-' + ); + } else if ($this->relationLoaded('person')) { + $date = $this->person->birth_date; + return Attribute::make( + get: fn () => !empty($date) ? Carbon::parse($date)->format('d / M / Y') : '-' + ); + } else { + return Attribute::make( + get: fn () => '-' + ); + } + } + protected function startDate(): Attribute { - // $date = $this->person->birth_date ?? ($this->birth_date ?? null); $date = $this->members_effective_date; return Attribute::make( get: fn () => !empty($date) ? Carbon::parse($date)->format('d / M / Y') : null @@ -333,7 +362,6 @@ class Member extends Model protected function endDate(): Attribute { - // $date = $this->person->birth_date ?? ($this->birth_date ?? null); $date = $this->members_expire_date; return Attribute::make( get: fn () => !empty($date) ? Carbon::parse($date)->format('d / M / Y') : null @@ -366,19 +394,22 @@ class Member extends Model // ); // } - protected function corporateLogo(): Attribute - { - $avatar = File::where(['type' => 'avatar', 'fileable_id' => $this->currentPolicy->corporate->id])->orderBy('id', 'desc')->get()->first(); - if ($avatar){ - $path = $_ENV['LMS_APP_STORAGE'] . $avatar->path ? $avatar->path :''; - return Attribute::make( - get: fn () => $avatar ? $path : null - ); - } else { - return Attribute::make( - get: fn () => null - ); - } - } + // protected function corporateLogo(): Attribute + // { + // $avatar = null; + + // if ($this->relationLoaded('currentPolicy')) { + // $corporateId = $this->currentPolicy->corporate->id; + // $avatar = File::where(['type' => 'avatar', 'fileable_id' => $corporateId]) + // ->orderBy('id', 'desc') + // ->first(); + // } + + // $path = $avatar ? $_ENV['LMS_APP_STORAGE'] . $avatar->path : ''; + + // return Attribute::make( + // get: fn () => $path + // ); + // } /* -------------------------------------------------------------------------- */ } diff --git a/app/Models/OLDLMS/Appointment.php b/app/Models/OLDLMS/Appointment.php index ec0b8a0a..045a193d 100644 --- a/app/Models/OLDLMS/Appointment.php +++ b/app/Models/OLDLMS/Appointment.php @@ -172,4 +172,8 @@ class Appointment extends Model { return $this->belongsTo(Healthcare::class, 'nIDHealthCare', 'nID'); } + + public function consulPrice(){ + return $this->hasOne(JadwalDokter::class, 'nIDDokter', 'nIDDokter'); + } } diff --git a/app/Models/Person.php b/app/Models/Person.php index f3a6c944..4c61f862 100644 --- a/app/Models/Person.php +++ b/app/Models/Person.php @@ -40,7 +40,7 @@ class Person extends Model 'updated_by', 'deleted_by' ]; - + protected $hidden = [ 'created_at', 'updated_at', @@ -126,6 +126,11 @@ class Person extends Model return $this->morphMany(AppointmentParticipant::class, 'participantable'); } + public function member() + { + return $this->hasOne(Member::class); + } + public function setGenderAttribute($value) { if ($value == "M" || $value == "L") { @@ -139,7 +144,6 @@ class Person extends Model public function getGenderAttribute() { - if ($this->attributes['gender'] == "male" || $this->attributes['gender'] == "L") { return "male"; } else if ($this->attributes['gender'] == "female" || $this->attributes['gender'] == "P") { @@ -148,9 +152,4 @@ class Person extends Model return "other"; } } - - public function updatePerson() - { - $this -> update ( $data ); - } } diff --git a/app/Models/RequestLog.php b/app/Models/RequestLog.php index 2683be21..20010d10 100644 --- a/app/Models/RequestLog.php +++ b/app/Models/RequestLog.php @@ -35,6 +35,7 @@ class RequestLog extends Model 'penempatan_kamar', 'catatan', 'import_system', + 'diagnosis', 'code', 'approved_by', 'approved_at', @@ -51,7 +52,7 @@ class RequestLog extends Model 'deleted_by', ]; - public static $doc_headers_to_field_map = [ + public static $doc_headers_to_field_map = [ "Date Of Request" => "submission_date", "Date Addmission" => "submission_date", "Member ID Peserta" => "member_id", @@ -65,7 +66,7 @@ class RequestLog extends Model "Total Billing" => "total_billing", "Amount Approval" => "amount_approval", "Amount Not Approval" => "amount_not_approval", - "QC 1" => "status_final_log", + "QC 1" => "status_final_log", ]; public static $listing_doc_headers = [ @@ -82,7 +83,7 @@ class RequestLog extends Model "Total Billing", "Amount Approval", "Amount Not Approval", - "QC 1", + "QC 1", ]; public static $listing_data_doc_headers = [ @@ -94,7 +95,7 @@ class RequestLog extends Model "CLAIM METHOD", "STATUS", ]; - + public static $status = [ 'draft' => 'Draft', @@ -241,6 +242,16 @@ class RequestLog extends Model return $this->belongsTo(Service::class, 'service_code', 'code'); } + public function requestLogBenefits() + { + return $this->hasMany(RequestLogBenefit::class, 'request_log_id'); + } + + public function requestLogDailyMonitorings() + { + return $this->hasMany(RequestLogDailyMonitoring::class, 'request_log_id'); + } + public function getPaymentTypeNameAttribute() { return self::$payment_types[$this->payment_type] ?? $this->payment_type; diff --git a/app/Models/RequestLogBenefit.php b/app/Models/RequestLogBenefit.php index 1b42c6d2..e0b4c7aa 100644 --- a/app/Models/RequestLogBenefit.php +++ b/app/Models/RequestLogBenefit.php @@ -24,7 +24,13 @@ class RequestLogBenefit extends Model 'deleted_by', ]; - public function benefit(){ + public function benefit() + { return $this->belongsTo(Benefit::class, 'benefit_id', 'id'); } + + public function requestLog() + { + return $this->belongsTo(RequestLog::class); + } } diff --git a/app/Models/RequestLogDailyMonitoring.php b/app/Models/RequestLogDailyMonitoring.php new file mode 100644 index 00000000..2eacfb50 --- /dev/null +++ b/app/Models/RequestLogDailyMonitoring.php @@ -0,0 +1,31 @@ +belongsTo(RequestLog::class); + } + + public function requestLogMedicalPlans() + { + return $this->hasMany(RequestLogMedicalPlan::class); + } + + /* -------------------------------------------------------------------------- */ + + protected function code(): Attribute + { + return Attribute::make( + get: fn ($value, $attributes) => 'RE-' . str_pad($attributes['id'], 3, '0', STR_PAD_LEFT), + ); + } +} diff --git a/app/Models/RequestLogMedicalPlan.php b/app/Models/RequestLogMedicalPlan.php new file mode 100644 index 00000000..5ab25a9d --- /dev/null +++ b/app/Models/RequestLogMedicalPlan.php @@ -0,0 +1,18 @@ +belongsTo(RequestLogDailyMonitoring::class); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index abebd0f1..0b675b83 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -48,7 +48,7 @@ class AppServiceProvider extends ServiceProvider { Schema::defaultStringLength(191); - Str::macro('initials', fn($value, $sep = ' ', $glue = '') => trim(collect(explode($sep, $value))->map(function ($segment) { + Str::macro('initials', fn ($value, $sep = ' ', $glue = '') => trim(collect(explode($sep, $value))->map(function ($segment) { return $segment[0] ?? ''; })->join($glue))); @@ -87,7 +87,7 @@ class AppServiceProvider extends ServiceProvider //Hospital CorporateHospital::updated(function ($model) { - + $this->logAuditTrail($model, 'updated'); }); @@ -179,8 +179,6 @@ class AppServiceProvider extends ServiceProvider }); Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class); - - } private function logAuditTrail($model, $action) diff --git a/app/Services/CorporateMemberService.php b/app/Services/CorporateMemberService.php index f1d3ea8a..12c3fc64 100644 --- a/app/Services/CorporateMemberService.php +++ b/app/Services/CorporateMemberService.php @@ -2,8 +2,10 @@ namespace App\Services; +use App\Models\CorporateEmployee; use App\Models\Member; use App\Models\Encounter; +use App\Models\RequestLog; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -13,34 +15,42 @@ class CorporateMemberService public function getAllMemberDashboards(int $corporateId, Request $request) { $limit = $request->has('perPage') ? $request->input('perPage') : 10; - return Member::query() - ->joinCorporateEmployees('left') - ->joinCorporateDivisions('left') - ->with(['currentPlan', 'person']) - ->where('corporate_employees.corporate_id', $corporateId) - ->when($request->input('search'), function (Builder $query, $search) { - $query->where(function (Builder $query) use ($search) { - $query->orWhere('members.member_id', 'like', "%" . $search . "%") - ->orWhere('members.name', 'like', "%" . $search . "%"); + $memberIds = CorporateEmployee::where('corporate_id', $corporateId) + ->when($request->input('division'), function ($query, $value) { + $query->where('division_id', $value); + }) + ->pluck('member_id'); + return Member::with(['person']) + ->whereIn('id', $memberIds) + ->when($request->input('search'), function ($query, $search) { + $query->where(function ($query) use ($search) { + $query->orWhere('member_id', 'like', "%" . $search . "%") + ->orWhere('name', 'like', "%" . $search . "%"); }); }) - ->when($request->input('division'), function (Builder $query, $value) { - $query->where('corporate_employees.division_id', $value); - }) - ->when($request->has('orderBy'), function (Builder $query) use ($request) { + ->when($request->has('orderBy'), function ($query) use ($request) { $orderBy = match ($request->input('orderBy')) { 'memberId' => 'member_id', 'fullName' => 'name', 'status' => 'active', - 'division' => 'corporate_divisions.name', - default => '' + default => null, }; - if ($request->order) { - $query->getQuery()->orderBy($orderBy, $request->order); + if ($orderBy !== null && $request->order) { + $query->orderBy($orderBy, $request->order); } }) - ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active']) - ->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`") + ->select([ + 'id', + 'person_id', + 'member_id', + 'name', + 'active', + ]) + ->withCount([ + 'claims as claims_sum_total_claim' => function ($query) { + $query->select(DB::raw('COALESCE(SUM(total_claim), 0)'))->whereNull('deleted_at'); + }, + ]) ->paginate($limit); } @@ -49,41 +59,48 @@ class CorporateMemberService $limit = $request->has('per_page') ? $request->input('per_page') : 10; $results = DB::table('claim_requests') - ->leftJoin('claims', 'claim_requests.id', '=', 'claims.claim_request_id') - ->leftJoin('members', 'claim_requests.member_id', '=', 'members.id') - ->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id') - ->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id') - ->where('corporate_employees.corporate_id', '=', $corporateId) - ->when($request->input('search'), function ($query, $search) { - $query->where(function ($query) use ($search) { - $query->orWhere('claim_requests.code', 'like', "%" . $search . "%") - ->orWhere('members.member_id', 'like', "%" . $search . "%") - ->orWhere('members.name', 'like', "%" . $search . "%") - ->orWhere('corporate_divisions.name', 'like', "%" . $search . "%") - ->orWhere('claim_requests.status', 'like', "%" . $search . "%") - ->orWhere('claim_requests.submission_date', 'like', "%" . $search . "%"); - }); - }) - ->when($request->has('orderBy'), function ($query) use ($request) { - $orderBy = $request->orderBy; - $direction = $request->order ?? 'asc'; + ->leftJoin('claims', 'claim_requests.id', '=', 'claims.claim_request_id') + ->leftJoin('members', 'claim_requests.member_id', '=', 'members.id') + ->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id') + ->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id') + ->where('corporate_employees.corporate_id', '=', $corporateId) + ->when($request->input('search'), function ($query, $search) { + $query->where(function ($query) use ($search) { + $query->orWhere('claim_requests.code', 'like', "%" . $search . "%") + ->orWhere('members.member_id', 'like', "%" . $search . "%") + ->orWhere('members.name', 'like', "%" . $search . "%") + ->orWhere('corporate_divisions.name', 'like', "%" . $search . "%") + ->orWhere('claim_requests.status', 'like', "%" . $search . "%") + ->orWhere('claim_requests.submission_date', 'like', "%" . $search . "%"); + }); + }) + ->when($request->has('orderBy'), function ($query) use ($request) { + $orderBy = $request->orderBy; + $direction = $request->order ?? 'asc'; - $query->orderBy($orderBy, $direction); - }) - ->select('members.id', 'claim_requests.code','members.member_id', 'members.name as full_name', 'corporate_divisions.name AS division_name', - DB::raw(' - CASE + $query->orderBy($orderBy, $direction); + }) + ->select( + 'members.id', + 'claim_requests.code', + 'members.member_id', + 'members.name as full_name', + 'corporate_divisions.name AS division_name', + DB::raw(' + CASE WHEN claim_requests.status = "requested" THEN "requested" WHEN claim_requests.status = "approved" AND claims.status = "approved" THEN "approved" WHEN claim_requests.status = "approved" AND claims.status = "declined" THEN "declined" WHEN claim_requests.status = "approved" AND claims.status = "disbrusmented" THEN "disbrusmented" /*WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "pending"*/ WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "reviewed" - ELSE "" + ELSE "" END AS status - '), - 'claim_requests.id AS claim_request_id', 'claim_requests.submission_date') - ->paginate($limit); + '), + 'claim_requests.id AS claim_request_id', + 'claim_requests.submission_date' + ) + ->paginate($limit); return $results; } @@ -125,34 +142,90 @@ class CorporateMemberService } }) // ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active', 'claim_requests.id', 'claim_requests.member_id', 'claim_requests.submission_date']) - ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active', ]) + ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active',]) ->paginate($limit); } public function getAllMemberAlarmCenter(int $corporateId, Request $request) { $limit = $request->has('perPage') ? $request->input('perPage') : 10; - $start_date = date('Y-m-d', strtotime($request->input('start_date') . ' +1 day')); - $end_date = date('Y-m-d', strtotime($request->input('end_date') . ' +1 day')); + // $start_date = date('Y-m-d', strtotime($request->input('start_date') . ' +1 day')); + // $end_date = date('Y-m-d', strtotime($request->input('end_date') . ' +1 day')); // dd($request); - return Member::query() - ->joinCorporateEmployees('left') - ->joinMemberPlans('left') - ->joinPlans('left') - ->with(['currentPlan', 'person']) - ->where('corporate_employees.corporate_id', $corporateId) + + // return Member::query() + // // ->joinCorporateEmployees('left') + // // ->joinMemberPlans('left') + // // ->joinPlans('left') + // // ->with(['currentPlan', 'person']) + // // ->where('corporate_employees.corporate_id', $corporateId) + // ->when($request->input('search'), function (Builder $query, $search) { + // $query->where(function (Builder $query) use ($search) { + // $query->orWhere('members.member_id', 'like', "%" . $search . "%") + // ->orWhere('members.name', 'like', "%" . $search . "%"); + // }); + // }) + // ->when($request->input('start_date'), function (Builder $query, $start_date) { + // $query->where('members.members_effective_date', '>=', $start_date); + // }) + // ->when($request->input('end_date'), function (Builder $query, $end_date) { + // $query->where('members.members_expire_date', '<', $end_date); + // }) + // ->when($request->input('division'), function (Builder $query, $value) { + // $query->where('corporate_employees.division_id', $value); + // }) + // ->when($request->input('status'), function (Builder $query, $value) { + // $query->where('plans.active', $value); + // }) + // ->when($request->has('orderBy'), function (Builder $query) use ($request) { + // $orderBy = match ($request->input('orderBy')) { + // 'memberId' => 'member_id', + // 'fullName' => 'name', + // // 'status' => 'active', + // 'start_date' => 'member_plans.members_effective_date', + // 'end_date' => 'member_plans.members_expire_date', + // // 'service' => 'plans.service_code', + + // default => '' + // }; + + // $query->getQuery()->orderBy($orderBy, $request->order); + // }) + // ->select([ + // 'members.id', + // 'members.person_id', + // 'members.member_id', + // 'members.name', + // 'members.members_effective_date', // Use the actual property name + // 'members.members_expire_date', // Use the actual property name + // // 'plans.active', + // // 'plans.service_code' + // ]) + // // ->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`") + // // ->groupBy('member_id') + // ->paginate($limit); + + return RequestLog::query() + ->leftJoin('members', 'request_logs.member_id', '=', 'members.id') + // ->joinMemberPlans('left') + // ->joinPlans('left') + // ->with(['currentPlan', 'person']) + // ->where('corporate_employees.corporate_id', $corporateId) + // ->whereHas('currentCorporate', function (Builder $query) use ($corporateId) { + // // $query->where('corporate_id', $corporateId); + // }) ->when($request->input('search'), function (Builder $query, $search) { $query->where(function (Builder $query) use ($search) { $query->orWhere('members.member_id', 'like', "%" . $search . "%") ->orWhere('members.name', 'like', "%" . $search . "%"); }); }) - ->when($request->input('start_date'), function (Builder $query, $start) { - $query->where('members.members_effective_date', '>=', $start); + ->when($request->input('start_date'), function (Builder $query, $start_date) { + $query->where('members.members_effective_date', '>=', $start_date); }) - ->when($request->input('end_date'), function (Builder $query, $end) { - $query->where('members.members_expire_date', '<', $end); + ->when($request->input('end_date'), function (Builder $query, $end_date) { + $query->where('members.members_expire_date', '<', $end_date); }) ->when($request->input('division'), function (Builder $query, $value) { $query->where('corporate_employees.division_id', $value); @@ -165,9 +238,9 @@ class CorporateMemberService 'memberId' => 'member_id', 'fullName' => 'name', 'status' => 'active', - 'start_date' => 'member_plans.start', - 'end_date' => 'member_plans.end', - 'service' => 'plans.service_code', + 'start_date' => 'member_plans.members_effective_date', + 'end_date' => 'member_plans.members_expire_date', + 'request_date' => 'request_logs.submission_date', default => '' }; @@ -178,14 +251,17 @@ class CorporateMemberService 'members.id', 'members.person_id', 'members.member_id', - 'members.name', + 'members.name as full_name', 'members.members_effective_date', // Use the actual property name 'members.members_expire_date', // Use the actual property name - 'plans.active', - 'plans.service_code' + 'members.active', + 'request_logs.service_code', ]) - ->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`") + // ->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`") + ->groupBy('member_id') ->paginate($limit); + + } public function getAllMemberEmployeeData(int $corporateId, Request $request) @@ -193,36 +269,40 @@ class CorporateMemberService $limit = $request->has('perPage') ? $request->input('perPage') : 10; return Member::query() - ->joinCorporateEmployees('left') - ->joinMemberPlans('left') - ->joinPlans('left') - ->with(['currentPlan', 'person']) - ->where('corporate_employees.corporate_id', $corporateId) - ->when($request->input('search'), function (Builder $query, $search) { - $query->where(function (Builder $query) use ($search) { - $query->orWhere('members.member_id', 'like', "%" . $search . "%") - ->orWhere('members.name', 'like', "%" . $search . "%"); + ->whereHas('employeds', function ($query) use ($corporateId) { + $query->where('corporate_id', $corporateId); + }) + ->when($request->input('search'), function ($query, $search) { + $query->where(function ($query) use ($search) { + $query->orWhere('member_id', 'like', "%" . $search . "%") + ->orWhere('name', 'like', "%" . $search . "%"); }); }) - ->when($request->input('division'), function (Builder $query, $value) { - $query->where('corporate_employees.division_id', $value); - }) - ->when($request->has('orderBy'), function (Builder $query) use ($request) { + ->when($request->has('orderBy'), function ($query) use ($request) { $orderBy = match ($request->input('orderBy')) { 'memberId' => 'member_id', 'fullName' => 'name', 'status' => 'active', - 'start_date' => 'member_plans.start', - 'end_date' => 'member_plans.end', - 'service' => 'plans.service_code', - - default => '' + 'start_date' => 'members_effective_date', + 'end_date' => 'members_expire_date', + default => null, }; - $query->getQuery()->orderBy($orderBy, $request->order); + if ($orderBy !== null && $request->order) { + $query->orderBy($orderBy, $request->order); + } }) - ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'member_plans.start AS start_date', 'member_plans.end AS end_date', 'plans.active', 'plans.service_code']) - ->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`") + ->select([ + 'id', + 'person_id', + 'member_id', + 'name_prefix', + 'name_suffix', + 'name', + 'members_effective_date', + 'members_expire_date', + 'active', + ]) ->paginate($limit); } diff --git a/composer.lock b/composer.lock index 5f607246..7aaddc93 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c779fcf27ac449663570ccbb67a693d1", + "content-hash": "1575df47935c996ba01c7337aadaa305", "packages": [ { "name": "barryvdh/laravel-dompdf", @@ -85,16 +85,16 @@ }, { "name": "barryvdh/laravel-snappy", - "version": "v1.0.1", + "version": "v1.0.2", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-snappy.git", - "reference": "283d9c908e4d63b328edea0ed841bc492b3b73fa" + "reference": "940eec2d99b89cbc9bea2f493cf068382962a485" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/283d9c908e4d63b328edea0ed841bc492b3b73fa", - "reference": "283d9c908e4d63b328edea0ed841bc492b3b73fa", + "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/940eec2d99b89cbc9bea2f493cf068382962a485", + "reference": "940eec2d99b89cbc9bea2f493cf068382962a485", "shasum": "" }, "require": { @@ -147,7 +147,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-snappy/issues", - "source": "https://github.com/barryvdh/laravel-snappy/tree/v1.0.1" + "source": "https://github.com/barryvdh/laravel-snappy/tree/v1.0.2" }, "funding": [ { @@ -159,7 +159,7 @@ "type": "github" } ], - "time": "2023-02-05T15:10:01+00:00" + "time": "2023-04-07T10:38:54+00:00" }, { "name": "box/spout", @@ -292,17 +292,86 @@ "time": "2023-01-15T23:15:59+00:00" }, { - "name": "composer/semver", - "version": "3.3.2", + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -352,9 +421,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -370,7 +439,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "dflydev/dot-access-data", @@ -449,28 +518,28 @@ }, { "name": "doctrine/inflector", - "version": "2.0.6", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^11.0", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25" + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -520,7 +589,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.6" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -536,7 +605,7 @@ "type": "tidelift" } ], - "time": "2022-10-20T09:10:12+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/lexer", @@ -679,16 +748,16 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.2", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -728,7 +797,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -736,7 +805,7 @@ "type": "github" } ], - "time": "2022-09-10T18:51:20+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "duitkupg/duitku-php", @@ -781,16 +850,16 @@ }, { "name": "egulias/email-validator", - "version": "4.0.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { @@ -799,8 +868,8 @@ "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -836,7 +905,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -844,24 +913,24 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -903,9 +972,9 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2023-11-17T15:01:25+00:00" }, { "name": "fruitcake/laravel-cors", @@ -989,21 +1058,21 @@ }, { "name": "fruitcake/php-cors", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" + "symfony/http-foundation": "^4.4|^5.4|^6|^7" }, "require-dev": { "phpstan/phpstan": "^1.4", @@ -1013,7 +1082,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -1044,7 +1113,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" }, "funding": [ { @@ -1056,28 +1125,28 @@ "type": "github" } ], - "time": "2022-02-20T15:07:15+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.0", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.28 || ^9.5.21" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -1106,7 +1175,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -1118,26 +1187,26 @@ "type": "tidelift" } ], - "time": "2022-07-30T15:56:11+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.5.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1146,10 +1215,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1162,9 +1232,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" } }, "autoload": { @@ -1230,7 +1297,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -1246,38 +1313,37 @@ "type": "tidelift" } ], - "time": "2022-08-28T15:39:27+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -1314,7 +1380,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -1330,26 +1396,26 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.3", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "67c26b443f348a51926030c83481b85718457d3d" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", - "reference": "67c26b443f348a51926030c83481b85718457d3d", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -1357,9 +1423,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1369,9 +1435,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "2.4-dev" } }, "autoload": { @@ -1433,7 +1496,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.3" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -1449,34 +1512,36 @@ "type": "tidelift" } ], - "time": "2022-10-26T14:07:24+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.1", + "version": "v1.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "uri-template/tests": "1.0.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -1517,7 +1582,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" }, "funding": [ { @@ -1533,7 +1598,7 @@ "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-12-03T19:50:20+00:00" }, { "name": "h4cc/wkhtmltoimage-amd64", @@ -1714,36 +1779,29 @@ }, { "name": "knplabs/knp-snappy", - "version": "v1.4.1", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/snappy.git", - "reference": "5126fb5b335ec929a226314d40cd8dad497c3d67" + "reference": "98468898b50c09f26d56d905b79b0f52a2215da6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/5126fb5b335ec929a226314d40cd8dad497c3d67", - "reference": "5126fb5b335ec929a226314d40cd8dad497c3d67", + "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/98468898b50c09f26d56d905b79b0f52a2215da6", + "reference": "98468898b50c09f26d56d905b79b0f52a2215da6", "shasum": "" }, "require": { - "php": ">=7.1", - "psr/log": "^1.0||^2.0||^3.0", - "symfony/process": "~3.4||~4.3||~5.0||~6.0" + "php": ">=8.1", + "psr/log": "^2.0||^3.0", + "symfony/process": "^5.0||^6.0||^7.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16||^3.0", + "friendsofphp/php-cs-fixer": "^3.0", "pedrotroller/php-cs-custom-fixer": "^2.19", - "phpstan/phpstan": "^0.12.7", - "phpstan/phpstan-phpunit": "^0.12.6", - "phpunit/phpunit": "~7.4||~8.5" - }, - "suggest": { - "h4cc/wkhtmltoimage-amd64": "Provides wkhtmltoimage-amd64 binary for Linux-compatible machines, use version `~0.12` as dependency", - "h4cc/wkhtmltoimage-i386": "Provides wkhtmltoimage-i386 binary for Linux-compatible machines, use version `~0.12` as dependency", - "h4cc/wkhtmltopdf-amd64": "Provides wkhtmltopdf-amd64 binary for Linux-compatible machines, use version `~0.12` as dependency", - "h4cc/wkhtmltopdf-i386": "Provides wkhtmltopdf-i386 binary for Linux-compatible machines, use version `~0.12` as dependency", - "wemersonjanuario/wkhtmltopdf-windows": "Provides wkhtmltopdf executable for Windows, use version `~0.12` as dependency" + "phpstan/phpstan": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -1782,22 +1840,22 @@ ], "support": { "issues": "https://github.com/KnpLabs/snappy/issues", - "source": "https://github.com/KnpLabs/snappy/tree/v1.4.1" + "source": "https://github.com/KnpLabs/snappy/tree/v1.5.0" }, - "time": "2022-01-07T13:03:38+00:00" + "time": "2023-12-18T09:12:11+00:00" }, { "name": "laravel/framework", - "version": "v9.51.0", + "version": "v9.52.16", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b81123134349a013a738a9f7f715c6ce99d5a414" + "reference": "082345d76fc6a55b649572efe10b11b03e279d24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b81123134349a013a738a9f7f715c6ce99d5a414", - "reference": "b81123134349a013a738a9f7f715c6ce99d5a414", + "url": "https://api.github.com/repos/laravel/framework/zipball/082345d76fc6a55b649572efe10b11b03e279d24", + "reference": "082345d76fc6a55b649572efe10b11b03e279d24", "shasum": "" }, "require": { @@ -1894,7 +1952,7 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^7.16", + "orchestra/testbench-core": "^7.24", "pda/pheanstalk": "^4.0", "phpstan/phpdoc-parser": "^1.15", "phpstan/phpstan": "^1.4.7", @@ -1982,7 +2040,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-02-07T15:37:18+00:00" + "time": "2023-10-03T13:02:30+00:00" }, { "name": "laravel/sanctum", @@ -2051,16 +2109,16 @@ }, { "name": "laravel/serializable-closure", - "version": "v1.3.0", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", "shasum": "" }, "require": { @@ -2107,35 +2165,36 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-01-30T18:31:20+00:00" + "time": "2023-11-08T14:08:06+00:00" }, { "name": "laravel/socialite", - "version": "v5.6.1", + "version": "v5.11.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "a14a177f2cc71d8add71e2b19e00800e83bdda09" + "reference": "4f6a8af6f3f7c18da03d19842dd0514315501c10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/a14a177f2cc71d8add71e2b19e00800e83bdda09", - "reference": "a14a177f2cc71d8add71e2b19e00800e83bdda09", + "url": "https://api.github.com/repos/laravel/socialite/zipball/4f6a8af6f3f7c18da03d19842dd0514315501c10", + "reference": "4f6a8af6f3f7c18da03d19842dd0514315501c10", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/guzzle": "^6.0|^7.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "league/oauth1-client": "^1.10.1", "php": "^7.2|^8.0" }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0", - "phpunit/phpunit": "^8.0|^9.3" + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.0|^9.3|^10.4" }, "type": "library", "extra": { @@ -2176,20 +2235,20 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2023-01-20T15:42:35+00:00" + "time": "2023-12-02T18:22:36+00:00" }, { "name": "laravel/tinker", - "version": "v2.8.0", + "version": "v2.8.2", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "74d0b287cc4ae65d15c368dd697aae71d62a73ad" + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/74d0b287cc4ae65d15c368dd697aae71d62a73ad", - "reference": "74d0b287cc4ae65d15c368dd697aae71d62a73ad", + "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", "shasum": "" }, "require": { @@ -2202,6 +2261,7 @@ }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { @@ -2242,22 +2302,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.8.0" + "source": "https://github.com/laravel/tinker/tree/v2.8.2" }, - "time": "2023-01-10T18:03:30+00:00" + "time": "2023-08-15T14:27:00+00:00" }, { "name": "league/commonmark", - "version": "2.3.8", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "c493585c130544c4e91d2e0e131e6d35cb0cbc47" + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c493585c130544c4e91d2e0e131e6d35cb0cbc47", - "reference": "c493585c130544c4e91d2e0e131e6d35cb0cbc47", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", "shasum": "" }, "require": { @@ -2293,7 +2353,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" } }, "autoload": { @@ -2350,7 +2410,7 @@ "type": "tidelift" } ], - "time": "2022-12-10T16:02:17+00:00" + "time": "2023-08-30T16:55:00+00:00" }, { "name": "league/config", @@ -2436,23 +2496,26 @@ }, { "name": "league/flysystem", - "version": "3.12.2", + "version": "3.23.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "f6377c709d2275ed6feaf63e44be7a7162b0e77f" + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f6377c709d2275ed6feaf63e44be7a7162b0e77f", - "reference": "f6377c709d2275ed6feaf63e44be7a7162b0e77f", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", "shasum": "" }, "require": { + "league/flysystem-local": "^3.0.0", "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" }, "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", @@ -2460,8 +2523,8 @@ "symfony/http-client": "<5.2" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", "aws/aws-sdk-php": "^3.220.0", "composer/semver": "^3.0", "ext-fileinfo": "*", @@ -2470,9 +2533,9 @@ "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "microsoft/azure-storage-blob": "^1.1", - "phpseclib/phpseclib": "^3.0.14", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", + "phpseclib/phpseclib": "^3.0.34", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", "sabre/dav": "^4.3.1" }, "type": "library", @@ -2507,7 +2570,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.12.2" + "source": "https://github.com/thephpleague/flysystem/tree/3.23.0" }, "funding": [ { @@ -2517,13 +2580,69 @@ { "url": "https://github.com/frankdejonge", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" } ], - "time": "2023-01-19T12:02:19+00:00" + "time": "2023-12-04T10:16:17+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.23.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-12-04T10:14:46+00:00" }, { "name": "league/glide", @@ -2592,26 +2711,26 @@ }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -2632,7 +2751,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" }, "funding": [ { @@ -2644,7 +2763,7 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2023-10-17T14:13:20+00:00" }, { "name": "league/oauth1-client", @@ -2724,28 +2843,28 @@ }, { "name": "maatwebsite/excel", - "version": "3.1.46", + "version": "3.1.51", "source": { "type": "git", "url": "https://github.com/SpartnerNL/Laravel-Excel.git", - "reference": "ba0b9b9305d5b603c3938d4d1d4a13025c92c241" + "reference": "6d3c78ce6645abada32e03b40dc7f3c561878bc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/ba0b9b9305d5b603c3938d4d1d4a13025c92c241", - "reference": "ba0b9b9305d5b603c3938d4d1d4a13025c92c241", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/6d3c78ce6645abada32e03b40dc7f3c561878bc3", + "reference": "6d3c78ce6645abada32e03b40dc7f3c561878bc3", "shasum": "" }, "require": { "composer/semver": "^3.3", "ext-json": "*", - "illuminate/support": "5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0", - "php": "^7.0|^8.0", + "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0", + "php": "^7.0||^8.0", "phpoffice/phpspreadsheet": "^1.18", - "psr/simple-cache": "^1.0|^2.0|^3.0" + "psr/simple-cache": "^1.0||^2.0||^3.0" }, "require-dev": { - "orchestra/testbench": "^6.0|^7.0|^8.0", + "orchestra/testbench": "^6.0||^7.0||^8.0", "predis/predis": "^1.1" }, "type": "library", @@ -2788,7 +2907,7 @@ ], "support": { "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", - "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.46" + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.51" }, "funding": [ { @@ -2800,37 +2919,40 @@ "type": "github" } ], - "time": "2023-01-26T20:40:09+00:00" + "time": "2023-12-08T12:44:49+00:00" }, { "name": "maennchen/zipstream-php", - "version": "v2.4.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3" + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3", - "reference": "3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1", + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1", "shasum": "" }, "require": { "ext-mbstring": "*", - "myclabs/php-enum": "^1.5", - "php": "^8.0", - "psr/http-message": "^1.0" + "ext-zlib": "*", + "php-64bit": "^8.1" }, "require-dev": { "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.9", - "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0", + "friendsofphp/php-cs-fixer": "^3.16", + "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4", - "phpunit/phpunit": "^8.5.8 || ^9.4.2", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10.0", "vimeo/psalm": "^5.0" }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, "type": "library", "autoload": { "psr-4": { @@ -2866,7 +2988,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/v2.4.0" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0" }, "funding": [ { @@ -2878,7 +3000,7 @@ "type": "open_collective" } ], - "time": "2022-12-08T12:29:14+00:00" + "time": "2023-06-21T14:59:35+00:00" }, { "name": "markbaker/complex", @@ -3055,17 +3177,158 @@ "time": "2023-05-10T11:58:31+00:00" }, { - "name": "monolog/monolog", - "version": "2.9.1", + "name": "mikehaertl/php-shellcommand", + "version": "1.7.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "url": "https://github.com/mikehaertl/php-shellcommand.git", + "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/mikehaertl/php-shellcommand/zipball/e79ea528be155ffdec6f3bf1a4a46307bb49e545", + "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545", + "shasum": "" + }, + "require": { + "php": ">= 5.3.0" + }, + "require-dev": { + "phpunit/phpunit": ">4.0 <=9.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "mikehaertl\\shellcommand\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Härtl", + "email": "haertl.mike@gmail.com" + } + ], + "description": "An object oriented interface to shell commands", + "keywords": [ + "shell" + ], + "support": { + "issues": "https://github.com/mikehaertl/php-shellcommand/issues", + "source": "https://github.com/mikehaertl/php-shellcommand/tree/1.7.0" + }, + "time": "2023-04-19T08:25:22+00:00" + }, + { + "name": "mikehaertl/php-tmpfile", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/mikehaertl/php-tmpfile.git", + "reference": "70a5b70b17bc0d9666388e6a551ecc93d0b40a10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mikehaertl/php-tmpfile/zipball/70a5b70b17bc0d9666388e6a551ecc93d0b40a10", + "reference": "70a5b70b17bc0d9666388e6a551ecc93d0b40a10", + "shasum": "" + }, + "require-dev": { + "php": ">=5.3.0", + "phpunit/phpunit": ">4.0 <=9.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "mikehaertl\\tmp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Härtl", + "email": "haertl.mike@gmail.com" + } + ], + "description": "A convenience class for temporary files", + "keywords": [ + "files" + ], + "support": { + "issues": "https://github.com/mikehaertl/php-tmpfile/issues", + "source": "https://github.com/mikehaertl/php-tmpfile/tree/1.2.1" + }, + "time": "2021-03-01T18:26:25+00:00" + }, + { + "name": "mikehaertl/phpwkhtmltopdf", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/mikehaertl/phpwkhtmltopdf.git", + "reference": "17ee71341591415d942774eda2c98d8ba7ea9e90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mikehaertl/phpwkhtmltopdf/zipball/17ee71341591415d942774eda2c98d8ba7ea9e90", + "reference": "17ee71341591415d942774eda2c98d8ba7ea9e90", + "shasum": "" + }, + "require": { + "mikehaertl/php-shellcommand": "^1.5.0", + "mikehaertl/php-tmpfile": "^1.2.1", + "php": ">=5.0.0" + }, + "require-dev": { + "phpunit/phpunit": ">4.0 <9.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "mikehaertl\\wkhtmlto\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Haertl", + "email": "haertl.mike@gmail.com" + } + ], + "description": "A slim PHP wrapper around wkhtmltopdf with an easy to use and clean OOP interface", + "homepage": "http://mikehaertl.github.com/phpwkhtmltopdf/", + "keywords": [ + "pdf", + "wkhtmltoimage", + "wkhtmltopdf" + ], + "support": { + "issues": "https://github.com/mikehaertl/phpwkhtmltopdf/issues", + "source": "https://github.com/mikehaertl/phpwkhtmltopdf/tree/2.5.0" + }, + "time": "2021-03-01T19:41:06+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.9.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { @@ -3142,7 +3405,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -3154,95 +3417,37 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" - }, - { - "name": "myclabs/php-enum", - "version": "1.8.4", - "source": { - "type": "git", - "url": "https://github.com/myclabs/php-enum.git", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "1.*", - "vimeo/psalm": "^4.6.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "MyCLabs\\Enum\\": "src/" - }, - "classmap": [ - "stubs/Stringable.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP Enum contributors", - "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" - } - ], - "description": "PHP Enum implementation", - "homepage": "http://github.com/myclabs/php-enum", - "keywords": [ - "enum" - ], - "support": { - "issues": "https://github.com/myclabs/php-enum/issues", - "source": "https://github.com/myclabs/php-enum/tree/1.8.4" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", - "type": "tidelift" - } - ], - "time": "2022-08-04T09:53:51+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "nesbot/carbon", - "version": "2.66.0", + "version": "2.72.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "496712849902241f04902033b0441b269effe001" + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001", - "reference": "496712849902241f04902033b0441b269effe001", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -3319,25 +3524,25 @@ "type": "tidelift" } ], - "time": "2023-01-29T18:53:47+00:00" + "time": "2023-12-08T23:47:49+00:00" }, { "name": "nette/schema", - "version": "v1.2.3", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", "shasum": "" }, "require": { "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" + "php": "7.1 - 8.3" }, "require-dev": { "nette/tester": "^2.3 || ^2.4", @@ -3379,26 +3584,26 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" + "source": "https://github.com/nette/schema/tree/v1.2.5" }, - "time": "2022-10-13T01:24:26+00:00" + "time": "2023-10-05T20:37:59+00:00" }, { "name": "nette/utils", - "version": "v4.0.0", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", + "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", "shasum": "" }, "require": { - "php": ">=8.0 <8.3" + "php": ">=8.0 <8.4" }, "conflict": { "nette/finder": "<3", @@ -3406,7 +3611,7 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.4", + "nette/tester": "^2.5", "phpstan/phpstan": "^1.0", "tracy/tracy": "^2.9" }, @@ -3416,8 +3621,7 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", "extra": { @@ -3466,22 +3670,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.0" + "source": "https://github.com/nette/utils/tree/v4.0.3" }, - "time": "2023-02-02T10:41:53+00:00" + "time": "2023-10-29T21:02:13+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.3", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -3522,9 +3726,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-01-16T22:05:37+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "nunomaduro/termwind", @@ -3745,16 +3949,16 @@ }, { "name": "paragonie/sodium_compat", - "version": "v1.19.0", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933" + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/cb15e403ecbe6a6cc515f855c310eb6b1872a933", - "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6", "shasum": "" }, "require": { @@ -3825,9 +4029,9 @@ ], "support": { "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v1.19.0" + "source": "https://github.com/paragonie/sodium_compat/tree/v1.20.0" }, - "time": "2022-09-26T03:40:35+00:00" + "time": "2023-04-30T00:54:53+00:00" }, { "name": "phenx/php-font-lib", @@ -4002,16 +4206,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "1.27.1", + "version": "1.29.0", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "ef4e6ef74990239946d3983451a9bbed5ef1be5d" + "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/ef4e6ef74990239946d3983451a9bbed5ef1be5d", - "reference": "ef4e6ef74990239946d3983451a9bbed5ef1be5d", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fde2ccf55eaef7e86021ff1acce26479160a0fa0", + "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0", "shasum": "" }, "require": { @@ -4029,7 +4233,7 @@ "ext-zip": "*", "ext-zlib": "*", "ezyang/htmlpurifier": "^4.15", - "maennchen/zipstream-php": "^2.1", + "maennchen/zipstream-php": "^2.1 || ^3.0", "markbaker/complex": "^3.0", "markbaker/matrix": "^3.0", "php": "^7.4 || ^8.0", @@ -4041,12 +4245,12 @@ "dealerdirect/phpcodesniffer-composer-installer": "dev-main", "dompdf/dompdf": "^1.0 || ^2.0", "friendsofphp/php-cs-fixer": "^3.2", - "mitoteam/jpgraph": "^10.2.4", + "mitoteam/jpgraph": "^10.3", "mpdf/mpdf": "^8.1.1", "phpcompatibility/php-compatibility": "^9.3", "phpstan/phpstan": "^1.1", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5 || ^9.0", + "phpunit/phpunit": "^8.5 || ^9.0 || ^10.0", "squizlabs/php_codesniffer": "^3.7", "tecnickcom/tcpdf": "^6.5" }, @@ -4101,30 +4305,30 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.27.1" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.0" }, - "time": "2023-02-08T07:02:13+00:00" + "time": "2023-06-14T22:48:31+00:00" }, { "name": "phpoption/phpoption", - "version": "1.9.0", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8", - "phpunit/phpunit": "^8.5.28 || ^9.5.21" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "extra": { @@ -4166,7 +4370,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" }, "funding": [ { @@ -4178,7 +4382,55 @@ "type": "tidelift" } ], - "time": "2022-07-30T15:51:26+00:00" + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", @@ -4285,21 +4537,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -4319,7 +4571,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -4331,27 +4583,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -4371,7 +4623,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -4386,31 +4638,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4425,7 +4677,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -4439,9 +4691,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", @@ -4546,16 +4798,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.12", + "version": "v0.11.22", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "52cb7c47d403c31c0adc9bf7710fc355f93c20f7" + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/52cb7c47d403c31c0adc9bf7710fc355f93c20f7", - "reference": "52cb7c47d403c31c0adc9bf7710fc355f93c20f7", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", "shasum": "" }, "require": { @@ -4584,7 +4836,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-0.11": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -4616,22 +4872,22 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.12" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" }, - "time": "2023-01-29T21:24:40+00:00" + "time": "2023-10-14T21:56:36+00:00" }, { "name": "pusher/pusher-php-server", - "version": "7.2.2", + "version": "7.2.4", "source": { "type": "git", "url": "https://github.com/pusher/pusher-http-php.git", - "reference": "4ace4873873b06c25cecb2dd6d9fdcbf2f20b640" + "reference": "de2f72296808f9cafa6a4462b15a768ff130cddb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/4ace4873873b06c25cecb2dd6d9fdcbf2f20b640", - "reference": "4ace4873873b06c25cecb2dd6d9fdcbf2f20b640", + "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/de2f72296808f9cafa6a4462b15a768ff130cddb", + "reference": "de2f72296808f9cafa6a4462b15a768ff130cddb", "shasum": "" }, "require": { @@ -4677,9 +4933,9 @@ ], "support": { "issues": "https://github.com/pusher/pusher-http-php/issues", - "source": "https://github.com/pusher/pusher-http-php/tree/7.2.2" + "source": "https://github.com/pusher/pusher-http-php/tree/7.2.4" }, - "time": "2022-12-20T19:52:36+00:00" + "time": "2023-12-15T10:58:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -4816,16 +5072,16 @@ }, { "name": "ramsey/uuid", - "version": "4.x-dev", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "bf2bee216a4379eaf62162307d62bb7850405fec" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/bf2bee216a4379eaf62162307d62bb7850405fec", - "reference": "bf2bee216a4379eaf62162307d62bb7850405fec", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { @@ -4866,7 +5122,6 @@ "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, - "default-branch": true, "type": "library", "extra": { "captainhook": { @@ -4893,7 +5148,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.x" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -4905,7 +5160,7 @@ "type": "tidelift" } ], - "time": "2023-02-07T16:14:23+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "sabberworm/php-css-parser", @@ -5152,16 +5407,16 @@ }, { "name": "spatie/laravel-permission", - "version": "5.9.1", + "version": "5.11.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-permission.git", - "reference": "a88ed98c8937442737e0c50163682e832d608f13" + "reference": "7090824cca57e693b880ce3aaf7ef78362e28bbd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/a88ed98c8937442737e0c50163682e832d608f13", - "reference": "a88ed98c8937442737e0c50163682e832d608f13", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/7090824cca57e693b880ce3aaf7ef78362e28bbd", + "reference": "7090824cca57e693b880ce3aaf7ef78362e28bbd", "shasum": "" }, "require": { @@ -5222,7 +5477,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-permission/issues", - "source": "https://github.com/spatie/laravel-permission/tree/5.9.1" + "source": "https://github.com/spatie/laravel-permission/tree/5.11.1" }, "funding": [ { @@ -5230,7 +5485,7 @@ "type": "github" } ], - "time": "2023-02-06T21:37:02+00:00" + "time": "2023-10-25T05:12:01+00:00" }, { "name": "spatie/temporary-directory", @@ -5295,24 +5550,24 @@ }, { "name": "symfony/console", - "version": "v6.2.5", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3e294254f2191762c1d137aed4b94e966965e985" + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3e294254f2191762c1d137aed4b94e966965e985", - "reference": "3e294254f2191762c1d137aed4b94e966965e985", + "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/dependency-injection": "<5.4", @@ -5326,18 +5581,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5366,12 +5619,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.5" + "source": "https://github.com/symfony/console/tree/v6.4.2" }, "funding": [ { @@ -5387,20 +5640,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/css-selector", - "version": "v6.2.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1" + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1", - "reference": "bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", "shasum": "" }, "require": { @@ -5436,7 +5689,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.2.5" + "source": "https://github.com/symfony/css-selector/tree/v6.4.0" }, "funding": [ { @@ -5452,20 +5705,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", - "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -5474,7 +5727,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5503,7 +5756,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -5519,31 +5772,35 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/error-handler", - "version": "v6.2.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "0092696af0be8e6124b042fbe2890ca1788d7b28" + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/0092696af0be8e6124b042fbe2890ca1788d7b28", - "reference": "0092696af0be8e6124b042fbe2890ca1788d7b28", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -5574,7 +5831,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.2.5" + "source": "https://github.com/symfony/error-handler/tree/v6.4.0" }, "funding": [ { @@ -5590,28 +5847,29 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-10-18T09:43:34+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.2.5", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68" + "reference": "e95216850555cd55e71b857eb9d6c2674124603a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68", - "reference": "f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e95216850555cd55e71b857eb9d6c2674124603a", + "reference": "e95216850555cd55e71b857eb9d6c2674124603a", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -5619,17 +5877,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5657,7 +5911,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.5" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.2" }, "funding": [ { @@ -5673,33 +5927,30 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0782b0b52a737a05b4383d0df35a474303cabdae" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae", - "reference": "0782b0b52a737a05b4383d0df35a474303cabdae", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5736,7 +5987,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -5752,27 +6003,27 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/finder", - "version": "v6.2.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "c90dc446976a612e3312a97a6ec0069ab0c2099c" + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/c90dc446976a612e3312a97a6ec0069ab0c2099c", - "reference": "c90dc446976a612e3312a97a6ec0069ab0c2099c", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", "shasum": "" }, "require": { "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -5800,7 +6051,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.5" + "source": "https://github.com/symfony/finder/tree/v6.4.0" }, "funding": [ { @@ -5816,41 +6067,40 @@ "type": "tidelift" } ], - "time": "2023-01-20T17:45:48+00:00" + "time": "2023-10-31T17:30:12+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.2.6", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e8dd1f502bc2b3371d05092aa233b064b03ce7ed" + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e8dd1f502bc2b3371d05092aa233b064b03ce7ed", - "reference": "e8dd1f502bc2b3371d05092aa233b064b03ce7ed", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.2" + "symfony/cache": "<6.3" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5878,7 +6128,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.2.6" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.2" }, "funding": [ { @@ -5894,29 +6144,29 @@ "type": "tidelift" } ], - "time": "2023-01-30T15:46:28+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.2.6", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "7122db07b0d8dbf0de682267c84217573aee3ea7" + "reference": "13e8387320b5942d0dc408440c888e2d526efef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7122db07b0d8dbf0de682267c84217573aee3ea7", - "reference": "7122db07b0d8dbf0de682267c84217573aee3ea7", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", + "reference": "13e8387320b5942d0dc408440c888e2d526efef4", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^6.1", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -5924,15 +6174,18 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.2", + "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.4", "symfony/messenger": "<5.4", "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { @@ -5940,29 +6193,28 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.2", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "symfony/uid": "^5.4|^6.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -5989,7 +6241,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.2.6" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" }, "funding": [ { @@ -6005,20 +6257,20 @@ "type": "tidelift" } ], - "time": "2023-02-01T08:32:25+00:00" + "time": "2023-12-30T15:31:44+00:00" }, { "name": "symfony/mailer", - "version": "v6.2.5", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "29729ac0b4e5113f24c39c46746bd6afb79e0aaa" + "reference": "6da89e5c9202f129717a770a03183fb140720168" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/29729ac0b4e5113f24c39c46746bd6afb79e0aaa", - "reference": "29729ac0b4e5113f24c39c46746bd6afb79e0aaa", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6da89e5c9202f129717a770a03183fb140720168", + "reference": "6da89e5c9202f129717a770a03183fb140720168", "shasum": "" }, "require": { @@ -6026,21 +6278,22 @@ "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^6.2", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.4", "symfony/messenger": "<6.2", "symfony/mime": "<6.2", "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^6.2", - "symfony/twig-bridge": "^6.2" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" }, "type": "library", "autoload": { @@ -6068,7 +6321,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.2.5" + "source": "https://github.com/symfony/mailer/tree/v6.4.2" }, "funding": [ { @@ -6084,24 +6337,25 @@ "type": "tidelift" } ], - "time": "2023-01-10T18:53:53+00:00" + "time": "2023-12-19T09:12:31+00:00" }, { "name": "symfony/mime", - "version": "v6.2.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "4b7b349f67d15cd0639955c8179a76c89f6fd610" + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/4b7b349f67d15cd0639955c8179a76c89f6fd610", - "reference": "4b7b349f67d15cd0639955c8179a76c89f6fd610", + "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -6110,16 +6364,16 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2" + "symfony/serializer": "<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^6.2" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" }, "type": "library", "autoload": { @@ -6151,7 +6405,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.2.5" + "source": "https://github.com/symfony/mime/tree/v6.4.0" }, "funding": [ { @@ -6167,20 +6421,20 @@ "type": "tidelift" } ], - "time": "2023-01-10T18:53:53+00:00" + "time": "2023-10-17T11:49:05+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -6195,7 +6449,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6233,7 +6487,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -6249,20 +6503,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -6274,7 +6528,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6314,7 +6568,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -6330,20 +6584,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -6357,7 +6611,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6401,7 +6655,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -6417,20 +6671,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -6442,7 +6696,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6485,7 +6739,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -6501,20 +6755,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -6529,7 +6783,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6568,7 +6822,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -6584,20 +6838,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { @@ -6606,7 +6860,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6644,7 +6898,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -6660,20 +6914,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -6682,7 +6936,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6727,7 +6981,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -6743,20 +6997,100 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-uuid", - "version": "v1.27.0", + "name": "symfony/polyfill-php83", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T06:22:46+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", "shasum": "" }, "require": { @@ -6771,7 +7105,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6809,7 +7143,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" }, "funding": [ { @@ -6825,20 +7159,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", - "version": "v6.2.5", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "9ead139f63dfa38c4e4a9049cc64a8b2748c83b7" + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/9ead139f63dfa38c4e4a9049cc64a8b2748c83b7", - "reference": "9ead139f63dfa38c4e4a9049cc64a8b2748c83b7", + "url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241", + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241", "shasum": "" }, "require": { @@ -6870,7 +7204,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.5" + "source": "https://github.com/symfony/process/tree/v6.4.2" }, "funding": [ { @@ -6886,24 +7220,25 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-12-22T16:42:54+00:00" }, { "name": "symfony/routing", - "version": "v6.2.5", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "589bd742d5d03c192c8521911680fe88f61712fe" + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/589bd742d5d03c192c8521911680fe88f61712fe", - "reference": "589bd742d5d03c192c8521911680fe88f61712fe", + "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", @@ -6914,17 +7249,11 @@ "require-dev": { "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6958,7 +7287,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.5" + "source": "https://github.com/symfony/routing/tree/v6.4.2" }, "funding": [ { @@ -6974,36 +7303,33 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75", - "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -7043,7 +7369,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -7059,20 +7385,20 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "v6.2.5", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0" + "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0", - "reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0", + "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", "shasum": "" }, "require": { @@ -7083,14 +7409,14 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7129,7 +7455,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.5" + "source": "https://github.com/symfony/string/tree/v6.4.2" }, "funding": [ { @@ -7145,32 +7471,35 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/translation", - "version": "v6.2.5", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "60556925a703cfbc1581cde3b3f35b0bb0ea904c" + "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/60556925a703cfbc1581cde3b3f35b0bb0ea904c", - "reference": "60556925a703cfbc1581cde3b3f35b0bb0ea904c", + "url": "https://api.github.com/repos/symfony/translation/zipball/a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", + "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { "symfony/config": "<5.4", "symfony/console": "<5.4", "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", "symfony/twig-bundle": "<5.4", "symfony/yaml": "<5.4" }, @@ -7180,23 +7509,17 @@ "require-dev": { "nikic/php-parser": "^4.13", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "nikic/php-parser": "To use PhpAstExtractor", - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7227,7 +7550,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.2.5" + "source": "https://github.com/symfony/translation/tree/v6.4.2" }, "funding": [ { @@ -7243,32 +7566,29 @@ "type": "tidelift" } ], - "time": "2023-01-05T07:00:27+00:00" + "time": "2023-12-18T09:25:29+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.2.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "68cce71402305a015f8c1589bfada1280dc64fe7" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/68cce71402305a015f8c1589bfada1280dc64fe7", - "reference": "68cce71402305a015f8c1589bfada1280dc64fe7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -7308,7 +7628,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -7324,20 +7644,20 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/uid", - "version": "v6.2.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "8ace895bded57d6496638c9b2d3b788e05b7395b" + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/8ace895bded57d6496638c9b2d3b788e05b7395b", - "reference": "8ace895bded57d6496638c9b2d3b788e05b7395b", + "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", "shasum": "" }, "require": { @@ -7345,7 +7665,7 @@ "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7382,7 +7702,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.2.5" + "source": "https://github.com/symfony/uid/tree/v6.4.0" }, "funding": [ { @@ -7398,42 +7718,39 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-10-31T08:18:17+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.2.5", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "44b7b81749fd20c1bdf4946c041050e22bc8da27" + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/44b7b81749fd20c1bdf4946c041050e22bc8da27", - "reference": "44b7b81749fd20c1bdf4946c041050e22bc8da27", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -7470,7 +7787,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.5" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" }, "funding": [ { @@ -7486,27 +7803,27 @@ "type": "tidelift" } ], - "time": "2023-01-20T17:45:48+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", + "version": "v2.2.7", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" @@ -7537,37 +7854,37 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" }, - "time": "2023-01-03T09:29:04+00:00" + "time": "2023-12-08T13:03:43+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.5.0", + "version": "v5.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -7579,7 +7896,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -7611,7 +7928,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" }, "funding": [ { @@ -7623,7 +7940,7 @@ "type": "tidelift" } ], - "time": "2022-10-16T01:01:54+00:00" + "time": "2023-11-12T22:43:29+00:00" }, { "name": "voku/portable-ascii", @@ -7761,23 +8078,23 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.8.0", + "version": "v3.9.2", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "eb01216141e62433178c52b0cbdb785b45bae871" + "reference": "bfd0131c146973cab164e50f5cdd8a67cc60cab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/eb01216141e62433178c52b0cbdb785b45bae871", - "reference": "eb01216141e62433178c52b0cbdb785b45bae871", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/bfd0131c146973cab164e50f5cdd8a67cc60cab1", + "reference": "bfd0131c146973cab164e50f5cdd8a67cc60cab1", "shasum": "" }, "require": { "illuminate/routing": "^9|^10", "illuminate/session": "^9|^10", "illuminate/support": "^9|^10", - "maximebf/debugbar": "^1.17.2", + "maximebf/debugbar": "^1.18.2", "php": "^8.0", "symfony/finder": "^6" }, @@ -7790,7 +8107,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.6-dev" + "dev-master": "3.8-dev" }, "laravel": { "providers": [ @@ -7829,7 +8146,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.8.0" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.9.2" }, "funding": [ { @@ -7841,7 +8158,7 @@ "type": "github" } ], - "time": "2023-02-04T15:47:28+00:00" + "time": "2023-08-25T18:43:57+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -7939,16 +8256,16 @@ }, { "name": "barryvdh/reflection-docblock", - "version": "v2.1.0", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "bf44b757feb8ba1734659029357646466ded673e" + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/bf44b757feb8ba1734659029357646466ded673e", - "reference": "bf44b757feb8ba1734659029357646466ded673e", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/e6811e927f0ecc37cc4deaa6627033150343e597", + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597", "shasum": "" }, "require": { @@ -7985,28 +8302,28 @@ } ], "support": { - "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.0" + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.1" }, - "time": "2022-10-31T15:35:43+00:00" + "time": "2023-06-14T05:06:27+00:00" }, { "name": "composer/class-map-generator", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513" + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/1e1cb2b791facb2dfe32932a7718cf2571187513", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", "shasum": "" }, "require": { - "composer/pcre": "^2 || ^3", + "composer/pcre": "^2.1 || ^3.1", "php": "^7.2 || ^8.0", - "symfony/finder": "^4.4 || ^5.3 || ^6" + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" }, "require-dev": { "phpstan/phpstan": "^1.6", @@ -8044,7 +8361,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.0.0" + "source": "https://github.com/composer/class-map-generator/tree/1.1.0" }, "funding": [ { @@ -8060,20 +8377,20 @@ "type": "tidelift" } ], - "time": "2022-06-19T11:31:27+00:00" + "time": "2023-06-30T13:58:57+00:00" }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -8115,7 +8432,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -8131,7 +8448,7 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "doctrine/cache", @@ -8228,16 +8545,16 @@ }, { "name": "doctrine/dbal", - "version": "3.6.0", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "85b98cb23c8af471a67abfe14485da696bcabc2e" + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/85b98cb23c8af471a67abfe14485da696bcabc2e", - "reference": "85b98cb23c8af471a67abfe14485da696bcabc2e", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", "shasum": "" }, "require": { @@ -8250,14 +8567,15 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "11.1.0", + "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.9.14", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "9.6.3", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.42", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.13", "psalm/plugin-phpunit": "0.18.4", - "squizlabs/php_codesniffer": "3.7.1", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0", "vimeo/psalm": "4.30.0" @@ -8320,7 +8638,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.0" + "source": "https://github.com/doctrine/dbal/tree/3.7.2" }, "funding": [ { @@ -8336,29 +8654,33 @@ "type": "tidelift" } ], - "time": "2023-02-07T22:52:03+00:00" + "time": "2023-11-19T08:06:58+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -8377,9 +8699,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/event-manager", @@ -8544,16 +8866,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.21.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d", - "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -8579,11 +8901,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -8606,22 +8923,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2022-12-13T13:54:32+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "filp/whoops", - "version": "2.14.6", + "version": "2.15.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "f7948baaa0330277c729714910336383286305da" + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/f7948baaa0330277c729714910336383286305da", - "reference": "f7948baaa0330277c729714910336383286305da", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { @@ -8671,7 +8988,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.6" + "source": "https://github.com/filp/whoops/tree/2.15.4" }, "funding": [ { @@ -8679,7 +8996,7 @@ "type": "github" } ], - "time": "2022-11-02T16:23:29+00:00" + "time": "2023-11-03T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -8734,24 +9051,28 @@ }, { "name": "laravel/sail", - "version": "v1.20.1", + "version": "v1.26.3", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "4b85dbfa3dceeaf7227e3029707562fd60297e86" + "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/4b85dbfa3dceeaf7227e3029707562fd60297e86", - "reference": "4b85dbfa3dceeaf7227e3029707562fd60297e86", + "url": "https://api.github.com/repos/laravel/sail/zipball/fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", + "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", "shasum": "" }, "require": { - "illuminate/console": "^8.0|^9.0|^10.0", - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", - "php": "^7.3|^8.0", - "symfony/yaml": "^6.0" + "illuminate/console": "^9.0|^10.0|^11.0", + "illuminate/contracts": "^9.0|^10.0|^11.0", + "illuminate/support": "^9.0|^10.0|^11.0", + "php": "^8.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10" }, "bin": [ "bin/sail" @@ -8791,20 +9112,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-02-08T02:08:37+00:00" + "time": "2023-12-02T18:26:39+00:00" }, { "name": "maximebf/debugbar", - "version": "v1.18.2", + "version": "v1.19.1", "source": { "type": "git", "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "17dcf3f6ed112bb85a37cf13538fd8de49f5c274" + "reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/17dcf3f6ed112bb85a37cf13538fd8de49f5c274", - "reference": "17dcf3f6ed112bb85a37cf13538fd8de49f5c274", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/03dd40a1826f4d585ef93ef83afa2a9874a00523", + "reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523", "shasum": "" }, "require": { @@ -8855,44 +9176,44 @@ ], "support": { "issues": "https://github.com/maximebf/php-debugbar/issues", - "source": "https://github.com/maximebf/php-debugbar/tree/v1.18.2" + "source": "https://github.com/maximebf/php-debugbar/tree/v1.19.1" }, - "time": "2023-02-04T15:27:00+00:00" + "time": "2023-10-12T08:10:52+00:00" }, { "name": "mockery/mockery", - "version": "1.5.1", + "version": "1.6.7", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e" + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "symplify/easy-coding-standard": "^12.0.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -8903,12 +9224,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -8926,23 +9255,26 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.1" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-09-07T15:32:08+00:00" + "time": "2023-12-10T02:24:34+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -8980,7 +9312,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -8988,7 +9320,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nunomaduro/collision", @@ -9244,24 +9576,27 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", @@ -9293,29 +9628,76 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2022-10-14T12:47:21+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.24", + "name": "phpstan/phpdoc-parser", + "version": "1.24.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2cf940ebc6355a9d430462811b5aaa308b174bed" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2cf940ebc6355a9d430462811b5aaa308b174bed", - "reference": "2cf940ebc6355a9d430462811b5aaa308b174bed", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5" + }, + "time": "2023-12-16T09:33:33+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.30", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.14", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -9330,8 +9712,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -9364,7 +9746,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.24" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30" }, "funding": [ { @@ -9372,7 +9755,7 @@ "type": "github" } ], - "time": "2023-01-26T08:26:55+00:00" + "time": "2023-12-22T06:47:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -9617,16 +10000,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.3", + "version": "9.6.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e7b1615e3e887d6c719121c6d4a44b0ab9645555" + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7b1615e3e887d6c719121c6d4a44b0ab9645555", - "reference": "e7b1615e3e887d6c719121c6d4a44b0ab9645555", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", "shasum": "" }, "require": { @@ -9641,7 +10024,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -9659,8 +10042,8 @@ "sebastian/version": "^3.0.2" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -9699,7 +10082,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.3" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" }, "funding": [ { @@ -9715,7 +10099,7 @@ "type": "tidelift" } ], - "time": "2023-02-04T13:37:15+00:00" + "time": "2023-12-01T16:55:19+00:00" }, { "name": "psr/cache", @@ -10009,20 +10393,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -10054,7 +10438,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -10062,20 +10446,20 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -10120,7 +10504,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -10128,7 +10512,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", @@ -10272,16 +10656,16 @@ }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bde739e7565280bda77be70044ac1047bc007e34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, "require": { @@ -10324,7 +10708,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" }, "funding": [ { @@ -10332,24 +10716,24 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-08-02T09:26:13+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -10381,7 +10765,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -10389,7 +10773,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -10732,16 +11116,16 @@ }, { "name": "spatie/backtrace", - "version": "1.2.1", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", "shasum": "" }, "require": { @@ -10750,6 +11134,7 @@ "require-dev": { "ext-json": "*", "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", "symfony/var-dumper": "^5.1" }, "type": "library", @@ -10777,8 +11162,7 @@ "spatie" ], "support": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" + "source": "https://github.com/spatie/backtrace/tree/1.5.3" }, "funding": [ { @@ -10790,43 +11174,44 @@ "type": "other" } ], - "time": "2021-11-09T10:57:15+00:00" + "time": "2023-06-28T12:59:17+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.3.5", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42" + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42", - "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0|^10.0", + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.62.1", "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" }, "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1.x-dev" + "dev-main": "1.3.x-dev" } }, "autoload": { @@ -10851,7 +11236,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.3.5" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.3" }, "funding": [ { @@ -10859,42 +11244,51 @@ "type": "github" } ], - "time": "2023-01-23T15:58:46+00:00" + "time": "2023-10-17T15:54:07+00:00" }, { "name": "spatie/ignition", - "version": "1.4.3", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "2cf3833220cfe8fcf639544f8d7067b6469a00b0" + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/2cf3833220cfe8fcf639544f8d7067b6469a00b0", - "reference": "2cf3833220cfe8fcf639544f8d7067b6469a00b0", + "url": "https://api.github.com/repos/spatie/ignition/zipball/5b6f801c605a593106b623e45ca41496a6e7d56d", + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", - "spatie/flare-client-php": "^1.1", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "symfony/process": "^5.4|^6.0" + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.2.x-dev" + "dev-main": "1.5.x-dev" } }, "autoload": { @@ -10933,7 +11327,7 @@ "type": "github" } ], - "time": "2023-01-23T15:28:32+00:00" + "time": "2024-01-03T15:49:39+00:00" }, { "name": "spatie/laravel-ignition", @@ -11027,30 +11421,28 @@ }, { "name": "symfony/yaml", - "version": "v6.2.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19" + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19", - "reference": "2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -11081,7 +11473,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.5" + "source": "https://github.com/symfony/yaml/tree/v6.4.0" }, "funding": [ { @@ -11097,20 +11489,20 @@ "type": "tidelift" } ], - "time": "2023-01-10T18:53:53+00:00" + "time": "2023-11-06T11:00:25+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -11139,7 +11531,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -11147,7 +11539,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" } ], "aliases": [], diff --git a/database/migrations/2023_06_13_103859_add_column_limit_telecon_to_table_plans.php b/database/migrations/2023_06_13_103859_add_column_limit_telecon_to_table_plans.php index b58063dc..e0991fa0 100644 --- a/database/migrations/2023_06_13_103859_add_column_limit_telecon_to_table_plans.php +++ b/database/migrations/2023_06_13_103859_add_column_limit_telecon_to_table_plans.php @@ -13,7 +13,7 @@ return new class extends Migration */ public function up() { - Schema::table(' plans', function (Blueprint $table) { + Schema::table('plans', function (Blueprint $table) { $table->string('limit_telecon')->nullable(); }); } diff --git a/database/migrations/2024_01_15_114611_add_column_diagnosis_to_request_log.php b/database/migrations/2024_01_15_114611_add_column_diagnosis_to_request_log.php new file mode 100644 index 00000000..742ff18b --- /dev/null +++ b/database/migrations/2024_01_15_114611_add_column_diagnosis_to_request_log.php @@ -0,0 +1,32 @@ +string('diagnosis')->after('import_system')->default(null); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('request_logs', function (Blueprint $table) { + $table->dropColumn('diagnosis'); + }); + } +}; diff --git a/frontend/client-portal/.env.production b/frontend/client-portal/.env.production index 565298f4..19484cbc 100644 --- a/frontend/client-portal/.env.production +++ b/frontend/client-portal/.env.production @@ -1,3 +1,3 @@ GENERATE_SOURCEMAP=false -VITE_API_URL="https://aso-api.linksehat.dev/api/client" +VITE_API_URL="https://primecenter-api.linksehat.com/api/client" diff --git a/frontend/client-portal/src/@types/member.ts b/frontend/client-portal/src/@types/member.ts index c38b0640..348b2f5b 100644 --- a/frontend/client-portal/src/@types/member.ts +++ b/frontend/client-portal/src/@types/member.ts @@ -1,21 +1,45 @@ -// ---------------------------------------------------------------------- - export type Member = { - id: string, - member_id: string, - record_type: string, - payor_id: string, - user_id: string, - name_prefix: string, - name: string, - name_suffix: string, - birth_date: string, - gender: string, - language: string, - race: string, - marital_status: string, - principal_id: string, - relation_with_principal: string, - bpjs_class: string, - active: string, + id: string; + member_id: string; + record_type: string; + payor_id: string; + user_id: string; + name_prefix: string; + name: string; + name_suffix: string; + birth_date: string; + gender: string; + language: string; + race: string; + marital_status: string; + principal_id: string; + relation_with_principal: string; + bpjs_class: string; + active: string; +}; + +export type PersonalInformationType = { + name: string; + weight: number; + height: number; + placeOfBirth: string; + dateOfBirth: string; + gender: string; + phoneNumber: string; + email: string; + address: string; + idNumber: string; + religion: string; + maritalStatus: string; + education: string; + occupation: string; +}; + +export type FamilyInformationtype = { + name: string; + relationship: string; + dateOfBirth: string; + email: string; + phoneNumber: string; + status: string; }; diff --git a/frontend/client-portal/src/@types/table.ts b/frontend/client-portal/src/@types/table.ts index 2e71163b..6acf96d9 100644 --- a/frontend/client-portal/src/@types/table.ts +++ b/frontend/client-portal/src/@types/table.ts @@ -58,7 +58,7 @@ export type Status = { export type TableListProps = { headCells?: HeadCell[]; rows?: Array; - paginations: { + paginations?: { page: number; setPage: Dispatch>; rowsPerPage: number; @@ -66,7 +66,7 @@ export type TableListProps = { paginationTable: PaginationTableProps; setPaginationTable: Dispatch>; }; - orders: { + orders?: { order: Order; setOrder: Dispatch>; orderBy: string; @@ -76,14 +76,15 @@ export type TableListProps = { isLoading: boolean; setIsLoading: Dispatch>; }; - params: { + params?: { searchParams: URLSearchParams; setSearchParams: any; appliedParams: {}; setAppliedParams: Dispatch>; }; - searchs: { + searchs?: { useSearchs: boolean; + fullWidth?: boolean; searchText: string; setSearchText: Dispatch>; handleSearchSubmit: (event: FormEvent) => void; @@ -106,19 +107,19 @@ export type TableListProps = { handleStatusChange: (event: SelectChangeEvent) => void; }; }; - filterStartDate: { + filterStartDate?: { useFilter: boolean; startDate: string; setStartDate: Dispatch>; handleStartDateChange: (event: FormEvent) => void; }; - filterEndDate: { + filterEndDate?: { useFilter: boolean; endDate: string; setEndDate: Dispatch>; handleEndDateChange: (event: FormEvent) => void; }; - exportReport: { + exportReport?: { useExport: boolean; startDate: string; endDate: string; diff --git a/frontend/client-portal/src/components/Table.tsx b/frontend/client-portal/src/components/Table.tsx index 9feb4a64..75dd41fc 100644 --- a/frontend/client-portal/src/components/Table.tsx +++ b/frontend/client-portal/src/components/Table.tsx @@ -1,5 +1,4 @@ /* ---------------------------------- @mui ---------------------------------- */ -import { styled } from '@mui/material/styles'; import { Paper, Table as TableContent, @@ -12,49 +11,23 @@ import { Button, TableSortLabel, Box, - Card, Grid, FormControl, InputLabel, Select, MenuItem, - SelectChangeEvent, - Stack, + InputAdornment, Typography, - LinearProgress, - linearProgressClasses, } from '@mui/material'; import { visuallyHidden } from '@mui/utils'; -/* ---------------------------------- axios --------------------------------- */ -import axios from '../utils/axios'; /* ---------------------------------- react --------------------------------- */ -import { Fragment, useContext, useEffect, useState } from 'react'; -import { useSearchParams } from 'react-router-dom'; +import { Fragment } from 'react'; /* -------------------------------- component ------------------------------- */ import BaseTablePagination from './BaseTablePagination'; -/* ---------------------------------- theme --------------------------------- */ -import palette from '../theme/palette'; /* ---------------------------------- utils --------------------------------- */ -import { UserCurrentCorporateContext } from '../contexts/UserCurrentCorporate'; -import { fSplit } from '../utils/formatNumber'; -import { Download, Search as SearchIcon, Upload } from '@mui/icons-material'; +import { Download, Search as SearchIcon } from '@mui/icons-material'; /* ---------------------------------- types --------------------------------- */ -import { DivisionDataProps, Order, PaginationTableProps, TableListProps } from '../@types/table'; -import { InputAdornment } from '@mui/material'; -import GetAppIcon from '@mui/icons-material/GetApp'; -/* --------------------------------- styled --------------------------------- */ -const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ - height: 10, - borderRadius: 6, - [`&.${linearProgressClasses.colorPrimary}`]: { - backgroundColor: '#D1F1F1', - }, - [`& .${linearProgressClasses.bar}`]: { - borderRadius: 6, - backgroundColor: theme.palette.primary.main, - }, -})); -/* -------------------------------------------------------------------------- */ +import { DivisionDataProps, StatusDataProps, TableListProps } from '../@types/table'; export default function Table({ headCells, @@ -77,11 +50,11 @@ export default function Table({ orders?.setOrder(isAsc ? 'desc' : 'asc'); orders?.setOrderBy(property); const parameters = Object.fromEntries([ - ...params.searchParams.entries(), + ...(params?.searchParams.entries() as IterableIterator<[string, string]>), ['order', isAsc ? 'desc' : 'asc'], ['orderBy', property], ]); - params.setAppliedParams(parameters); + params?.setAppliedParams(parameters); }; /* -------------------------------------------------------------------------- */ @@ -134,123 +107,142 @@ export default function Table({ newPage: number ) => { const parameters = Object.fromEntries([ - ...params.searchParams.entries(), + ...(params?.searchParams.entries() as IterableIterator<[string, string]>), ['page', newPage + 1], - ['per_page', paginations.rowsPerPage] + ['per_page', paginations?.rowsPerPage], ]); - paginations.setPage(newPage); + paginations?.setPage(newPage); await new Promise((resolve) => setTimeout(resolve, 500)); - params.setAppliedParams(parameters); + params?.setAppliedParams(parameters); }; /* -------------------------------------------------------------------------- */ /* --------------------------- row page per limit --------------------------- */ const onRowsPerPageChangeHandle = async (event: React.ChangeEvent) => { - params.searchParams.delete('page'); + params?.searchParams.delete('page'); const parameters = Object.fromEntries([ - ...params.searchParams.entries(), + ...(params?.searchParams.entries() as IterableIterator<[string, string]>), ['per_page', parseInt(event.target.value, 10)], ]); - paginations.setPage(0); - paginations.setRowsPerPage(parseInt(event.target.value, 10)); + paginations?.setPage(0); + paginations?.setRowsPerPage(parseInt(event.target.value, 10)); await new Promise((resolve) => setTimeout(resolve, 500)); - params.setAppliedParams(parameters); + params?.setAppliedParams(parameters); }; /* -------------------------------------------------------------------------- */ return ( // - - {/* Field 1 */} - - - {filters && filters.useFilter ? ( - - - - Division - - - - + + {/* Field 1 */} + + + {filters && filters.useFilter ? ( + + + + Division + + + + +
+ searchs?.setSearchText(event.target.value)} + value={searchs?.searchText} + fullWidth + /> + +
+
+ ) : null} + + {searchs && searchs.useSearchs ? ( + + {filterStatus && filterStatus.useFilter ? ( +
searchs.setSearchText(event.target.value)} value={searchs.searchText} fullWidth + InputProps={{ + startAdornment: ( + + + + ), + }} + placeholder="Search Name or Member ID... " />
-
- ) : null } - - {searchs && searchs.useSearchs ? ( - - {filterStatus && filterStatus.useFilter ? ( - -
- searchs.setSearchText(event.target.value)} - value={searchs.searchText} - fullWidth - InputProps={{ - startAdornment: ( - - - - ), - }} - placeholder="Search Name or Member ID... " - /> - + ) : exportReport && exportReport.useExport && filterStatus === undefined ? ( + +
+ searchs.setSearchText(event.target.value)} + value={searchs.searchText} + fullWidth + InputProps={{ + startAdornment: ( + + + + ), + }} + placeholder="Search Name or Member ID... " + /> +
- ) : - -
- searchs.setSearchText(event.target.value)} - value={searchs.searchText} - fullWidth - InputProps={{ - startAdornment: ( - - - - ), - }} - placeholder="Search Name or Member ID... " - /> - -
- } - -
- ) : null } + ) : ( + +
+ searchs.setSearchText(event.target.value)} + value={searchs.searchText} + fullWidth + InputProps={{ + startAdornment: ( + + + + ), + }} + placeholder="Search Name or Member ID... " + /> + +
+ )} +
+ ) : null} - {/* Start date */} - {filterStartDate && filterStartDate.useFilter ? ( - + {/* Start date */} + {filterStartDate && filterStartDate.useFilter ? ( +
({ />
- ) : null } + ) : null} - {/* End Date */} + {/* End Date */} - {filterEndDate && filterEndDate.useFilter ? ( - + {filterEndDate && filterEndDate.useFilter ? ( +
({ />
- ) : null } + ) : null} - {/* Filter status */} - {filterStatus && filterStatus.useFilter ? ( - - - Status - - - - ) : null } + {/* Filter status */} + {filterStatus && filterStatus.useFilter ? ( + + + Status + + + + ) : null} - {/* Export Report */} - - {exportReport && exportReport.useExport ? ( - - - - - - ) : null } - -
+ {/* Export Report */} + {exportReport && exportReport.useExport ? ( + + + + + + ) : null}
- {/* End Field 1 */} - {/* Field 2 */} - - {/* Table */} - - - {/* Table Header */} - - {/* End Table Header */} - {/* Table Body */} - - {loadings.isLoading && rows.length >= 1 ? ( - - - Loading . . . - - - ) : rows && rows.length >= 1 ? ( - rows.map((row, rowIndex) => ( - - {headCells && + + {/* End Field 1 */} + {/* Field 2 */} + + {/* Table */} + + + {/* Table Header */} + + {/* End Table Header */} + {/* Table Body */} + + {loadings.isLoading && rows && rows.length >= 1 ? ( + + + Loading . . . + + + ) : rows && rows.length >= 1 ? ( + rows.map((row, rowIndex) => ( + + {headCells && + //@ts-ignore + headCells.map((head, headIndex) => ( //@ts-ignore - headCells.map((head, headIndex) => ( - //@ts-ignore - - {row[head.id]} - - ))} - - )) - ) : ( - - - No Data Found - + + {row[head.id]} + + ))} - )} - - {/* End Table Body */} - - - {/* End Table */} + )) + ) : loadings.isLoading === false && rows && rows.length === 0 ? ( + + + No Data Found + + + ) : ( + + + Loading . . . + + + )} + + {/* End Table Body */} + + + {/* End Table */} - {/* Pagination */} + {/* Pagination */} + {paginations && ( ({ rowsPerPage={paginations.rowsPerPage} onRowsPerPageChange={onRowsPerPageChangeHandle} /> - {/* End Pagination */} - - {/* End Field 2 */} + )} + {/* End Pagination */}
+ {/* End Field 2 */} +
//
); } diff --git a/frontend/client-portal/src/components/nav-section/vertical/index.tsx b/frontend/client-portal/src/components/nav-section/vertical/index.tsx index de247933..41f0b915 100644 --- a/frontend/client-portal/src/components/nav-section/vertical/index.tsx +++ b/frontend/client-portal/src/components/nav-section/vertical/index.tsx @@ -32,16 +32,18 @@ export default function NavSectionVertical({ {navConfig.map((group, index) => ( - - {group.subheader} - + {group.subheader && ( + + {group.subheader} + + )} {group.items.map((list) => ( diff --git a/frontend/client-portal/src/layouts/dashboard/header/AccountPopover.tsx b/frontend/client-portal/src/layouts/dashboard/header/AccountPopover.tsx index 728b85ce..d492c054 100644 --- a/frontend/client-portal/src/layouts/dashboard/header/AccountPopover.tsx +++ b/frontend/client-portal/src/layouts/dashboard/header/AccountPopover.tsx @@ -1,31 +1,30 @@ import { useState } from 'react'; // @mui import { alpha } from '@mui/material/styles'; -import { Box, Divider, Typography, Stack, MenuItem, Avatar } from '@mui/material'; +import { Box, Divider, Typography, MenuItem, Avatar } from '@mui/material'; // components import MenuPopover from '../../../components/MenuPopover'; import { IconButtonAnimate } from '../../../components/animate'; import { useNavigate } from 'react-router-dom'; import useAuth from '../../../hooks/useAuth'; -import useLocalStorage from '../../../hooks/useLocalStorage'; import { enqueueSnackbar } from 'notistack'; // ---------------------------------------------------------------------- -const MENU_OPTIONS = [ - { - label: 'Home', - linkTo: '/', - }, - { - label: 'Profile', - linkTo: '/', - }, - { - label: 'Settings', - linkTo: '/', - }, -]; +// const MENU_OPTIONS = [ +// { +// label: 'Home', +// linkTo: '/', +// }, +// { +// label: 'Profile', +// linkTo: '/', +// }, +// { +// label: 'Settings', +// linkTo: '/', +// }, +// ]; // ---------------------------------------------------------------------- @@ -67,10 +66,7 @@ export default function AccountPopover() { }), }} > - {user && user.user.avatar_url && ()} + - { user ? user.user.full_name ?? 'Hi, ' : 'Hi, '} + {`Hi, ${user?.user?.full_name || 'User'}`} - { user ? user.user.email : 'Please Wait'} + {user ? user.user.email : 'Please Wait'} diff --git a/frontend/client-portal/src/layouts/dashboard/header/CorporatePopover.tsx b/frontend/client-portal/src/layouts/dashboard/header/CorporatePopover.tsx index c7b27186..de3fd2ef 100644 --- a/frontend/client-portal/src/layouts/dashboard/header/CorporatePopover.tsx +++ b/frontend/client-portal/src/layouts/dashboard/header/CorporatePopover.tsx @@ -14,24 +14,41 @@ type CorporateDataProps = { export default function CorporatePopover() { const { corporateValue, setCorporateValue } = useContext(UserCurrentCorporateContext); const [corporateData, setCorporateData] = useState([]); - //Check route in profile + const controller = new AbortController(); + const navigate = useNavigate(); const currentPathname = window.location.pathname; const desiredPart = currentPathname.split('/')[1]; const handleCorporateChange = (event: SelectChangeEvent) => { setCorporateValue(event.target.value as string); - if(desiredPart === 'user-profile') - { + if (desiredPart === 'user-profile') { navigate('/alarm-center'); } }; useEffect(() => { (async () => { - // @ts-ignore - const corporateManages = await axios.get(`/corporate-manage`); - setCorporateData(corporateManages.data); + try { + const corporateManages = await axios.get(`/corporate-manage`, { + signal: controller.signal, + }); + setCorporateData(corporateManages.data); + + const storageCorporateValue = corporateManages.data.find( + (item: { id: number }) => item.id === parseInt(corporateValue) + ); + + setCorporateValue( + storageCorporateValue ? storageCorporateValue.id : corporateManages.data[0].id + ); + } catch (error: any) { + console.error('Error fetching data:', error.message); + } + + return () => { + controller.abort(); + }; })(); }, []); diff --git a/frontend/client-portal/src/layouts/dashboard/header/index.tsx b/frontend/client-portal/src/layouts/dashboard/header/index.tsx index ec8fb38d..2c8b0e70 100644 --- a/frontend/client-portal/src/layouts/dashboard/header/index.tsx +++ b/frontend/client-portal/src/layouts/dashboard/header/index.tsx @@ -13,11 +13,7 @@ import Logo from '../../../components/Logo'; import Iconify from '../../../components/Iconify'; import { IconButtonAnimate } from '../../../components/animate'; // -import Searchbar from './Searchbar'; import AccountPopover from './AccountPopover'; -import LanguagePopover from './LanguagePopover'; -import ContactsPopover from './ContactsPopover'; -import NotificationsPopover from './NotificationsPopover'; import CorporatePopover from './CorporatePopover'; // ---------------------------------------------------------------------- @@ -46,11 +42,11 @@ const RootStyle = styled(AppBar, { width: `calc(100% - ${NAVBAR.DASHBOARD_COLLAPSE_WIDTH}px)`, }), ...(isOffset && { - height: HEADER.DASHBOARD_DESKTOP_OFFSET_HEIGHT, + height: HEADER.DASHBOARD_DESKTOP_HEIGHT, }), ...(verticalLayout && { width: '100%', - height: HEADER.DASHBOARD_DESKTOP_OFFSET_HEIGHT, + height: HEADER.DASHBOARD_DESKTOP_HEIGHT, backgroundColor: theme.palette.background.default, }), }, @@ -89,15 +85,15 @@ export default function DashboardHeader({ )} - + {/* */} - - - + {/* */} + {/* */} + {/* */} diff --git a/frontend/client-portal/src/layouts/dashboard/index.tsx b/frontend/client-portal/src/layouts/dashboard/index.tsx index e14aa6b7..d26e66da 100644 --- a/frontend/client-portal/src/layouts/dashboard/index.tsx +++ b/frontend/client-portal/src/layouts/dashboard/index.tsx @@ -60,9 +60,8 @@ export default function DashboardLayout() { const [corporateValue, setCorporateValue] = useLocalStorage( 'corporateValue', - user.corporate ? `${user.corporate.id}` : '' + user && user.corporate ? `${user.corporate.id}` : '' ); - const value = { corporateValue, setCorporateValue }; if (verticalLayout) { return ( @@ -96,7 +95,7 @@ export default function DashboardLayout() { } return ( - + - {user && user.user.avatar_url && ()} + {user && user.user.avatar_url && ( + + )} - { user ? user.user.full_name ?? 'Hi, ' : 'Hi, '} + {`Hi, ${user?.user?.full_name || 'User'}`} - { user ? user.user.email : 'Please Wait'} + {user ? user.user.email : 'Please Wait'} diff --git a/frontend/client-portal/src/pages/AlarmCenter/Index.tsx b/frontend/client-portal/src/pages/AlarmCenter/Index.tsx index be37af34..10d3e9f8 100644 --- a/frontend/client-portal/src/pages/AlarmCenter/Index.tsx +++ b/frontend/client-portal/src/pages/AlarmCenter/Index.tsx @@ -1,105 +1,15 @@ -/* ---------------------------------- react --------------------------------- */ -import { useState, SyntheticEvent } from 'react'; /* ---------------------------------- @mui ---------------------------------- */ -import { Box, Tabs, Tab, Container, Grid, Card } from '@mui/material'; -import { styled } from '@mui/material/styles'; +import { Container, Grid } from '@mui/material'; /* ------------------------------- components ------------------------------- */ import Page from '../../components/Page'; /* ---------------------------------- hooks --------------------------------- */ import useSettings from '../../hooks/useSettings'; import List from './List'; -import ServiceMonitoring from './ServiceMonitoring'; -import UserProfile from './UserProfile'; import HeaderBreadcrumbs from '../../components/HeaderBreadcrumbs'; -/* ------------------------------ tabs setting ------------------------------ */ - -/* ---------------------------------- types --------------------------------- */ - -interface TabPanelProps { - children?: React.ReactNode; - index: number; - value: number; -} - -interface StyledTabsProps { - children?: React.ReactNode; - value: number; - onChange: (event: React.SyntheticEvent, newValue: number) => void; -} - -interface StyledTabProps { - label: string; - icon?: string | React.ReactElement; -} - -/* -------------------------------- tab style ------------------------------- */ - -function TabPanel(props: TabPanelProps) { - const { children, value, index, ...other } = props; - - return ( - - ); -} - -function a11yProps(index: number) { - return { - id: `simple-tab-${index}`, - 'aria-controls': `simple-tabpanel-${index}`, - }; -} - -const StyledTabs = styled((props: StyledTabsProps) => )({ - backgroundColor: '#F4F6F8', - padding: '0 24px', - '& .MuiTabs-indicator': { - display: 'flex', - justifyContent: 'space-between', - backgroundColor: 'transparent', - }, - '& .MuiTabs-indicatorSpan': { - maxWidth: 40, - backgroundColor: '#635ee7', - }, -}); - -const StyledTab = styled((props: StyledTabProps) => )( - ({ theme }) => ({ - textTransform: 'none', - fontWeight: 600, - color: theme.palette.grey[600], - marginRight: '5rem', - '&.Mui-selected': { - color: '#212B36', - borderBottom: '2px solid ' + theme.palette.primary.main, - }, - '&:hover': { - color: '#212B36', - opacity: 1, - borderBottom: '2px solid ' + theme.palette.primary.main, - }, - }) -); - -/* -------------------------------------------------------------------------- */ - export default function Drugs() { const { themeStretch } = useSettings(); - const [value, setValue] = useState(0); - const handleChange = (event: SyntheticEvent, newValue: number) => { - setValue(newValue); - }; - return ( @@ -107,29 +17,12 @@ export default function Drugs() { heading={'Alarm Center'} links={[ { name: 'Case Management', href: '/alarm-center' }, - { name: 'Alarm Center', href: '/alarm-center'} + { name: 'Alarm Center', href: '/alarm-center' }, ]} /> - {/* */} - {/* - - - - - - */} - - - - {/* - - - - - */} - {/* */} + diff --git a/frontend/client-portal/src/pages/AlarmCenter/List.tsx b/frontend/client-portal/src/pages/AlarmCenter/List.tsx index f87fe1e5..edfa33d0 100644 --- a/frontend/client-portal/src/pages/AlarmCenter/List.tsx +++ b/frontend/client-portal/src/pages/AlarmCenter/List.tsx @@ -1,149 +1,23 @@ /* ---------------------------------- @mui ---------------------------------- */ -import { - Paper, - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TableRow, - TextField, - Stack, - Button, - TableSortLabel, - Box, - SelectChangeEvent, - Typography, - MenuItem -} from '@mui/material'; -import { visuallyHidden } from '@mui/utils'; +import { SelectChangeEvent, MenuItem } from '@mui/material'; /* ---------------------------------- axios --------------------------------- */ -// import axios from 'axios'; import axios from '../../utils/axios'; /* ---------------------------------- react --------------------------------- */ import { useContext, useEffect, useState } from 'react'; /* -------------------------------- component ------------------------------- */ -import Iconify from '../../components/Iconify'; -import BaseTablePagination from '../../components/BaseTablePagination'; import TableComponent from '../../components/Table'; -/* ---------------------------------- hooks --------------------------------- */ -import useMap from '../../hooks/useMap'; /* ---------------------------------- theme --------------------------------- */ -import palette from '../../theme/palette'; import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate'; import { HeadCell, Order, PaginationTableProps } from '../../@types/table'; -import { useSearchParams, useNavigate, Link } from 'react-router-dom'; +import { useSearchParams, useNavigate } from 'react-router-dom'; import { fDateSuffix } from '../../utils/formatTime'; import TableMoreMenu from '../../components/table/TableMoreMenu'; import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined'; import { enqueueSnackbar } from 'notistack'; - -import DetailDataMember from './ListMember'; import Label from '../../components/Label'; - - -/* ---------------------------------- types --------------------------------- */ - -// type PaginationTableProps = { -// current_page: number; -// from: number; -// last_page: number; -// links: []; -// path: string; -// per_page: number; -// to: number; -// total: number; -// }; - -// type DataTableProps = { -// fullName: string; -// memberId: string; -// service: string; -// start_date: string; -// end_date: string; -// status: boolean | number; -// }; - -// /* -------------------------------------------------------------------------- */ - -// /* -------------------------- enchanced table head -------------------------- */ - -// type Order = 'asc' | 'desc'; - -// interface HeadCell { -// id: string; -// label: string; -// } - -// const headCells: readonly HeadCell[] = [ -// { -// id: 'name', -// label: 'Name', -// }, -// { -// id: 'member_id', -// label: 'Member ID', -// }, -// { -// id: 'service', -// label: 'Service', -// }, -// { -// id: 'start_date', -// label: 'Start Date', -// }, -// { -// id: 'end_date', -// label: 'End Date', -// }, -// { -// id: 'status', -// label: 'Status', -// }, -// ]; - -// interface EnhancedTableProps { -// onRequestSort: (event: React.MouseEvent, property: string) => void; -// order: Order; -// orderBy: string; -// } - -// function EnhancedTableHead(props: EnhancedTableProps) { -// const { order, orderBy, onRequestSort } = props; -// const createSortHandler = (property: string) => (event: React.MouseEvent) => { -// onRequestSort(event, property); -// }; - -// return ( -// -// -// No -// {headCells.map((headCell) => ( -// -// -// {headCell.label} -// {orderBy === headCell.id ? ( -// -// {order === 'desc' ? 'sorted descending' : 'sorted ascending'} -// -// ) : null} -// -// -// ))} -// -// -// ); -// } +import { Stack } from '@mui/material'; /* -------------------------------------------------------------------------- */ @@ -177,8 +51,8 @@ export default function List() { /* -------------------------------------------------------------------------- */ /* ------------------------------ handle order ------------------------------ */ - const [order, setOrder] = useState('asc'); - const [orderBy, setOrderBy] = useState('fullName'); + const [order, setOrder] = useState('desc'); + const [orderBy, setOrderBy] = useState('request_date'); const orders = { order: order, @@ -237,7 +111,7 @@ export default function List() { handleSearchSubmit: handleSearchSubmit, }; - /* ------------------------------ handle filter ----------------------------- */ + /* ------------------------------ handle filter ----------------------------- */ const [statusValue, setStatusValue] = useState('all'); const [filterData, setStatusData] = useState([]); @@ -263,7 +137,7 @@ export default function List() { config: { label: 'Status', statusValue: statusValue, - filterData: filterData, + statusData: filterData, handleStatusChange: handleStatusChanges, }, }; @@ -273,13 +147,16 @@ export default function List() { const handleStartDateChanges = async (event: React.FormEvent) => { event.preventDefault(); - console.log(startDateValue) + if (startDateValue === '') { searchParams.delete('start_date'); const params = Object.fromEntries([...searchParams.entries()]); setAppliedParams(params); } else { - const params = Object.fromEntries([...searchParams.entries(), ['start_date', startDateValue]]); + const params = Object.fromEntries([ + ...searchParams.entries(), + ['start_date', startDateValue], + ]); setAppliedParams(params); } }; @@ -314,7 +191,7 @@ export default function List() { }; /* -------------------------------- handle export --------------------------- */ - const handleExportReport = async () => { + const handleExportReport = async () => { var filter = Object.fromEntries([...searchParams.entries()]); await axios @@ -339,8 +216,8 @@ export default function List() { startDate: startDateValue, endDate: endDateValue, status: statusValue, - handleExportReport: handleExportReport - } + handleExportReport: handleExportReport, + }; /* -------------------------------- headCell -------------------------------- */ const headCells: HeadCell[] = [ @@ -356,7 +233,7 @@ export default function List() { label: 'Name', isSort: true, }, - + { id: 'start_date', align: 'center', @@ -400,72 +277,34 @@ export default function List() { }); const status = [ - {"id": 1, "name": "Done" }, - {"id": 0, "name": "On Going" }, - - ] - setStatusData(status) + { id: 1, name: 'Done' }, + { id: 0, name: 'On Going' }, + ]; + setStatusData(status); setData( - response.data.data.map((obj: any) => { - return { - ...obj, - // memberId: - // // - // - // , - start_date: - - , - end_date: - - , - // status: - // obj.status === 1 ? ( - // - // Done - // - // ) : ( - // - // Ongoing - // - // ), - action: - ({ + ...obj, + start_date: , + end_date: , + action: ( + - navigate('member/'+obj.id )}> + navigate('member/' + obj.id)}> View - } /> - }; - }) + } + /> + ), + })) ); setPaginationTable(response.data); setRowsPerPage(response.data.per_page); - - if (searchParams.get('page')) { //@ts-ignore const currentPage = parseInt(searchParams.get('page')) - 1; @@ -488,7 +327,6 @@ export default function List() { loadings={loadings} params={params} searchs={searchs} - // filters={filters} filterStatus={filterStatus} filterStartDate={filterStartDate} filterEndDate={filterEndDate} diff --git a/frontend/client-portal/src/pages/AlarmCenter/ListMember.tsx b/frontend/client-portal/src/pages/AlarmCenter/ListMember.tsx index 193c33db..e95bf847 100644 --- a/frontend/client-portal/src/pages/AlarmCenter/ListMember.tsx +++ b/frontend/client-portal/src/pages/AlarmCenter/ListMember.tsx @@ -1,23 +1,5 @@ /* ---------------------------------- @mui ---------------------------------- */ -import { - Paper, - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TableRow, - TextField, - Stack, - Button, - TableSortLabel, - Box, - SelectChangeEvent, - Typography, - MenuItem, - Grid -} from '@mui/material'; -import { visuallyHidden } from '@mui/utils'; +import { Stack, Typography, MenuItem, Grid } from '@mui/material'; /* ---------------------------------- axios --------------------------------- */ // import axios from 'axios'; import axios from '../../utils/axios'; @@ -25,137 +7,27 @@ import axios from '../../utils/axios'; import { useContext, useEffect, useState } from 'react'; /* -------------------------------- component ------------------------------- */ -import Iconify from '../../components/Iconify'; -import BaseTablePagination from '../../components/BaseTablePagination'; import TableComponent from '../../components/Table'; import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos'; -/* ---------------------------------- hooks --------------------------------- */ -import useMap from '../../hooks/useMap'; /* ---------------------------------- theme --------------------------------- */ -import palette from '../../theme/palette'; import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate'; import { HeadCell, Order, PaginationTableProps } from '../../@types/table'; -import { useSearchParams, useNavigate, Link, useParams } from 'react-router-dom'; -import { fDateSuffix, fPostFormat } from '../../utils/formatTime'; +import { useSearchParams, useNavigate, useParams } from 'react-router-dom'; +import { fDateSuffix } from '../../utils/formatTime'; import TableMoreMenu from '../../components/table/TableMoreMenu'; import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined'; import Label from '../../components/Label'; - -/* ---------------------------------- types --------------------------------- */ - -type DataList = { - name: string; -}; - -// type PaginationTableProps = { -// current_page: number; -// from: number; -// last_page: number; -// links: []; -// path: string; -// per_page: number; -// to: number; -// total: number; -// }; - -// type DataTableProps = { -// fullName: string; -// memberId: string; -// service: string; -// start_date: string; -// end_date: string; -// status: boolean | number; -// }; - -// /* -------------------------------------------------------------------------- */ - -// /* -------------------------- enchanced table head -------------------------- */ - -// type Order = 'asc' | 'desc'; - -// interface HeadCell { -// id: string; -// label: string; -// } - -// const headCells: readonly HeadCell[] = [ -// { -// id: 'name', -// label: 'Name', -// }, -// { -// id: 'member_id', -// label: 'Member ID', -// }, -// { -// id: 'service', -// label: 'Service', -// }, -// { -// id: 'start_date', -// label: 'Start Date', -// }, -// { -// id: 'end_date', -// label: 'End Date', -// }, -// { -// id: 'status', -// label: 'Status', -// }, -// ]; - -// interface EnhancedTableProps { -// onRequestSort: (event: React.MouseEvent, property: string) => void; -// order: Order; -// orderBy: string; -// } - -// function EnhancedTableHead(props: EnhancedTableProps) { -// const { order, orderBy, onRequestSort } = props; -// const createSortHandler = (property: string) => (event: React.MouseEvent) => { -// onRequestSort(event, property); -// }; - -// return ( -// -// -// No -// {headCells.map((headCell) => ( -// -// -// {headCell.label} -// {orderBy === headCell.id ? ( -// -// {order === 'desc' ? 'sorted descending' : 'sorted ascending'} -// -// ) : null} -// -// -// ))} -// -// -// ); -// } - -/* -------------------------------------------------------------------------- */ - export default function List() { const navigate = useNavigate(); const { corporateValue } = useContext(UserCurrentCorporateContext); - const [data, setData] = useState([]); + const [data, setData] = useState({ + full_name: '', + paginations: [], + }); const { id } = useParams(); /* -------------------------------------------------------------------------- */ @@ -182,7 +54,7 @@ export default function List() { /* ------------------------------ handle order ------------------------------ */ const [order, setOrder] = useState('asc'); - const [orderBy, setOrderBy] = useState('fullName'); + const [orderBy, setOrderBy] = useState('admission_date'); const orders = { order: order, @@ -215,141 +87,10 @@ export default function List() { paginationTable: paginationTable, setPaginationTable: setPaginationTable, }; - /* -------------------------------------------------------------------------- */ - /* ------------------------------ handle search ----------------------------- */ - const [searchText, setSearchText] = useState(''); - const [name, setName] = useState(''); - - const handleSearchSubmit = async (event: React.FormEvent) => { - event.preventDefault(); - - if (searchText === '') { - searchParams.delete('search'); - const params = Object.fromEntries([...searchParams.entries()]); - setAppliedParams(params); - } else { - const params = Object.fromEntries([...searchParams.entries(), ['search', searchText]]); - setAppliedParams(params); - } - }; - - const searchs = { - useSearchs: false, - searchText: searchText, - setSearchText: setSearchText, - handleSearchSubmit: handleSearchSubmit, - }; - - /* ------------------------------ handle filter ----------------------------- */ - const [statusValue, setStatusValue] = useState('all'); - const [filterData, setStatusData] = useState([]); - - // handle status - const handleStatusChanges = (event: SelectChangeEvent) => { - setStatusValue(event.target.value as string); - - if (event.target.value === 'all') { - searchParams.delete('status'); - const params = Object.fromEntries([...searchParams.entries()]); - setAppliedParams(params); - } else { - const params = Object.fromEntries([ - ...searchParams.entries(), - ['status', event.target.value as string], - ]); - setAppliedParams(params); - } - }; - - const filterStatus = { - useFilter: false, - config: { - label: 'Status', - statusValue: statusValue, - filterData: filterData, - handleStatusChange: handleStatusChanges, - }, - }; - - // handle start date - const [startDateValue, setStartDateValue] = useState(''); - - const handleStartDateChanges = async (event: React.FormEvent) => { - event.preventDefault(); - console.log(startDateValue) - if (startDateValue === '') { - searchParams.delete('start_date'); - const params = Object.fromEntries([...searchParams.entries()]); - setAppliedParams(params); - } else { - const params = Object.fromEntries([...searchParams.entries(), ['start_date', startDateValue]]); - setAppliedParams(params); - } - }; - - const filterStartDate = { - useFilter: false, - startDate: startDateValue, - setStartDate: setStartDateValue, - handleStartDateChange: handleStartDateChanges, - }; - - // handle end date - const [endDateValue, setEndDateValue] = useState(''); - - const handleEndDateChanges = async (event: React.FormEvent) => { - event.preventDefault(); - if (endDateValue === '') { - searchParams.delete('end_date'); - const params = Object.fromEntries([...searchParams.entries()]); - setAppliedParams(params); - } else { - const params = Object.fromEntries([...searchParams.entries(), ['end_date', endDateValue]]); - setAppliedParams(params); - } - }; - - const filterEndDate = { - useFilter: false, - endDate: endDateValue, - setEndDate: setEndDateValue, - handleEndDateChange: handleEndDateChanges, - }; - - /* -------------------------------- handle export --------------------------- */ - const handleExportReport = async () => { - var filter = Object.fromEntries([...searchParams.entries()]); - - await axios - .get('claims/export', { params: filter }) - .then((res) => { - enqueueSnackbar('Data berhasil di Export', { - variant: 'success', - anchorOrigin: { horizontal: 'right', vertical: 'top' }, - }); - - document.location.href = res.data.data.file_url; - }) - .catch((err) => - enqueueSnackbar('Data Gagal di Export', { - variant: 'error', - anchorOrigin: { horizontal: 'right', vertical: 'top' }, - }) - ); - }; - - const exportReport = { - useExport: false, - startDate: startDateValue, - endDate: endDateValue, - status: statusValue, - handleExportReport: handleExportReport - } - /* -------------------------------- headCell -------------------------------- */ - const headCells: HeadCell[] = [ + const headCells: HeadCell[] = [ { id: 'admission_date', align: 'center', @@ -368,6 +109,12 @@ export default function List() { label: 'Code', isSort: true, }, + { + id: 'service_type', + align: 'center', + label: 'Service Type', + isSort: false, + }, { id: 'status', align: 'center', @@ -398,59 +145,45 @@ export default function List() { params: { ...parameters }, }); - const status = [ - {"id": 1, "name": "Done" }, - {"id": 0, "name": "On Going" }, + setSearchParams(parameters); - ] - setStatusData(status) - const datatable = response.data.data; - - // if (response.data.data.length > 0){ - // setIsLoading(true); - // } else { - // setIsLoading(false); - // } - - const dataName = response.data.data[0].fullName - setName(dataName) - setData( - datatable.map((obj: any) => { - return { - ...obj, - admission_date: - - , - discharge_date: - - , - status: - obj.status === 'Done' ? ( - - ) : ( - - ), - action: - ({ + ...obj, + admission_date: obj.admission_date ? ( + + ) : ( + '' + ), + discharge_date: obj.discharge_date ? ( + + ) : ( + '' + ), + status: + obj.status === 'Done' ? ( + + ) : ( + + ), + action: ( + - navigate('service-monitoring/'+obj.claim_id )}> + navigate('service-monitoring/' + obj.id)}> View - } /> - }; - }) - ); + } + /> + ), + })), + }); - setPaginationTable(response.data); - setRowsPerPage(response.data.per_page); - - + setPaginationTable(response.data.paginations); + setRowsPerPage(response.data.paginations.per_page); if (searchParams.get('page')) { //@ts-ignore @@ -463,17 +196,14 @@ export default function List() { setIsLoading(false); })(); }, [appliedParams, searchParams, order, orderBy, setSearchParams, corporateValue]); - console.log(loadings); + return ( - - - - navigate(`/alarm-center`)} - sx={{ cursor: 'pointer' }} - /> + + + + navigate(`/alarm-center`)} sx={{ cursor: 'pointer' }} /> - {name} + {data.full_name} @@ -481,24 +211,14 @@ export default function List() { - - - - ); } diff --git a/frontend/client-portal/src/pages/AlarmCenter/ServiceMonitoring.tsx b/frontend/client-portal/src/pages/AlarmCenter/ServiceMonitoring.tsx index 288f41ee..238caca4 100644 --- a/frontend/client-portal/src/pages/AlarmCenter/ServiceMonitoring.tsx +++ b/frontend/client-portal/src/pages/AlarmCenter/ServiceMonitoring.tsx @@ -3,8 +3,6 @@ import { Box, Tabs, Tab, - IconButton, - Container, Grid, Card, Stack, @@ -14,32 +12,38 @@ import { TableBody, Table, TableRow, - Link, + MenuItem, + Skeleton, + List, + ListSubheader, + ListItem, + ListItemText, + ListItemButton, + Divider, } from '@mui/material'; import { styled } from '@mui/material/styles'; -import DownloadIcon from '@mui/icons-material/Download'; +import { Download as DownloadIcon, Circle as CircleIcon, TableView } from '@mui/icons-material'; // components import Page from '../../components/Page'; -import Iconify from '../../components/Iconify'; // utils -import useSettings from '../../hooks/useSettings'; import { useState, SyntheticEvent, useContext, useEffect } from 'react'; import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate'; import { useNavigate, useParams } from 'react-router-dom'; import axios from '../../utils/axios'; -import { fDate, fDateSuffix, fDateTime, fDateTimeSuffix } from '../../utils/formatTime'; - +import { fDateBirth, fDateSuffix, fDateTime } from '../../utils/formatTime'; import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos'; import TimelineItem, { timelineItemClasses } from '@mui/lab/TimelineItem'; -import { Timeline, TimelineConnector, TimelineContent, TimelineDot, TimelineSeparator } from '@mui/lab'; -import Select from '../../theme/overrides/Select'; +import { + Timeline, + TimelineConnector, + TimelineContent, + TimelineDot, + TimelineSeparator, +} from '@mui/lab'; import TableMoreMenu from '../../components/table/TableMoreMenu'; -import { MenuItem } from '@mui/material'; import Label from '../../components/Label'; -// sections -// import ListTable from '../../sections/claimreports/ListTable'; -// import ClaimStatusCard from '../../sections/claimreports/ClaimStatusCard'; +import { fSplit } from '../../utils/formatNumber'; interface TabPanelProps { children?: React.ReactNode; @@ -56,14 +60,9 @@ function TabPanel(props: TabPanelProps) { hidden={value !== index} id={`simple-tabpanel-${index}`} aria-labelledby={`simple-tab-${index}`} - // style={{ backgroundColor: '#F9FAFB' }} {...other} > - {value === index && ( - - {children} - - )} + {value === index && children} ); } @@ -75,8 +74,6 @@ function a11yProps(index: number) { }; } - - interface StyledTabsProps { children?: React.ReactNode; value: number; @@ -101,465 +98,924 @@ interface StyledTabProps { icon?: string | React.ReactElement; } - const StyledTab = styled((props: StyledTabProps) => )( ({ theme }) => ({ - textTransform: 'none', - fontWeight: 500, - fontSize: theme.typography.pxToRem(20), - color: '#637381', + fontWeight: 600, + fontSize: '14px', + color: theme.palette.grey[600], maxWidth: '15%', flex: 1, margin: '0 !important', '&.Mui-selected': { - color: '#212B36', + color: theme.palette.grey[900], }, '&:hover': { - color: '#212B36', + color: theme.palette.grey[900], opacity: 1, }, }) ); -type Data = { - id: number, - company_name: string, - member_name: string, - member_code: string, - member_id: number, - phone: string, - email: string, - birth_date: string, - symptoms: string, - sign: string, - main_diagnose: string, - main_diagnose_code: string, - comparative_diagnosis: string, - comparative_diagnosis_code: string, - service_name: string, - benefit_name: string, - hospital: string, - admission_date: string, - discharge_date: string, - dialy_monitoring: DailyMonitoring[], - laboratorium_result: LaboratoriumResult[], - -} - -type DailyMonitoring = { - date: string, - time: string, - status: string, - subject_title: string, - body_temperature: string, - sistole: string, - diastole: string, - respiration_rate: string, - analisis_title: string, - Perencanaan: string, - -} - -type LaboratoriumResult = { - datetime: string, - reimbursement_code: string, - examination: string, - location: string, - files: string, -} +type ServiceMonitoringProps = { + companyName: string; + serviceCode: string; + memberId: string; + fullName: string; + dateOfBirth: string; + phoneNumber: string; + email: string; + symptoms: string; + sign: string; + mainDiagnose: string; + comparativeDiagnosis: string; + serviceName: string; + benefits: { + amountIncurred: number; + amountApproved: number; + amountNotAprroved: number; + excessPaid: number; + description: string; + name: string; + }[]; + benefitTotal: { + totalIncurred: number; + totalApprove: number; + totalNotApprove: number; + totalExcess: number; + }; + hospital: string; + admissionDate: string; + dischargeDate: string; + dailyMonitorings: Record< + string, + Array<{ + time: string; + status: string; + subject: string; + bodyTemperature: string; + sistole: string; + diastole: string; + respirationRate: string; + analysis: string; + complaints: string; + plans: { + type: number; + plan: string; + }[]; + }> + >; + laboratoriumResults: Record< + string, + Array<{ + code: string; + date: string; + examination: string; + location: string; + }> + >; +}; export default function ServiceMonitoring() { - const { themeStretch } = useSettings(); const navigate = useNavigate(); + const controller = new AbortController(); const [value, setValue] = useState(0); + const [loading, setLoading] = useState(false); const handleChange = (event: SyntheticEvent, newValue: number) => { setValue(newValue); }; - const [data, setData] = useState(null); - const [corporate, setCorporate] = useState(); + const [data, setData] = useState(null); const { corporateValue } = useContext(UserCurrentCorporateContext); - const { id } = useParams(); - + const { memberId, requestLogId } = useParams(); useEffect(() => { (async () => { + try { + setLoading(true); - // await new Promise((resolve) => setTimeout(resolve, 250)); + const response = await axios.get(`${corporateValue}/service-monitoring/${requestLogId}`, { + signal: controller.signal, + }); - const response = await axios.get(`${corporateValue}/service-monitoring/${id}`); - setData(response.data.data); + setData(response.data.data); + + if (response.data.data.serviceCode !== 'IP') { + setValue(1); + } + } catch (error: any) { + console.error('Error fetching data:', error.message); + } finally { + setLoading(false); + } })(); + + return () => { + controller.abort(); + }; }, [corporateValue]); - - function handleDownloadClick(fileUrl: string) { - const tempLink = document.createElement('a'); - tempLink.href = fileUrl; - tempLink.setAttribute('download', 'nama-file-yang-diunduh.pdf'); // Ganti 'nama-file-yang-diunduh.pdf' sesuai kebutuhan - tempLink.style.display = 'none'; - document.body.appendChild(tempLink); - tempLink.click(); - document.body.removeChild(tempLink); - } return ( - - - - navigate(`/alarm-center/member/${data.member_id}}`)} - sx={{ cursor: 'pointer' }} - /> - - Service Monitoring - - - - - {/* Item 1 */} - - - - - Employee Profiles - - - - - Company Name - {data?.company_name} - + + + + navigate(`/alarm-center/member/${memberId}}`)} + sx={{ cursor: 'pointer' }} + /> + + Service Monitoring + + + + + {/* Item 1 */} + + + + + + {loading ? : 'Employee Profile'} + + + + + + + {loading ? : 'Company Name'} + - - - Member ID - {data?.member_code || 'Loading...'} - + + + {loading ? ( + + ) : data && data.companyName ? ( + data.companyName + ) : ( + '-' + )} + - - - - - Full Name - {data?.member_name} - + + + + + {loading ? : 'Member ID'} + - - - Date of Birth - {data?.birth_date ? fDateSuffix(data?.birth_date) : '-' || 'Loading...'} - + + + {loading ? ( + + ) : data && data.memberId ? ( + data.memberId + ) : ( + '-' + )} + - - - - - Phone Number - {data?.phone} - + + + + + {loading ? : 'Full Name'} + - - - Email - {data?.email || 'Loading...'} - + + + {loading ? ( + + ) : data && data.fullName ? ( + data.fullName + ) : ( + '-' + )} + - - + + + + + {loading ? : 'Date of Birth'} + + + + + {loading ? ( + + ) : data && data.dateOfBirth ? ( + fDateBirth(data.dateOfBirth) + ) : ( + '-' + )} + + + + + + + {loading ? : 'Phone Number'} + + + + + {loading ? ( + + ) : data && data.phoneNumber ? ( + data.phoneNumber + ) : ( + '-' + )} + + + + + + + {loading ? : 'Email'} + + + + + {loading ? ( + + ) : data && data.email ? ( + data.email + ) : ( + '-' + )} + + + + + + + + + + + + + + {loading ? : 'Diagnose Summary'} + + + + + + + {loading ? : 'Symptoms'} + + + + + {loading ? ( + + ) : data && data.symptoms ? ( + data.symptoms + ) : ( + '-' + )} + + + + + + + {loading ? : 'Sign'} + + + + + {loading ? ( + + ) : data && data.sign ? ( + data.sign + ) : ( + '-' + )} + + + + + + + {loading ? : 'Main Diagnose'} + + + + + {loading ? ( + + ) : data && data.mainDiagnose ? ( + data.mainDiagnose + ) : ( + '-' + )} + + + + + + + {loading ? ( + + ) : ( + 'Comparative Diagnosis' + )} + + + + + {loading ? ( + + ) : data && data.comparativeDiagnosis ? ( + data.comparativeDiagnosis + ) : ( + '-' + )} + + + + + - {/* Item 2 */} - - - - - Diagnose Summary - - - - - Symptoms - {data?.symptoms} - + + + + + + {loading ? : 'Services'} + + + + + + + {loading ? : 'Service Name'} + + + + + {loading ? ( + + ) : data && data.serviceName ? ( + data.serviceName + ) : ( + '-' + )} + + - - - Sign - {data?.sign || 'Loading...'} - + + + + {loading ? : 'Benefits'} + + + + + {loading ? ( + + ) : data && data.benefits && data.benefits.length > 0 ? ( + data.benefits.map((benefitValue, benefitIndex) => ( + + + {benefitIndex + 1 + `. ` + benefitValue.name} + + + } + key={benefitIndex} + > + + + + + Amount Incurred : Rp. {fSplit(benefitValue.amountApproved)} + + + + + + + + Amount Approved : Rp. {fSplit(benefitValue.amountApproved)} + + + + + + + + Amount Not Approved : Rp. {fSplit(benefitValue.amountNotAprroved)} + + + + + + + + Excess Paid : Rp. {fSplit(benefitValue.excessPaid)} + + + + + + + + Description : Rp. {fSplit(benefitValue.description)} + + + + + )) + ) : ( + + - + + )} + + - - - Main Diagnosis - - {data?.main_diagnose} - - - + + + + {loading ? : 'Benefits Total'} + + + + + {loading ? : 'Total Incurred : Rp. '} + {loading ? ( + + ) : data && data.benefitTotal ? ( + fSplit(data.benefitTotal.totalIncurred) + ) : ( + '-' + )} + + + {loading ? : 'Total Approve : Rp. '} + {loading ? ( + + ) : data && data.benefitTotal ? ( + fSplit(data.benefitTotal.totalApprove) + ) : ( + '-' + )} + + + {loading ? : 'Total Not Approve : Rp.'} + {loading ? ( + + ) : data && data.benefitTotal ? ( + fSplit(data.benefitTotal.totalNotApprove) + ) : ( + '-' + )} + + + {loading ? : 'Total Excess : Rp.'} + {loading ? ( + + ) : data && data.benefitTotal ? ( + fSplit(data.benefitTotal.totalExcess) + ) : ( + '-' + )} + + - - - Comparative Diagnosis - - {data?.comparative_diagnosis} - - - + + + + {loading ? : 'Hospital'} + + + + + {loading ? ( + + ) : data && data.hospital ? ( + data.hospital + ) : ( + '-' + )} + + - - - - - + + + + {loading ? : 'Admission Date'} + + + + + {loading ? ( + + ) : data && data.admissionDate ? ( + fDateSuffix(data.admissionDate) + ) : ( + '-' + )} + + - - + + + + {loading ? : 'Discharge Date'} + + + + + {loading ? ( + + ) : data && data.dischargeDate ? ( + fDateSuffix(data.dischargeDate) + ) : ( + '-' + )} + + + + + - {/* Item 3 */} - - - - - Services - - - - - Code - {data?.service_name} - - - - - Benefit Name - {data?.benefit_name || 'Loading...'} - - - - - Hospital - {data?.hospital} - - - - - Admission Date - {data?.admission_date ? fDateSuffix(data?.admission_date) : '-'} - - - - - Discharge Date - { data?.discharge_date ? fDateSuffix(data?.discharge_date) : '-'} - - - - + + {/* + + + Benefit Item + + + + */} + + {loading ? ( + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + {data && data.dailyMonitorings ? ( + - {data?.dialy_monitoring.length > 0 ? data?.dialy_monitoring.map((row, index) => ( - - - - - - - {row.date ? fDateSuffix(row.date) : '-'} - - - - - -
- - - - Subject - {row.subject_title} - - - - - Objektif - - - - - Body Temperature - - - - - {row.body_temperature} - - - - - - - Sistole - - - - - {row.sistole} - - - - - - - Diastole - - - - - {row.diastole} - - - - - - - Respiration Rate - - - - - {row.respiration_rate} - - - - - Analysis - - - - - {row.analisis_title} - - - - - Perencanaan - - - - -
    - {row.Perencanaan.length > 0 ? row.Perencanaan.map((r, index) => ( -
  • {r}
  • - )) :
  • -
  • } -
-
-
-
-
- -
-
-
-
- )) : - - No Data Found - - } -
-
-
- -
- - - - - {data?.laboratorium_result.length > 0 ? data?.laboratorium_result.map((row, index) => ( - - - {row[index]?.datetime ? fDateSuffix(row[index].datetime) : ''} - {row.length > 0 ? row.map((list, i) => ( - - - - - - Date - Examination - Location - - - - - - - - - {list.examination} - {list.location} - - handleDownloadClick(list.file)} > - - Download - - - } /> - - -
+ }} + > + {data && + data.dailyMonitorings && + Object.keys(data.dailyMonitorings).length > 0 && + Object.keys(data.dailyMonitorings).map((date, dateIndex) => ( + + + + + + + + {date ? date : '-'} + + {data.dailyMonitorings[date].map( + (dailyMonitoring, dailyMonitoringIndex) => ( + + + + + + + + + + Subject + + {dailyMonitoring.subject + ? dailyMonitoring.subject + : '-'} + + + + + + + Objektif + + + + + + + Body Temperature + + + + + + + {dailyMonitoring.bodyTemperature + ? dailyMonitoring.bodyTemperature + : '-'} + + + + + + + + Sistole + + + + + + {dailyMonitoring.sistole + ? dailyMonitoring.sistole + : '-'} + + + + + + + + Diastole + + + + + + {dailyMonitoring.diastole + ? dailyMonitoring.diastole + : '-'} + + + + + + + + + Respiration Rate + + + + + + + {dailyMonitoring.respirationRate + ? dailyMonitoring.respirationRate + : '-'} + + + + + + + + Complaints + + + + + + {dailyMonitoring.complaints + ? dailyMonitoring.complaints + : '-'} + + + + + + + Analysis + + + + + + + {dailyMonitoring.analysis + ? dailyMonitoring.analysis + : '-'} + + + + + + + Perencanaan + + + + + + {data.dailyMonitorings ? ( +
    + {dailyMonitoring.plans.length > 0 && + dailyMonitoring.plans.map((plan, planIndex) => ( +
  • {plan.plan}
  • + ))} +
+ ) : ( + '-' + )} +
+
+
+
+
- )) : Data Not Found} -
-
- )) : - - Data Not Found - - } -
-
-
-
-
+ ) + )} + + + ))} + + ) : ( + + No Data Found + + )} + + + + + + {data && + data.laboratoriumResults && + Object.keys(data.laboratoriumResults).length > 0 ? ( + Object.keys(data.dailyMonitorings).map((date, dateIndex) => ( + + + {date ? date : '-'} + {data.laboratoriumResults[date].map( + (laboratoriumResult, laboratoriumResultIndex) => ( + + + + + + Date + Examination + Location + {/* */} + + + + + + + + + {laboratoriumResult.examination + ? laboratoriumResult.examination + : '-'} + + + {laboratoriumResult.location + ? laboratoriumResult.location + : '-'} + + {/* + handleDownloadClick(laboratoriumResult.file)} + > + + Download + + + } + /> */} + + +
+
+ ) + )} +
+
+ )) + ) : ( + + No Data Found + + )} +
+
+ + )} +
); } diff --git a/frontend/client-portal/src/pages/AlarmCenter/UserProfile.tsx b/frontend/client-portal/src/pages/AlarmCenter/UserProfile.tsx index 0c7a740b..45f3f9eb 100644 --- a/frontend/client-portal/src/pages/AlarmCenter/UserProfile.tsx +++ b/frontend/client-portal/src/pages/AlarmCenter/UserProfile.tsx @@ -39,15 +39,12 @@ export default function UserProfile() { }); }, []); -// console.log('data', data); + // console.log('data', data); return ( - {/* navigate()}> - - */} Profil Peserta @@ -74,7 +71,7 @@ export default function UserProfile() { {/* Item 2 */} - + diff --git a/frontend/client-portal/src/pages/ClaimSubmit/Index.tsx b/frontend/client-portal/src/pages/ClaimSubmit/Index.tsx index e00f32b5..5b813534 100644 --- a/frontend/client-portal/src/pages/ClaimSubmit/Index.tsx +++ b/frontend/client-portal/src/pages/ClaimSubmit/Index.tsx @@ -95,8 +95,6 @@ export default function Drugs() { setIsLoading: setIsLoading, }; - - /* ------------------------------ handle params ----------------------------- */ const [searchParams, setSearchParams] = useSearchParams(); const [appliedParams, setAppliedParams] = useState({}); @@ -121,7 +119,6 @@ export default function Drugs() { setOrderBy: setOrderBy, }; - /* ---------------------------- Get Current Date ---------------------------- */ const current = new Date(); const date = fDateSuffix(current); @@ -220,11 +217,7 @@ export default function Drugs() { const parameters = Object.keys(appliedParams).length !== 0 ? appliedParams - : Object.fromEntries([ - ...searchParams.entries(), - ['order', orders.order], - ['orderBy', orders.orderBy], - ]); + : Object.fromEntries([...searchParams.entries()]); // const claim = await axios.get(`${corporateValue}/members`, { // params: { ...parameters, type: 'claim-report' }, @@ -242,32 +235,39 @@ export default function Drugs() { return ( + heading={'Claim Submit'} + links={[ + { name: 'Case Management', href: '/dashboard' }, + { + name: 'Claim Submit', + href: '/claim-submit', + }, + ]} + /> - Select Employee + + {' '} + Select Employee + - - Submission Date - {date} + + + Submission Date + + + {date} + + openDialog={true} + setOpenDialog={false} + title={{ name: 'te' }} + /> diff --git a/frontend/client-portal/src/pages/Corporate/Index.tsx b/frontend/client-portal/src/pages/Corporate/Index.tsx index c5cdf266..6b389088 100644 --- a/frontend/client-portal/src/pages/Corporate/Index.tsx +++ b/frontend/client-portal/src/pages/Corporate/Index.tsx @@ -1,139 +1,31 @@ -/* ---------------------------------- react --------------------------------- */ -import { useState, SyntheticEvent } from 'react'; /* ---------------------------------- @mui ---------------------------------- */ -import { Box, Tabs, Tab, Container, Grid, Card } from '@mui/material'; -import { styled } from '@mui/material/styles'; +import { Container, Grid } from '@mui/material'; /* ------------------------------- components ------------------------------- */ import Page from '../../components/Page'; /* ---------------------------------- hooks --------------------------------- */ import useSettings from '../../hooks/useSettings'; import List from './List'; -import ServiceMonitoring from './ServiceMonitoring'; -import UserProfile from './UserProfile'; import HeaderBreadcrumbs from '../../components/HeaderBreadcrumbs'; -import TableMoreMenu from '../../components/table/TableMoreMenu'; - -/* ------------------------------ tabs setting ------------------------------ */ - -/* ---------------------------------- types --------------------------------- */ - -interface TabPanelProps { - children?: React.ReactNode; - index: number; - value: number; -} - -interface StyledTabsProps { - children?: React.ReactNode; - value: number; - onChange: (event: React.SyntheticEvent, newValue: number) => void; -} - -interface StyledTabProps { - label: string; - icon?: string | React.ReactElement; -} - -/* -------------------------------- tab style ------------------------------- */ - -function TabPanel(props: TabPanelProps) { - const { children, value, index, ...other } = props; - - return ( - - ); -} - -function a11yProps(index: number) { - return { - id: `simple-tab-${index}`, - 'aria-controls': `simple-tabpanel-${index}`, - }; -} - -const StyledTabs = styled((props: StyledTabsProps) => )({ - backgroundColor: '#F4F6F8', - padding: '0 24px', - '& .MuiTabs-indicator': { - display: 'flex', - justifyContent: 'space-between', - backgroundColor: 'transparent', - }, - '& .MuiTabs-indicatorSpan': { - maxWidth: 40, - backgroundColor: '#635ee7', - }, -}); - -const StyledTab = styled((props: StyledTabProps) => )( - ({ theme }) => ({ - textTransform: 'none', - fontWeight: 600, - color: theme.palette.grey[600], - marginRight: '5rem', - '&.Mui-selected': { - color: '#212B36', - borderBottom: '2px solid ' + theme.palette.primary.main, - }, - '&:hover': { - color: '#212B36', - opacity: 1, - borderBottom: '2px solid ' + theme.palette.primary.main, - }, - }) -); - -/* -------------------------------------------------------------------------- */ export default function Drugs() { const { themeStretch } = useSettings(); - const [value, setValue] = useState(0); - const handleChange = (event: SyntheticEvent, newValue: number) => { - setValue(newValue); - }; - return ( + heading={'Corporate'} + links={[ + { name: 'Dashboard', href: '/dashboard' }, + { + name: 'Corporates', + href: '/corporates', + }, + ]} + /> - {/* */} - {/* - - - - - - */} - {/* */} - - {/* */} - {/* - - - - - */} - {/* */} + diff --git a/frontend/client-portal/src/pages/Corporate/List.tsx b/frontend/client-portal/src/pages/Corporate/List.tsx index c6fb0a18..39acc938 100644 --- a/frontend/client-portal/src/pages/Corporate/List.tsx +++ b/frontend/client-portal/src/pages/Corporate/List.tsx @@ -1,21 +1,5 @@ /* ---------------------------------- @mui ---------------------------------- */ -import { - Paper, - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TableRow, - TextField, - Stack, - Button, - TableSortLabel, - Typography, - Box, - MenuItem, -} from '@mui/material'; -import { visuallyHidden } from '@mui/utils'; +import { Stack, Button, Typography, MenuItem } from '@mui/material'; /* ---------------------------------- axios --------------------------------- */ // import axios from 'axios'; import axios from '../../utils/axios'; @@ -23,129 +7,19 @@ import axios from '../../utils/axios'; import { useContext, useEffect, useState } from 'react'; /* -------------------------------- component ------------------------------- */ -import Iconify from '../../components/Iconify'; -import BaseTablePagination from '../../components/BaseTablePagination'; import TableComponent from '../../components/Table'; - -/* ---------------------------------- hooks --------------------------------- */ -import useMap from '../../hooks/useMap'; /* ---------------------------------- theme --------------------------------- */ -import palette from '../../theme/palette'; import { UserCurrentCorporateContext } from '../../contexts/UserCurrentCorporate'; -import { HeadCell, Order, PaginationTableProps } from '../../@types/table'; -import { useSearchParams, useNavigate, Link } from 'react-router-dom'; +import { HeadCell } from '../../@types/table'; +import { useNavigate } from 'react-router-dom'; import TableMoreMenu from '../../components/table/TableMoreMenu'; import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined'; - -/* ---------------------------------- types --------------------------------- */ - -// type PaginationTableProps = { -// current_page: number; -// from: number; -// last_page: number; -// links: []; -// path: string; -// per_page: number; -// to: number; -// total: number; -// }; - -// type DataTableProps = { -// fullName: string; -// memberId: string; -// service: string; -// start_date: string; -// end_date: string; -// status: boolean | number; -// }; - -// /* -------------------------------------------------------------------------- */ - -// /* -------------------------- enchanced table head -------------------------- */ - -// type Order = 'asc' | 'desc'; - -// interface HeadCell { -// id: string; -// label: string; -// } - -// const headCells: readonly HeadCell[] = [ -// { -// id: 'name', -// label: 'Name', -// }, -// { -// id: 'member_id', -// label: 'Member ID', -// }, -// { -// id: 'service', -// label: 'Service', -// }, -// { -// id: 'start_date', -// label: 'Start Date', -// }, -// { -// id: 'end_date', -// label: 'End Date', -// }, -// { -// id: 'status', -// label: 'Status', -// }, -// ]; - -// interface EnhancedTableProps { -// onRequestSort: (event: React.MouseEvent, property: string) => void; -// order: Order; -// orderBy: string; -// } - -// function EnhancedTableHead(props: EnhancedTableProps) { -// const { order, orderBy, onRequestSort } = props; -// const createSortHandler = (property: string) => (event: React.MouseEvent) => { -// onRequestSort(event, property); -// }; - -// return ( -// -// -// No -// {headCells.map((headCell) => ( -// -// -// {headCell.label} -// {orderBy === headCell.id ? ( -// -// {order === 'desc' ? 'sorted descending' : 'sorted ascending'} -// -// ) : null} -// -// -// ))} -// -// -// ); -// } - -/* -------------------------------------------------------------------------- */ - export default function List() { const navigate = useNavigate(); - const { corporateValue } = useContext(UserCurrentCorporateContext); + const controller = new AbortController(); const [data, setData] = useState([]); @@ -159,196 +33,101 @@ export default function List() { setIsLoading: setIsLoading, }; - /* ------------------------------ handle params ----------------------------- */ - const [searchParams, setSearchParams] = useSearchParams(); - const [appliedParams, setAppliedParams] = useState({}); - - const params = { - searchParams: searchParams, - setSearchParams: setSearchParams, - appliedParams: appliedParams, - setAppliedParams: setAppliedParams, - }; - /* -------------------------------------------------------------------------- */ - - /* ------------------------------ handle order ------------------------------ */ - const [order, setOrder] = useState('asc'); - const [orderBy, setOrderBy] = useState('fullName'); - - const orders = { - order: order, - setOrder: setOrder, - orderBy: orderBy, - setOrderBy: setOrderBy, - }; - /* -------------------------------------------------------------------------- */ - - /* ---------------------------- handle pagination --------------------------- */ - const [page, setPage] = useState(0); - const [rowsPerPage, setRowsPerPage] = useState(10); - - const [paginationTable, setPaginationTable] = useState({ - current_page: 0, - from: 0, - last_page: 0, - links: [], - path: '', - per_page: 0, - to: 0, - total: 0, - }); - - const paginations = { - page: page, - setPage: setPage, - rowsPerPage: rowsPerPage, - setRowsPerPage: setRowsPerPage, - paginationTable: paginationTable, - setPaginationTable: setPaginationTable, - }; - - /* -------------------------------------------------------------------------- */ - - /* ------------------------------ handle search ----------------------------- */ - const [searchText, setSearchText] = useState(''); - - const handleSearchSubmit = async (event: React.FormEvent) => { - event.preventDefault(); - - if (searchText === '') { - searchParams.delete('search'); - const params = Object.fromEntries([...searchParams.entries()]); - setAppliedParams(params); - } else { - const params = Object.fromEntries([...searchParams.entries(), ['search', searchText]]); - setAppliedParams(params); - } - }; - - const searchs = { - useSearchs: false, - searchText: searchText, - setSearchText: setSearchText, - handleSearchSubmit: handleSearchSubmit, - }; - /* -------------------------------- headCell -------------------------------- */ const headCells: HeadCell[] = [ { id: 'code', align: 'left', label: 'Code', - isSort: true, + isSort: false, }, { id: 'name', align: 'left', label: 'Name', - isSort: true, + isSort: false, }, { id: 'active', align: 'center', label: 'Status', - isSort: true, + isSort: false, }, { id: 'action', align: 'center', label: '', - isSort: true, + isSort: false, }, - ]; /* -------------------------------------------------------------------------- */ useEffect(() => { (async () => { - setIsLoading(true); + try { + setIsLoading(true); - await new Promise((resolve) => setTimeout(resolve, 250)); + const [response] = await Promise.all([ + axios.get(`${corporateValue}/corporate`, { signal: controller.signal }), + ]); - const parameters = - Object.keys(appliedParams).length !== 0 - ? appliedParams - : Object.fromEntries([...searchParams.entries(), ['order', order], ['orderBy', orderBy]]); - - const response = await axios.get(`${corporateValue}/corporate`, { - params: { ...parameters }, - }); - - setData( - response.data.data.map((obj: any) => { - return { + setData( + response.data.data.map((obj: any) => ({ ...obj, active: - obj.active === 1 ? ( - - Active - - ) : ( - + obj.active === 1 ? ( + + Active + + ) : ( + + ), + action: ( + + navigate(`/corporate/edit`)}> + + Edit + + navigate(`/corporate/view`)}> + + View + + + } + /> ), - action: - - navigate(`/corporate/edit`)}> - - Edit - - navigate(`/corporate/view`)}> - - View - - - } /> - , - }; - }) - ); + })) + ); - setPaginationTable(response.data); - setRowsPerPage(response.data.per_page); - - - - if (searchParams.get('page')) { - //@ts-ignore - const currentPage = parseInt(searchParams.get('page')) - 1; - - paginationTable.current_page = currentPage; - setPage(currentPage); + setIsLoading(false); + } catch (error: any) { + console.error('Error fetching data:', error.message); } - setIsLoading(false); + return () => { + controller.abort(); + }; })(); - }, [appliedParams, searchParams, order, orderBy, setSearchParams, corporateValue]); + }, [corporateValue]); return ( - + ); } diff --git a/frontend/client-portal/src/pages/Corporate/ServiceMonitoring.tsx b/frontend/client-portal/src/pages/Corporate/ServiceMonitoring.tsx index 5fd6e12c..07784f5f 100644 --- a/frontend/client-portal/src/pages/Corporate/ServiceMonitoring.tsx +++ b/frontend/client-portal/src/pages/Corporate/ServiceMonitoring.tsx @@ -121,14 +121,14 @@ export default function ServiceMonitoring() { const { corporateValue } = useContext(UserCurrentCorporateContext); const { id } = useParams(); const claimId = '2'; -// console.log('id', id); + // console.log('id', id); useEffect(() => { console.log('fetching data...'); axios .get('/data/' + id) .then((response) => { -// console.log('data fetched...', response.data); + // console.log('data fetched...', response.data); setData(response.data); }) .catch((error) => { @@ -138,7 +138,7 @@ export default function ServiceMonitoring() { axios .get('/corporate-manage/' + corporateValue) .then((response) => { -// console.log('corporate fetched...', response.data); + // console.log('corporate fetched...', response.data); setCorporate(response.data); }) .catch((error) => { @@ -146,15 +146,15 @@ export default function ServiceMonitoring() { }); }, []); -// console.log('Data:', data); + // console.log('Data:', data); const [encounterData, setEncounterData] = useState({}); useEffect(() => { -// console.log('fetching encounter data...'); + // console.log('fetching encounter data...'); axios .get('/claims/${claim_id}/encounters') .then((response) => { -// console.log('encounter data fetched...', response.data); + // console.log('encounter data fetched...', response.data); setEncounterData(response.data); }) .catch((error) => { diff --git a/frontend/client-portal/src/pages/Dashboard/Index.tsx b/frontend/client-portal/src/pages/Dashboard/Index.tsx index ae7f9712..ac304f66 100644 --- a/frontend/client-portal/src/pages/Dashboard/Index.tsx +++ b/frontend/client-portal/src/pages/Dashboard/Index.tsx @@ -1,22 +1,10 @@ // @mui -import { styled } from '@mui/material/styles'; -import { - Typography, - Container, - Grid, - Button, - IconButton, - LinearProgress, - linearProgressClasses, - SelectChangeEvent, -} from '@mui/material'; +import { Typography, Container, Grid, Button, SelectChangeEvent } from '@mui/material'; // hooks import useSettings from '../../hooks/useSettings'; // components import Page from '../../components/Page'; // theme -import CardNotification from '../../sections/dashboard/CardNotification'; -import CardPolicy from '../../sections/dashboard/CardPolicy'; import { useContext, useEffect, useState } from 'react'; import axios from '../../utils/axios'; import { Stack } from '@mui/system'; @@ -25,67 +13,13 @@ import Table from '../../components/Table'; import { HeadCell, Order, PaginationTableProps } from '../../@types/table'; import { useSearchParams } from 'react-router-dom'; import palette from '../../theme/palette'; -import { MoreVert as MoreVertIcon } from '@mui/icons-material'; -import { fSplit } from '../../utils/formatNumber'; - -const itemList = [ - { info: 'Mohon lengkapi dokumen Alison Born', date: 'Selasa, 13 Februari 23', time: '09:43 WIB' }, - { info: 'Mohon lengkapi dokumen Alison Born', date: 'Selasa, 13 Februari 23', time: '09:43 WIB' }, - { info: 'Mohon lengkapi dokumen Alison Born', date: 'Selasa, 13 Februari 23', time: '09:43 WIB' }, - { info: 'Mohon lengkapi dokumen Alison Born', date: 'Selasa, 13 Februari 23', time: '09:43 WIB' }, -]; - -/* ------------------------------ default data ------------------------------ */ -type DataMember = { - id: number; - fullName: string; - memberId: string; - limit: { - current: number; - total: number; - percentage: number; - }; - avatar?: { - url?: string; - title?: string; - }; -}; - -type CardPolicyProps = { - limit: { - myLimit: { - balance: number; - total: number; - percentage: number; - }; - lockLimit: { - balance: number; - percentage: number; - }; - }; - topUpLimit: { - companyName: string; - policyNumber: number; - totalMembers: number; - totalCases: number; - totalPersen: number; - myLimit: { - balance: number; - total: number; - percentage: number; - }; - maxTopUp: number; - }; - members?: DataMember[]; -}; -/* -------------------------------------------------------------------------- */ export default function Index() { const { themeStretch } = useSettings(); const { corporateValue } = useContext(UserCurrentCorporateContext); + const controller = new AbortController(); const [memberData, setMemberData] = useState([]); - const [policyData, setPolicyData] = useState(); /* -------------------------------------------------------------------------- */ /* setting up for the table */ @@ -97,20 +31,6 @@ export default function Index() { setIsLoading: setIsLoading, }; - /* ----------------------------- limit progress ----------------------------- */ - const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ - height: 10, - borderRadius: 6, - [`&.${linearProgressClasses.colorPrimary}`]: { - backgroundColor: '#D1F1F1', - }, - [`& .${linearProgressClasses.bar}`]: { - borderRadius: 6, - backgroundColor: theme.palette.primary.main, - }, - })); - /* -------------------------------------------------------------------------- */ - /* ------------------------------ handle params ----------------------------- */ const [searchParams, setSearchParams] = useSearchParams(); const [appliedParams, setAppliedParams] = useState({}); @@ -177,7 +97,7 @@ export default function Index() { }; const searchs = { - // useSearchs: true, + useSearchs: false, searchText: searchText, setSearchText: setSearchText, handleSearchSubmit: handleSearchSubmit, @@ -235,12 +155,6 @@ export default function Index() { label: 'Divisi', isSort: true, }, - // { - // id: 'limit', - // align: 'center', - // label: 'Limit', - // isSort: false, - // }, { id: 'status', align: 'center', @@ -256,54 +170,33 @@ export default function Index() { ]; /* -------------------------------------------------------------------------- */ - /* ----------------------------- handler action ----------------------------- */ - const handleAction = () => { - alert('action'); - }; - /* -------------------------------------------------------------------------- */ - useEffect(() => { (async () => { - setIsLoading(true); + try { + setIsLoading(true); - await new Promise((resolve) => setTimeout(resolve, 250)); + const parameters = + Object.keys(appliedParams).length !== 0 + ? appliedParams + : Object.fromEntries([ + ...searchParams.entries(), + ['order', order], + ['orderBy', orderBy], + ]); - const parameters = - Object.keys(appliedParams).length !== 0 - ? appliedParams - : Object.fromEntries([...searchParams.entries(), ['order', order], ['orderBy', orderBy]]); + const [divisionResponse, membersResponse] = await Promise.all([ + axios.get(`${corporateValue}/division`, { signal: controller.signal }), + axios.get(`${corporateValue}/members`, { + params: { ...parameters }, + signal: controller.signal, + }), + ]); - const corporatePolicyLimit = await axios.get(`${corporateValue}/policy`); - const corporateDivision = await axios.get(`${corporateValue}/division`); - const corporateMembers = await axios.get(`${corporateValue}/members`, { - params: { ...parameters }, - }); - -// console.log('member', corporateMembers); - const corporateTopUpLimit = await axios.get(`${corporateValue}/topup`); - - setSearchParams(parameters); - setPolicyData({ - limit: corporatePolicyLimit.data.data, - topUpLimit: corporateTopUpLimit.data.data, - }); - setDivisionData(corporateDivision.data); - setMemberData( - corporateMembers.data.data.map((obj: any) => { - return { + setSearchParams(parameters); + setDivisionData(divisionResponse.data); + setMemberData( + membersResponse.data.data.map((obj: any) => ({ ...obj, - // limit: ( - // - // - // - // {fSplit(obj.limit.current)} / {fSplit(obj.limit.total)} - // - // - // ), status: obj.status === 1 ? (