Merge remote-tracking branch 'origin/staging'
This commit is contained in:
0
Modules/Internal/Config/.gitkeep
Normal file → Executable file
0
Modules/Internal/Config/.gitkeep
Normal file → Executable file
0
Modules/Internal/Config/config.php
Normal file → Executable file
0
Modules/Internal/Config/config.php
Normal file → Executable file
0
Modules/Internal/Console/.gitkeep
Normal file → Executable file
0
Modules/Internal/Console/.gitkeep
Normal file → Executable file
0
Modules/Internal/Database/Migrations/.gitkeep
Normal file → Executable file
0
Modules/Internal/Database/Migrations/.gitkeep
Normal file → Executable file
0
Modules/Internal/Database/Seeders/.gitkeep
Normal file → Executable file
0
Modules/Internal/Database/Seeders/.gitkeep
Normal file → Executable file
0
Modules/Internal/Database/Seeders/InternalDatabaseSeeder.php
Normal file → Executable file
0
Modules/Internal/Database/Seeders/InternalDatabaseSeeder.php
Normal file → Executable file
0
Modules/Internal/Database/factories/.gitkeep
Normal file → Executable file
0
Modules/Internal/Database/factories/.gitkeep
Normal file → Executable file
0
Modules/Internal/Emails/SendVerifyEmail.php
Normal file → Executable file
0
Modules/Internal/Emails/SendVerifyEmail.php
Normal file → Executable file
0
Modules/Internal/Entities/.gitkeep
Normal file → Executable file
0
Modules/Internal/Entities/.gitkeep
Normal file → Executable file
0
Modules/Internal/Events/ForgetPassword.php
Normal file → Executable file
0
Modules/Internal/Events/ForgetPassword.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/.gitkeep
Normal file → Executable file
0
Modules/Internal/Http/Controllers/.gitkeep
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/AppointmentController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/AppointmentController.php
Normal file → Executable file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Internal\Http\Controllers\Api;
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\AuditTrail;
|
||||
use Illuminate\Contracts\Support\Renderable;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Modules\Internal\Transformers\AuditTrailResource;
|
||||
|
||||
class AuditTrailController extends Controller {
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
* @return Renderable
|
||||
*/
|
||||
public function index(Request $request, $id)
|
||||
{
|
||||
$audittrails = AuditTrail::query()
|
||||
->where('model', '=', $request->model)
|
||||
->where('model_id', '=', $id)
|
||||
// ->latest()
|
||||
->paginate(1000);
|
||||
return response()->json(Helper::paginateResources(AuditTrailResource::collection($audittrails)));
|
||||
}
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
* @return Renderable
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('internal::create');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
* @param Request $request
|
||||
* @return Renderable
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the specified resource.
|
||||
* @param int $id
|
||||
* @return Renderable
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$appointments = Appointment::query()
|
||||
->with('doctor.user', 'doctor.speciality', 'appointmentDetail', 'healthCare')
|
||||
->where('nID', $id)
|
||||
->first();
|
||||
return response()->json(new AppointmentResource($appointments));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
* @param int $id
|
||||
* @return Renderable
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
return view('internal::edit');
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
* @param Request $request
|
||||
* @param int $id
|
||||
* @return Renderable
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
* @param int $id
|
||||
* @return Renderable
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
?>
|
||||
0
Modules/Internal/Http/Controllers/Api/AuthController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/AuthController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/BenefitController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/BenefitController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/CityController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/CityController.php
Normal file → Executable file
162
Modules/Internal/Http/Controllers/Api/ClaimController.php
Normal file → Executable file
162
Modules/Internal/Http/Controllers/Api/ClaimController.php
Normal file → Executable file
@@ -13,6 +13,8 @@ use Illuminate\Contracts\Support\Renderable;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Modules\Internal\Transformers\ClaimShowResource;
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
use PDF;
|
||||
|
||||
class ClaimController extends Controller
|
||||
@@ -177,6 +179,7 @@ class ClaimController extends Controller
|
||||
$order = 1;
|
||||
$data = [];
|
||||
$claim->items()->forceDelete();
|
||||
$totalClaim = 0;
|
||||
foreach ($request->benefit_items as $benefitItem) {
|
||||
$benefit = Benefit::find($benefitItem['id']);
|
||||
if ($benefit) {
|
||||
@@ -189,10 +192,16 @@ class ClaimController extends Controller
|
||||
'nominal_dicover' => $benefitItem['biaya_disetujui'] ?? 0,
|
||||
'nominal_total' => $benefitItem['biaya_disetujui'] ?? 0,
|
||||
]);
|
||||
$totalClaim += $benefitItem['biaya_disetujui'];
|
||||
}
|
||||
|
||||
$order++;
|
||||
}
|
||||
|
||||
// Update total
|
||||
$claim->total_claim = $totalClaim;
|
||||
$claim->save();
|
||||
|
||||
return Helper::responseJson([], message: "Item Claim berhasil di update");
|
||||
}
|
||||
|
||||
@@ -285,4 +294,157 @@ class ClaimController extends Controller
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
public function dataClaimReport(Request $request){
|
||||
$file_name = 'Data Claim Report';
|
||||
// Membuat penulis entitas Spout
|
||||
$writer = WriterEntityFactory::createXLSXWriter();
|
||||
// Membuka penulis untuk menulis ke file
|
||||
$writer->openToFile(public_path('files/CorporatePlan&BenefitImportData.xlsx'));
|
||||
|
||||
// Sheet 1
|
||||
$writer->getCurrentSheet()->setName('Worksheet');
|
||||
$headers_map_to_table_fields = Claim::$listing_doc_headers;
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
||||
$writer->addRow($headerRow);
|
||||
|
||||
$claims = Claim::with([
|
||||
'member',
|
||||
'member.currentPolicy',
|
||||
'member.currentPlan',
|
||||
'member.currentCorporate',
|
||||
'diagnoses' => function ($diagnosis) {
|
||||
return $diagnosis->where('type', 'primary');
|
||||
},
|
||||
'diagnoses.icd',
|
||||
'plan',
|
||||
'benefit',
|
||||
'claimRequest',
|
||||
'claimRequest.service'
|
||||
])
|
||||
// ->latest()
|
||||
->get()->toArray();
|
||||
foreach ($claims as $index => $row){
|
||||
$rowData = [
|
||||
'', // Count of Usage
|
||||
$row['code'], // Claim Number
|
||||
'', // Insurar Code
|
||||
$row['member']['current_policy']? $row['member']['current_policy']['code'] : '', // Policy no
|
||||
$row['member']['current_corporate']? $row['member']['current_corporate']['name'] : '', // Corporate Name
|
||||
$row['member']['current_plan']? $row['member']['current_plan']['code'] : '', // Plan Code
|
||||
$row['member']['name'], // Member Name
|
||||
$row['member']['record_type'], // Member Status
|
||||
$row['member']['birth_date'], // Date of brith
|
||||
$row['member']['member_id'], // Member Number
|
||||
$row['member']['current_corporate']? $row['member']['current_corporate']['code'] : '', // Institution Code
|
||||
'', // Invoice Line Number
|
||||
$row['status'], // Claim Status
|
||||
'', // Admission Date
|
||||
'', // Discharge Date
|
||||
'', // Date Of Service
|
||||
'', // Place Of Service
|
||||
'', // Los
|
||||
'', // Provider code
|
||||
'', // Treating Doctor Code
|
||||
'', // Treating Doctor Name
|
||||
'', // Doctor Title
|
||||
$row['diagnoses']?$row['diagnoses'][0]['icd']['name']: '-', // Diagnosis
|
||||
$row['plan']?$row['plan']['service_code']: '', // Service Code
|
||||
$row['plan']?$row['plan']['type'] : '', // ServiceType
|
||||
$row['claim_request'] ? $row['claim_request']['service']['description'] : '', // ServiceDescription
|
||||
'', // UnitPrice
|
||||
'', // Quantity
|
||||
'', // Tarif
|
||||
'', // Claimable amount
|
||||
'', // Paid by customer
|
||||
'', // HD Disc
|
||||
'', // Doctor Notes
|
||||
'', // ConsultationID Date
|
||||
'', // Pharmacy Code
|
||||
'', // Pharmacy Name
|
||||
'', // Pharmacy Permit Number
|
||||
'', // Pharmacy Address
|
||||
'', // Pharmacy Phone number
|
||||
'', // Delivery Address
|
||||
'', // Claimable Status
|
||||
$row['claim_request'] ? $row['claim_request']['service']['description'] : '', // ServiceDescription, // Benefit Code
|
||||
];
|
||||
|
||||
$row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
|
||||
// $dataClaim = Claim::query
|
||||
// $dataPlans = Claim::query()
|
||||
// ->filter($request->all())
|
||||
// ->where('corporate_id', $corporate_id)
|
||||
// // ->whereHas('corporatePlan', function ($corporatePlan) use ($corporate_id) {
|
||||
// // $corporatePlan->where('corporate_id', $corporate_id);
|
||||
// // })
|
||||
// // ->with('corporatePlan')
|
||||
// ->orderBy('corporate_plan_id', 'asc')
|
||||
// ->get()->toArray();
|
||||
// foreach ($dataPlans as $index => $row){
|
||||
// $rowData = [
|
||||
// $row['service_code'], // Service
|
||||
// $row['corporate_plan_id'], // Plan
|
||||
// $row['code'], // Customer plans
|
||||
// $row['type'], // Plan Type
|
||||
// $row['start'], // Start Date of Plan
|
||||
// $row['end'], // End Date of Plan
|
||||
// $row['require_referral'], // Referral
|
||||
// $row['referral_source'], // Referral Source
|
||||
// $row['referral_duration'], // Referral Duration
|
||||
// $row['family_plan'], // Family Plan
|
||||
// $row['family_plan_share_rules'], // Family Sharing Overflow
|
||||
// $row['limit_rules'], // Plan Limit
|
||||
// $row['layer'], // Layer ID
|
||||
// $row['layer_conditions'], // Layer Condition
|
||||
// $row['budget_type'], // Budget Type
|
||||
// $row['budget_code'], // Budget Code
|
||||
// $row['budget_conditions'], // Budget Condition
|
||||
// $row['surgery_limit'], // Surgery
|
||||
// $row['non_surgery_limit'], // Non Surgery
|
||||
// $row['max_claim_limit'], // Max/Claim
|
||||
// $row['max_claim_count'], // Max Count of Claim
|
||||
// $row['area_limit'], // Area
|
||||
// $row['limit_shared_plans'], // Shared Plan
|
||||
// $row['limit_shared_plan_type'], // Shared Plan Type
|
||||
// $row['cashless_percentage'], // Cashless(%)
|
||||
// $row['reimbursement_percentage'], // Reimbursement(%)
|
||||
// $row['digital_percentage'], // Digital(%)
|
||||
// $row['co_share_m_percentage'], // CoShareM(%)
|
||||
// $row['co_share_s_percentage'], // CoShareS(%)
|
||||
// $row['co_share_c_percentage'], // CoShareC(%)
|
||||
// $row['cashless_deductible'], // Cashless Deductible
|
||||
// $row['cashless_deductible'], // Reimbursement Deductible
|
||||
// $row['digital_deductible'], // Digital Deductible
|
||||
// $row['co_share_m_deductible'], // DeductibleM
|
||||
// $row['co_share_s_deductible'], // DeductibleS
|
||||
// $row['co_share_c_deductible'], // DeductibleC
|
||||
// $row['co_share_deductible_condition'], // Co-share & Deductible Condition
|
||||
// $row['msc'], // MSC
|
||||
// $row['genders'], // Gender
|
||||
// $row['min_age'], // Min Age
|
||||
// $row['max_age'], // Max Age
|
||||
// $row['rule_of_excess'], // Rule of Excess
|
||||
// $row['max_excess_covered'], // Max Excess Covered
|
||||
// $row['prorate_type'], // Prorate Type
|
||||
// $row['prorate_lookup'], // Prorate Lookup
|
||||
// $row['currency'], // Currency
|
||||
// $row['max_surgery_reinstatement_days'], // Reinstatement days for Surgery NonSurgery
|
||||
// $row['max_surgery_periode_days'], // Max Periode of Surgery Non Surgery
|
||||
// ];
|
||||
// $row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
// $writer->addRow($row);
|
||||
|
||||
// }
|
||||
|
||||
$writer->close();
|
||||
|
||||
return Helper::responseJson([
|
||||
'file_name' => "Data Claim Report " . date('Y-m-d h:i:s'),
|
||||
"file_url" => url('files/CorporatePlan&BenefitImportData.xlsx')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
0
Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
Normal file → Executable file
1
Modules/Internal/Http/Controllers/Api/CorporateBenefitController.php
Normal file → Executable file
1
Modules/Internal/Http/Controllers/Api/CorporateBenefitController.php
Normal file → Executable file
@@ -34,6 +34,7 @@ class CorporateBenefitController extends Controller
|
||||
|
||||
$benefit = CorporateBenefit::findOrFail($benefit_id);
|
||||
$benefit->active = $request->active == '1';
|
||||
$benefit->reason = $request->reason;
|
||||
|
||||
if ($benefit->save()) {
|
||||
return response()->json([
|
||||
|
||||
192
Modules/Internal/Http/Controllers/Api/CorporateController.php
Normal file → Executable file
192
Modules/Internal/Http/Controllers/Api/CorporateController.php
Normal file → Executable file
@@ -19,6 +19,7 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
use App\Models\File;
|
||||
use Illuminate\Support\Facades\File as FacadesFile;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
@@ -81,6 +82,7 @@ class CorporateController extends Controller
|
||||
$request->validate([
|
||||
'code' => 'required|regex:/^[a-zA-Z0-9]+$/',
|
||||
'name' => 'required',
|
||||
'payor_id' => 'required',
|
||||
// 'logo' => 'required',
|
||||
'policy_code' => 'required_with:policy_id',
|
||||
'policy_total_premi' => 'required_with:policy_code',
|
||||
@@ -100,6 +102,7 @@ class CorporateController extends Controller
|
||||
if ($request->has('policy_code') && !empty($request->policy_code)) {
|
||||
$newCorporate->policies()->create([
|
||||
'code' => $request->policy_code ?? NULL,
|
||||
'payor_id' => $request->payor_id ?? NULL,
|
||||
'total_premi' => $request->policy_total_premi ?? NULL,
|
||||
'minimal_deposit_percentage' => $request->policy_minimal_deposit_percentage ?? NULL,
|
||||
'minimal_deposit_net' => $request->policy_minimal_deposit_net ?? NULL,
|
||||
@@ -301,6 +304,7 @@ class CorporateController extends Controller
|
||||
{
|
||||
$request->validate([
|
||||
'code' => 'required|regex:/^[a-zA-Z0-9]+$/',
|
||||
'payor_id' => 'required',
|
||||
'name' => 'required',
|
||||
'policy_code' => 'required_with:policy_id',
|
||||
'policy_total_premi' => 'required_with:policy_code',
|
||||
@@ -327,6 +331,7 @@ class CorporateController extends Controller
|
||||
['id' => $request->policy_id],
|
||||
[
|
||||
'code' => $request->policy_code ?? NULL,
|
||||
'payor_id' => $request->payor_id ?? NULL,
|
||||
'total_premi' => $request->policy_total_premi ?? NULL,
|
||||
'minimal_deposit_percentage' => $request->policy_minimal_deposit_percentage ?? NULL,
|
||||
'minimal_deposit_net' => $request->policy_minimal_deposit_net ?? NULL,
|
||||
@@ -455,7 +460,6 @@ class CorporateController extends Controller
|
||||
} else if ($sheet->getName() == 'Benefit') {
|
||||
$corporateService->handleBenefitRow($corporate, $row_data);
|
||||
}
|
||||
|
||||
// Write Success Result to File
|
||||
$import->addArrayToRow(array_merge($row_data, [
|
||||
'Ingest Code' => 200,
|
||||
@@ -519,5 +523,191 @@ class CorporateController extends Controller
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function dataPlanBenefit(Request $request, $corporate_id){
|
||||
|
||||
$file_name = 'Corporate Plan and Benefit';
|
||||
// Membuat penulis entitas Spout
|
||||
$writer = WriterEntityFactory::createXLSXWriter();
|
||||
// Membuka penulis untuk menulis ke file
|
||||
$writer->openToFile(public_path('files/CorporatePlan&BenefitImportData.xlsx'));
|
||||
|
||||
// Sheet 1
|
||||
$writer->getCurrentSheet()->setName('Plans');
|
||||
$headers_map_to_table_fields = Plan::$listing_doc_headers;
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
||||
$writer->addRow($headerRow);
|
||||
|
||||
$dataPlans = Plan::query()
|
||||
->filter($request->all())
|
||||
->where('corporate_id', $corporate_id)
|
||||
// ->whereHas('corporatePlan', function ($corporatePlan) use ($corporate_id) {
|
||||
// $corporatePlan->where('corporate_id', $corporate_id);
|
||||
// })
|
||||
// ->with('corporatePlan')
|
||||
->orderBy('corporate_plan_id', 'asc')
|
||||
->get()->toArray();
|
||||
foreach ($dataPlans as $index => $row){
|
||||
$rowData = [
|
||||
$row['service_code'], // Service
|
||||
$row['corporate_plan_id'], // Plan
|
||||
$row['code'], // Customer plans
|
||||
$row['type'], // Plan Type
|
||||
$row['start'], // Start Date of Plan
|
||||
$row['end'], // End Date of Plan
|
||||
$row['require_referral'], // Referral
|
||||
$row['referral_source'], // Referral Source
|
||||
$row['referral_duration'], // Referral Duration
|
||||
$row['family_plan'], // Family Plan
|
||||
$row['family_plan_share_rules'], // Family Sharing Overflow
|
||||
$row['limit_rules'], // Plan Limit
|
||||
$row['layer'], // Layer ID
|
||||
$row['layer_conditions'], // Layer Condition
|
||||
$row['budget_type'], // Budget Type
|
||||
$row['budget_code'], // Budget Code
|
||||
$row['budget_conditions'], // Budget Condition
|
||||
$row['surgery_limit'], // Surgery
|
||||
$row['non_surgery_limit'], // Non Surgery
|
||||
$row['max_claim_limit'], // Max/Claim
|
||||
$row['max_claim_count'], // Max Count of Claim
|
||||
$row['area_limit'], // Area
|
||||
$row['limit_shared_plans'], // Shared Plan
|
||||
$row['limit_shared_plan_type'], // Shared Plan Type
|
||||
$row['cashless_percentage'], // Cashless(%)
|
||||
$row['reimbursement_percentage'], // Reimbursement(%)
|
||||
$row['digital_percentage'], // Digital(%)
|
||||
$row['co_share_m_percentage'], // CoShareM(%)
|
||||
$row['co_share_s_percentage'], // CoShareS(%)
|
||||
$row['co_share_c_percentage'], // CoShareC(%)
|
||||
$row['cashless_deductible'], // Cashless Deductible
|
||||
$row['cashless_deductible'], // Reimbursement Deductible
|
||||
$row['digital_deductible'], // Digital Deductible
|
||||
$row['co_share_m_deductible'], // DeductibleM
|
||||
$row['co_share_s_deductible'], // DeductibleS
|
||||
$row['co_share_c_deductible'], // DeductibleC
|
||||
$row['co_share_deductible_condition'], // Co-share & Deductible Condition
|
||||
$row['msc'], // MSC
|
||||
$row['genders'], // Gender
|
||||
$row['min_age'], // Min Age
|
||||
$row['max_age'], // Max Age
|
||||
$row['rule_of_excess'], // Rule of Excess
|
||||
$row['max_excess_covered'], // Max Excess Covered
|
||||
$row['prorate_type'], // Prorate Type
|
||||
$row['prorate_lookup'], // Prorate Lookup
|
||||
$row['currency'], // Currency
|
||||
$row['max_surgery_reinstatement_days'], // Reinstatement days for Surgery NonSurgery
|
||||
$row['max_surgery_periode_days'], // Max Periode of Surgery Non Surgery
|
||||
];
|
||||
$row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
|
||||
// Menutup penulis
|
||||
|
||||
// Sheet 2
|
||||
$writer->addNewSheetAndMakeItCurrent();
|
||||
$writer->getCurrentSheet()->setName('Benefit');
|
||||
$headers_map_to_table_fields = CorporateBenefit::$listing_doc_headers;
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
||||
$writer->addRow($headerRow);
|
||||
|
||||
$dataBenfit = CorporateBenefit::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
->with('benefit', 'plan')
|
||||
->orderBy('plan_id', 'asc')
|
||||
->get()->toArray();
|
||||
// dd($dataBenfit);
|
||||
foreach($dataBenfit as $index => $row){
|
||||
$rowData = [
|
||||
$row['benefit']['service_code'] ?? NULL, // "Service",
|
||||
$row['plan']['type'] ?? NULL, // "Plan",
|
||||
$row['benefit']['code'] ?? NULL, // "Benefit Code",
|
||||
$row['benefit']['code'] ?? NULL, // "Customer Benefit Code",
|
||||
$row['benefit']['description'] ?? NULL, // "Detail Benefit",
|
||||
$row['budget'], // "ASO/Budget",
|
||||
$row['budget_conditions'], // "Budget Condition",
|
||||
$row['budget_code'], // "Budget Code",
|
||||
$row['primary_benefit_code'], // "Primary benefit",
|
||||
$row['benefit_mode'], // "Benefit Mode",
|
||||
$row['room_class_coverage'], // "Room Class",
|
||||
$row['max_bed_coverage'], // "Max Bed",
|
||||
$row['tolerance_parameter'], // "Tolerance Paramater",
|
||||
$row['max_room_class'], // "Max. Room Class",
|
||||
$row['limit_amount'], // "Limit Value",
|
||||
$row['area_limit'], // "Area",
|
||||
$row['shared_benefit'], // "Shared Benefit With",
|
||||
$row['shared_benefit_type'], // "Shared Benefit Type",
|
||||
$row['msc'], // "MSC",
|
||||
$row['genders'], // "Gender",
|
||||
$row['min_age'], // "Min Age",
|
||||
$row['max_age'], // "Max Age",
|
||||
$row['max_frequency_period'], // "Freq. Period",
|
||||
$row['daily_frequency'], // "Daily Frequency",
|
||||
$row['weekly_frequency'], // "Weekly Frequency",
|
||||
$row['monthly_frequency'], // "Monthly Frequency",
|
||||
$row['yearly_frequency'], // "Yearly Frequency",
|
||||
$row['custom_frequency_days'], // "Custom Duration",
|
||||
$row['custom_duration_value'], // "Custom Duration Value",
|
||||
NULL, // "Cashless, Reimbursement",
|
||||
$row['high_plan_factor'], // "High Plan Factor",
|
||||
$row['pre_post_treatment'], // "Pre Post Treatment",
|
||||
$row['pre_treatment_days'], // "Pre Treatment",
|
||||
$row['post_treatment_days'], // "Post Treatment",
|
||||
$row['layer_type_1'], // "Layer Type 1",
|
||||
$row['layer_value_1'], // "Layer Value 1",
|
||||
$row['layer_type_2'], // "Layer Type 2",
|
||||
$row['layer_value_2'], // "Layer Value 2",
|
||||
$row['cashless_percentage'], // "Cashless (%)",
|
||||
$row['reimbursement_percentage'], // "Reimburse (%)",
|
||||
$row['digital_percentage'], // "Digital (%)",
|
||||
$row['co_share_m_percentage'], // "CoShareM (%)",
|
||||
$row['co_share_s_percentage'], // "CoShareS (%)",
|
||||
$row['co_share_c_deductible'], // "CoShareC (%)",
|
||||
$row['cashless_deductible'], // "Cashless Deductible",
|
||||
$row['reimbursement_deductible'], // "Reimbursement Deductible",
|
||||
$row['digital_deductible'], // "Digital Deductible",
|
||||
$row['co_share_m_deductible'], // "DeductibleM",
|
||||
$row['co_share_s_deductible'], // "DeductibleS",
|
||||
$row['co_share_c_deductible'], // "DeductibleC",
|
||||
$row['prorate_type'], // "Prorate Type",
|
||||
$row['prorate_lookup'], // "Prorate Lookup",
|
||||
$row['max_days_for_disability'], // "Max Days for Disability",
|
||||
$row['max_period_for_disability'], // "Max Periode of Disability",
|
||||
$row['currency'], // "Currency",
|
||||
$row['show_benefit_item'], // "Show Benefit Item",
|
||||
$row['show_benefit_value'], // "Show Benefit Value",
|
||||
];
|
||||
$row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
|
||||
$writer->close();
|
||||
|
||||
return Helper::responseJson([
|
||||
'file_name' => "Data Corporate Plan & Benefit List " . date('Y-m-d h:i:s'),
|
||||
"file_url" => url('files/CorporatePlan&BenefitImportData.xlsx')
|
||||
]);
|
||||
}
|
||||
|
||||
public function corporateCode(Request $request){
|
||||
$corporates = Corporate::query()
|
||||
->when($request->search, function ($query, $search) {
|
||||
return $query->where('name', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('code', 'LIKE', '%' . $search . '%');
|
||||
})
|
||||
->with('currentPolicy', 'subCorporates')
|
||||
->withCount([
|
||||
'employees',
|
||||
'corporateBenefits',
|
||||
'corporatePlans',
|
||||
|
||||
// 'claims'
|
||||
])
|
||||
->where('active', 1)
|
||||
->get()
|
||||
->pluck('code');
|
||||
|
||||
return $corporates;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
0
Modules/Internal/Http/Controllers/Api/CorporateFormulariumController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/CorporateFormulariumController.php
Normal file → Executable file
162
Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
Normal file → Executable file
162
Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
Normal file → Executable file
@@ -6,6 +6,7 @@ use App\Exceptions\ImportRowException;
|
||||
use App\Helpers\Helper;
|
||||
use App\Http\Resources\MemberDataTableResource;
|
||||
use App\Models\Corporate;
|
||||
use App\Models\CorporateEmployee;
|
||||
use App\Models\Member;
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
@@ -45,11 +46,16 @@ class CorporateMemberController extends Controller
|
||||
// return $claim->used(now()->startOfYear(), now()->endOfYear());
|
||||
},
|
||||
'currentPlan',
|
||||
'currentPlan.benefits'
|
||||
'currentPlan.benefits' => function ($benefit) use ($corporate_id){
|
||||
return $benefit->where([
|
||||
'corporate_benefits.active' => 1,
|
||||
'corporate_benefits.corporate_id' => $corporate_id,
|
||||
// 'corporate_benefits.plan_id' => $corporate_id,
|
||||
]);
|
||||
}
|
||||
])
|
||||
->paginate()
|
||||
->appends($request->all());
|
||||
|
||||
return Helper::paginateResources(MemberDataTableResource::collection($members));
|
||||
}
|
||||
|
||||
@@ -63,6 +69,7 @@ class CorporateMemberController extends Controller
|
||||
|
||||
$member = Member::findOrFail($member_id);
|
||||
$member->active = $request->active == '1';
|
||||
$member->reason = $request->reason;
|
||||
|
||||
if ($member->save()) {
|
||||
return response()->json([
|
||||
@@ -179,11 +186,9 @@ class CorporateMemberController extends Controller
|
||||
$new_member_data[$headers_map_to_table_fields[$doc_headers_indexes[$header_index]]] = $cell->getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
|
||||
$rowResponse = $this->memberEnrollmentService->handleImportRow($corporate, $new_member_data);
|
||||
|
||||
// Write Success Result to File
|
||||
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRowWithResultFormat($rowResponse));
|
||||
$writer->addRow($singleRow);
|
||||
@@ -219,7 +224,6 @@ class CorporateMemberController extends Controller
|
||||
$writer->close();
|
||||
Storage::delete('temp/' . $file_name);
|
||||
// throw(404);
|
||||
|
||||
return [
|
||||
'total_success_row' => $imported_member_data,
|
||||
'total_failed_row' => count($failed_member_data),
|
||||
@@ -234,21 +238,145 @@ class CorporateMemberController extends Controller
|
||||
|
||||
public function generateLog(Request $request, $member_id)
|
||||
{
|
||||
$member = Member::findOrFail($member_id)
|
||||
->load([
|
||||
'currentPlan',
|
||||
'currentPolicy',
|
||||
'currentPlan.corporateBenefits' => function ($benefit) use ($request) {
|
||||
return $benefit->when($request->benefit_ids, function ($q, $ids) {
|
||||
return $q->whereIn('benefit_id', $ids);
|
||||
});
|
||||
},
|
||||
'currentPlan.corporateBenefits.benefit']);
|
||||
|
||||
$corporate_id = CorporateEmployee::where('member_id', $member_id)->value('corporate_id');
|
||||
// $member = Member::findOrFail($member_id)
|
||||
// ->load([
|
||||
// 'currentPlan',
|
||||
// 'currentPolicy',
|
||||
// 'currentPlan.corporateBenefits' => function ($benefit) use ($request) {
|
||||
// return $benefit->when($request->benefit_ids, function ($q, $ids) {
|
||||
|
||||
// $q->whereIn('benefit_id', $ids)
|
||||
// ->where([
|
||||
// 'corporate_benefits.active' => 1,
|
||||
// 'corporate_benefits.corporate_id' => $corporate_id,
|
||||
// ]);
|
||||
// });
|
||||
// },
|
||||
// // 'currentPlan.corporateBenefits.benefit'
|
||||
// ]);
|
||||
$member = Member::with([
|
||||
'currentPlan',
|
||||
'currentPolicy',
|
||||
'currentPlan.corporateBenefits' => function ($query) use ($request, $corporate_id) {
|
||||
$query->when($request->benefit_ids, function ($q, $ids) use ($corporate_id) {
|
||||
$q->whereIn('benefit_id', $ids)
|
||||
->where('active', 1)
|
||||
->where('corporate_id', $corporate_id);
|
||||
});
|
||||
},
|
||||
// 'currentPlan.corporateBenefits.benefit'
|
||||
])->findOrFail($member_id);
|
||||
|
||||
$dateOfAdmission = $request->date_of_admission ? Carbon::parse($request->date_of_admission) : now();
|
||||
|
||||
// return view('pdf.guaranted_leter', compact('member'));
|
||||
$pdf = PDF::loadView('pdf.guaranted_leter', compact(['member', 'dateOfAdmission']));
|
||||
return $pdf->download('Guaranted Letter - '.$member->full_name.'.pdf');
|
||||
}
|
||||
|
||||
public function generateMemberList(Request $request, $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')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
1
Modules/Internal/Http/Controllers/Api/CorporatePlanController.php
Normal file → Executable file
1
Modules/Internal/Http/Controllers/Api/CorporatePlanController.php
Normal file → Executable file
@@ -35,6 +35,7 @@ class CorporatePlanController extends Controller
|
||||
|
||||
$plan = CorporatePlan::findOrFail($plan_id);
|
||||
$plan->active = $request->active == '1';
|
||||
$plan->reason = $request->reason;
|
||||
|
||||
if ($plan->save()) {
|
||||
return response()->json([
|
||||
|
||||
4
Modules/Internal/Http/Controllers/Api/CorporateServiceController.php
Normal file → Executable file
4
Modules/Internal/Http/Controllers/Api/CorporateServiceController.php
Normal file → Executable file
@@ -136,6 +136,7 @@ class CorporateServiceController extends Controller
|
||||
|
||||
public function corporateServiceUpdate(Request $request, $corporate_id, $service_code)
|
||||
{
|
||||
// dd($request->all);
|
||||
// $corporate = Corporate::findOrFail($corporate_id);
|
||||
$corporateService = CorporateService::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
@@ -143,7 +144,8 @@ class CorporateServiceController extends Controller
|
||||
// ->with('configs', 'service')
|
||||
->first();
|
||||
$corporateService->fill([
|
||||
'status' => $request->status == 'active' ? 'active' : 'inactive'
|
||||
'status' => $request->status == 'active' ? 'active' : 'inactive',
|
||||
'reason' => $request->reason
|
||||
]);
|
||||
$corporateService->save();
|
||||
|
||||
|
||||
0
Modules/Internal/Http/Controllers/Api/DiagnosisController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DiagnosisController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DiagnosisExclusionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DiagnosisExclusionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DistrictController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DistrictController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DivisionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DivisionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DoctorController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DoctorController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DrugController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DrugController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/FormulariumController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/FormulariumController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/Linksehat/PaymentController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/Linksehat/PaymentController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/LivechatController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/LivechatController.php
Normal file → Executable file
8
Modules/Internal/Http/Controllers/Api/MemberController.php
Normal file → Executable file
8
Modules/Internal/Http/Controllers/Api/MemberController.php
Normal file → Executable file
@@ -13,10 +13,14 @@ class MemberController extends Controller
|
||||
* Display a listing of the resource.
|
||||
* @return Renderable
|
||||
*/
|
||||
public function index()
|
||||
public function index(Request $request)
|
||||
{
|
||||
return Member::query()
|
||||
->with('currentPlan')
|
||||
->when($request->search, function ($query, $search) {
|
||||
return $query->where('name', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('member_id', 'LIKE', '%' . $search . '%');
|
||||
})
|
||||
->with('currentPlan', 'currentCorporate')
|
||||
->paginate();
|
||||
}
|
||||
|
||||
|
||||
0
Modules/Internal/Http/Controllers/Api/OptionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/OptionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/OrganizationController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/OrganizationController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/PlanController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/PlanController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/ProvinceController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/ProvinceController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/SpecialityController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/SpecialityController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/VillageController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/VillageController.php
Normal file → Executable file
24
Modules/Internal/Http/Controllers/ClaimEncounterController.php
Normal file → Executable file
24
Modules/Internal/Http/Controllers/ClaimEncounterController.php
Normal file → Executable file
@@ -12,6 +12,7 @@ use Illuminate\Routing\Controller;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Internal\Transformers\EncounterResource;
|
||||
|
||||
|
||||
class ClaimEncounterController extends Controller
|
||||
{
|
||||
/**
|
||||
@@ -31,6 +32,13 @@ class ClaimEncounterController extends Controller
|
||||
{
|
||||
return view('internal::create');
|
||||
}
|
||||
public function getAllData()
|
||||
{
|
||||
$encounters = Encounter::with('claim.member')->get();
|
||||
|
||||
return Helper::responseJson(data: EncounterResource::collection($encounters), message: 'Data berhasil diambil');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
@@ -255,6 +263,22 @@ class ClaimEncounterController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function x`counters($claim_id)
|
||||
{
|
||||
$claim = Claim::findOrFail($claim_id);
|
||||
$encounters = $claim->encounters()->get();
|
||||
return response()->json($encounters);
|
||||
}
|
||||
|
||||
public function getEncounterData($encounter_id)
|
||||
{
|
||||
$encounter = Encounter::with('claim.member')->findOrFail($encounter_id);
|
||||
|
||||
return Helper::responseJson(data: EncounterResource::make($encounter), message: 'Data berhasil diambil');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
* @param int $id
|
||||
|
||||
0
Modules/Internal/Http/Controllers/InternalController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/InternalController.php
Normal file → Executable file
0
Modules/Internal/Http/Middleware/.gitkeep
Normal file → Executable file
0
Modules/Internal/Http/Middleware/.gitkeep
Normal file → Executable file
0
Modules/Internal/Http/Requests/.gitkeep
Normal file → Executable file
0
Modules/Internal/Http/Requests/.gitkeep
Normal file → Executable file
0
Modules/Internal/Listeners/SendVerifyEmail.php
Normal file → Executable file
0
Modules/Internal/Listeners/SendVerifyEmail.php
Normal file → Executable file
0
Modules/Internal/Notifications/NotifyVerifyEmail.php
Normal file → Executable file
0
Modules/Internal/Notifications/NotifyVerifyEmail.php
Normal file → Executable file
0
Modules/Internal/Providers/.gitkeep
Normal file → Executable file
0
Modules/Internal/Providers/.gitkeep
Normal file → Executable file
0
Modules/Internal/Providers/EventServiceProvider.php
Normal file → Executable file
0
Modules/Internal/Providers/EventServiceProvider.php
Normal file → Executable file
0
Modules/Internal/Providers/InternalServiceProvider.php
Normal file → Executable file
0
Modules/Internal/Providers/InternalServiceProvider.php
Normal file → Executable file
0
Modules/Internal/Providers/RouteServiceProvider.php
Normal file → Executable file
0
Modules/Internal/Providers/RouteServiceProvider.php
Normal file → Executable file
0
Modules/Internal/Resources/assets/.gitkeep
Normal file → Executable file
0
Modules/Internal/Resources/assets/.gitkeep
Normal file → Executable file
0
Modules/Internal/Resources/assets/js/app.js
Normal file → Executable file
0
Modules/Internal/Resources/assets/js/app.js
Normal file → Executable file
0
Modules/Internal/Resources/assets/sass/app.scss
Normal file → Executable file
0
Modules/Internal/Resources/assets/sass/app.scss
Normal file → Executable file
0
Modules/Internal/Resources/lang/.gitkeep
Normal file → Executable file
0
Modules/Internal/Resources/lang/.gitkeep
Normal file → Executable file
0
Modules/Internal/Resources/views/.gitkeep
Normal file → Executable file
0
Modules/Internal/Resources/views/.gitkeep
Normal file → Executable file
0
Modules/Internal/Resources/views/index.blade.php
Normal file → Executable file
0
Modules/Internal/Resources/views/index.blade.php
Normal file → Executable file
0
Modules/Internal/Resources/views/layouts/master.blade.php
Normal file → Executable file
0
Modules/Internal/Resources/views/layouts/master.blade.php
Normal file → Executable file
0
Modules/Internal/Routes/.gitkeep
Normal file → Executable file
0
Modules/Internal/Routes/.gitkeep
Normal file → Executable file
9
Modules/Internal/Routes/api.php
Normal file → Executable file
9
Modules/Internal/Routes/api.php
Normal file → Executable file
@@ -30,6 +30,7 @@ use Modules\Internal\Http\Controllers\Api\PlanController;
|
||||
use Modules\Internal\Http\Controllers\Api\ProvinceController;
|
||||
use Modules\Internal\Http\Controllers\Api\SpecialityController;
|
||||
use Modules\Internal\Http\Controllers\Api\VillageController;
|
||||
use Modules\Internal\Http\Controllers\Api\AuditTrailController;
|
||||
use Modules\Internal\Http\Controllers\ClaimEncounterController;
|
||||
|
||||
/*
|
||||
@@ -66,6 +67,9 @@ Route::prefix('internal')->group(function () {
|
||||
Route::get('corporates/import-document-example/{document_type}', [CorporateController::class, 'importDocumentExample']);
|
||||
Route::put('corporates/{corporate_id}/activation', [CorporateController::class, 'activation']);
|
||||
Route::post('corporates/{corporate_id}/import-plan-benefit', [CorporateController::class, 'importPlanBenefit']);
|
||||
Route::get('corporates/{corporate_id}/data-plan-benefit', [CorporateController::class, 'dataPlanBenefit']);
|
||||
Route::get('corporates/{corporate_id}/code', [CorporateController::class, 'corporateCode']);
|
||||
Route::get('corporates/{corporate_id}/payor_id', [CorporateController::class, 'corporatePayorId']);
|
||||
|
||||
Route::get('corporates/{corporate_id}/corporate-plans', [CorporatePlanController::class, 'index']);
|
||||
Route::post('corporates/{corporate_id}/corporate-plans', [CorporatePlanController::class, 'store']);
|
||||
@@ -91,6 +95,7 @@ Route::prefix('internal')->group(function () {
|
||||
Route::put('corporates/{corporate_id}/divisions/{id}', [DivisionController::class, 'update']);
|
||||
|
||||
Route::get('corporates/{corporate_id}/members', [CorporateMemberController::class, 'index']);
|
||||
Route::get('corporates/{corporate_id}/members/list', [CorporateMemberController::class, 'generateMemberList']);
|
||||
Route::post('corporates/{corporate_id}/members/import', [CorporateMemberController::class, 'import']);
|
||||
Route::put('members/{member_id}/activation', [CorporateMemberController::class, 'activation']);
|
||||
|
||||
@@ -113,6 +118,9 @@ Route::prefix('internal')->group(function () {
|
||||
// Route::get('corporates/{corporate_id}/diagnosis-exclusions', [DiagnosisExclusionController::class, 'index']);
|
||||
// Route::get('corporates/{corporate_id}/diagnosis-exclusions/import', [DiagnosisExclusionController::class, 'import']);
|
||||
|
||||
// Audittrail
|
||||
Route::get('audittrail/{corporate_id}', [AuditTrailController::class, 'index']);
|
||||
|
||||
Route::get('master/diagnosis', [DiagnosisController::class, 'index']);
|
||||
Route::get('master/diagnosis/search', [DiagnosisController::class, 'search']);
|
||||
Route::get('master/drugs', [DrugController::class, 'index']);
|
||||
@@ -136,6 +144,7 @@ Route::prefix('internal')->group(function () {
|
||||
Route::post('claims', [ClaimController::class, 'store']);
|
||||
Route::get('claims/{id}', [ClaimController::class, 'show']);
|
||||
Route::post('check-limit', [ClaimController::class, 'checkLimit']);
|
||||
Route::get('claims/1/data-claim', [ClaimController::class, 'dataClaimReport']);
|
||||
|
||||
Route::get('search-organizations', [OrganizationController::class, 'searchOrganization']);
|
||||
Route::get('search-specialities', [SpecialityController::class, 'searchSpeciality']);
|
||||
|
||||
0
Modules/Internal/Routes/web.php
Normal file → Executable file
0
Modules/Internal/Routes/web.php
Normal file → Executable file
176
Modules/Internal/Services/CorporateService.php
Normal file → Executable file
176
Modules/Internal/Services/CorporateService.php
Normal file → Executable file
@@ -6,27 +6,131 @@ use App\Exceptions\ImportRowException;
|
||||
use App\Models\Benefit;
|
||||
use App\Models\Corporate;
|
||||
use App\Models\CorporateBenefit;
|
||||
use App\Models\CorporatePolicy;
|
||||
use App\Models\Plan;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
|
||||
class CorporateService
|
||||
{
|
||||
protected function validatePlanRow($row)
|
||||
/*
|
||||
Refer to Coverage code :
|
||||
MEDIVAC = Medical evacuation
|
||||
MSO = Medical second opinion
|
||||
PAC = Personal Assistant Concierge
|
||||
OPDE = Outpatient Dental
|
||||
IP=Inpatient
|
||||
OP=Outpatient
|
||||
MA=Maternity
|
||||
ANC = Ante/Post Natal Care
|
||||
DE=Dental
|
||||
GL=Glasses
|
||||
SP=Special Treatment
|
||||
PF=Pooled Fund
|
||||
MCU=Medical Check Up
|
||||
KB-VACC = Family Planning/Vaccination
|
||||
LAB = Test Diagnostic
|
||||
PHAR = Pharmacy
|
||||
**/
|
||||
protected $service_code = ['MEDIVAC', 'MSO', 'PAC', 'OPDE', 'IP', 'OP', 'MA', 'ANC', 'DE', 'GL', 'SP', 'PF', 'MCU', 'KB-VACC', 'LAB', 'PHAR'];
|
||||
|
||||
protected function corporatePlansId($corporate_id){
|
||||
$plans = Plan::where('corporate_id', $corporate_id)->get()->toArray();
|
||||
$current_corporate_plans_id = [];
|
||||
if($plans){
|
||||
foreach($plans as $plan){
|
||||
array_push($current_corporate_plans_id,$plan['corporate_plan_id']);
|
||||
}
|
||||
}
|
||||
return $current_corporate_plans_id;
|
||||
}
|
||||
|
||||
protected function validatePlanRow($row, $corporate_id)
|
||||
{
|
||||
// $corporate_policy = CorporatePolicy::where('corporate_id', $corporateId)->get();
|
||||
$plans = Plan::where('corporate_id', $corporate_id)->get()->toArray();
|
||||
$current_corporate_plans = $this->corporatePlansId($corporate_id);
|
||||
|
||||
$plan_code = [1, 2, 3, 4];
|
||||
$prorate_type = [0, 1, 2];
|
||||
$family_plan = ['F', 'S', 'N'];
|
||||
|
||||
if (empty($row['service_code'])) {
|
||||
throw new ImportRowException(__('plan.RECORD_TYPE_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Service Code'
|
||||
] ), 0, null, $row);
|
||||
} else if (!in_array($row['service_code'], $this->service_code)){
|
||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
'attribute' => 'Service Code',
|
||||
'code' => $row['service_code']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (empty($row['corporate_plan_id'])) {
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Plan'
|
||||
]), 0, null, $row);
|
||||
} else if(!in_array($row['corporate_plan_id'], $current_corporate_plans)){
|
||||
// throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
// 'attribute' => 'Plans',
|
||||
// 'code' => $row['corporate_plan_id']
|
||||
// ]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (empty($row['code'])) {
|
||||
throw new ImportRowException(__('plan.CODE_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Customer Plan'
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (!in_array($row['type'], $plan_code)){
|
||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
'attribute' => 'Plan Type',
|
||||
'code' => $row['type']
|
||||
]), 0, null, $row);
|
||||
} else if ($row['type'] == 2 && $row['limit_rules'] != 999999999){
|
||||
throw new ImportRowException(__('plan.LIMIT_PLAN'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (empty($row['type'])) {
|
||||
throw new ImportRowException(__('plan.TYPE_REQUIRED'), 0, null, $row);
|
||||
// if (!empty($row['start'])) {
|
||||
// throw new ImportRowException(__('plan.REQUIRED', [
|
||||
// 'attribute' => 'Start Date of Plan'
|
||||
// ]), 0, null, $row);
|
||||
// }
|
||||
|
||||
// if (empty($row['type'])) {
|
||||
// throw new ImportRowException(__('plan.TYPE_REQUIRED'), 0, null, $row);
|
||||
// } else if (!in_array($row['type'],$plan_code)){
|
||||
// throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
// 'attribute' => 'Plan Type',
|
||||
// 'code' => $row['code']
|
||||
// ]), 0, null, $row);
|
||||
// }
|
||||
|
||||
if (!empty($row['family_plan']) && !in_array($row['family_plan'],$family_plan)) {
|
||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
'attribute' => 'Family Plan',
|
||||
'code' => $row['family_plan']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (!empty($row['prorate_type']) && !in_array($row['prorate_type'], $prorate_type)) {
|
||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
'attribute' => 'Prorate Type',
|
||||
'code' => $row['prorate_type']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (!empty($row['prorate_lookup']) && !in_array($row['prorate_lookup'], $prorate_type)) {
|
||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
'attribute' => 'Prorate Lookup',
|
||||
'code' => $row['prorate_lookup']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (empty($row['limit_rules'])) {
|
||||
throw new ImportRowException(__('plan.PLAN_LIMIT_REQUIRED'), 0, null, $row);
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
if (empty($row['msc'])) {
|
||||
@@ -34,12 +138,13 @@ class CorporateService
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function handlePlanRow(Corporate $corporate, $row)
|
||||
{
|
||||
try {
|
||||
$plan_data = $row;
|
||||
$this->validatePlanRow($plan_data, $corporate->id);
|
||||
$plan_data["corporate_id"] = $corporate->id;
|
||||
$this->validatePlanRow($plan_data);
|
||||
$plan = $corporate->plans()->updateOrCreate([
|
||||
'corporate_plan_id' => $plan_data['corporate_plan_id'],
|
||||
// 'active' => 0,
|
||||
@@ -51,43 +156,76 @@ class CorporateService
|
||||
}
|
||||
}
|
||||
|
||||
protected function validateBenefitRow($row)
|
||||
protected function validateBenefitRow($row, $corporate_id)
|
||||
{
|
||||
$max_frequence = 7;
|
||||
$budget_aso = [1,2];
|
||||
$current_corporate_plans = $this->corporatePlansId($corporate_id);
|
||||
if (empty($row['service_code'])) {
|
||||
throw new ImportRowException(__('benefit.SERVICE_CODE_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Service Code'
|
||||
]), 0, null, $row);
|
||||
} else if (!in_array($row['service_code'], $this->service_code)){
|
||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
'attribute' => 'Service Code',
|
||||
'code' => $row['service_code']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (empty($row['plan_code'])) {
|
||||
throw new ImportRowException(__('benefit.PLAN_CODE_REQUIRED'), 0, null, $row);
|
||||
} else if (!in_array($row['plan_code'], $current_corporate_plans)){
|
||||
// throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||
// 'attribute' => 'Plan',
|
||||
// 'code' => $row['plan_code']
|
||||
// ]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (empty($row['code'])) {
|
||||
throw new ImportRowException(__('benefit.BENEFIT_CODE_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Benefit Code'
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if (empty($row['corporate_benefit_code'])) {
|
||||
throw new ImportRowException(__('benefit.CUSTOMER_BENEFIT_CODE_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Customer Benefit Code'
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if (empty($row['description'])) {
|
||||
throw new ImportRowException(__('benefit.DESCRIPTION_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Description'
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if (empty($row['limit_amount'])) {
|
||||
throw new ImportRowException(__('benefit.LIMIT_AMOUNT_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Limit Amount'
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if (empty($row['msc'])) {
|
||||
throw new ImportRowException(__('benefit.MSC_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'MSC'
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if (empty($row['genders'])) {
|
||||
throw new ImportRowException(__('benefit.GENDER_REQUIRED'), 0, null, $row);
|
||||
throw new ImportRowException(__('plan.REQUIRED', [
|
||||
'attribute' => 'Gender'
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if (!empty($row['max_frequency_period']) && $row['max_frequency_period'] >= $max_frequence){ // jenis frequence
|
||||
throw new ImportRowException(__('plan.MAX_FREQUENCY'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (!empty($row['budget']) && !in_array($budget_aso)) {
|
||||
throw new ImportRowException(__('plan.MAX_FREQUENCY'), 0, null, $row);
|
||||
}
|
||||
}
|
||||
|
||||
public function handleBenefitRow(Corporate $corporate, $row)
|
||||
{
|
||||
|
||||
try {
|
||||
$benefit_data = $row;
|
||||
$this->validateBenefitRow($benefit_data, $corporate->id);
|
||||
$benefit_data["corporate_id"] = $corporate->id;
|
||||
$this->validateBenefitRow($benefit_data);
|
||||
|
||||
|
||||
$plan = $corporate->plans()
|
||||
->where('corporate_plan_id', $benefit_data['plan_code'])
|
||||
->first();
|
||||
@@ -101,7 +239,6 @@ class CorporateService
|
||||
], [
|
||||
'code' => $benefit_data['code'],
|
||||
'service_code' => $plan->service_code,
|
||||
'active' => 1,
|
||||
'description' => $benefit_data['description'],
|
||||
]);
|
||||
|
||||
@@ -112,7 +249,6 @@ class CorporateService
|
||||
|
||||
return $corporateBenefit;
|
||||
} catch (\Exception $e) {
|
||||
// dd($e->getMessage());
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
6
Modules/Internal/Services/ExclusionService.php
Normal file → Executable file
6
Modules/Internal/Services/ExclusionService.php
Normal file → Executable file
@@ -13,9 +13,9 @@ class ExclusionService
|
||||
{
|
||||
protected function validateDiagnosisExclusionRow($row)
|
||||
{
|
||||
// if (empty($row['service_code'])) {
|
||||
// throw new ImportRowException(__('plan.RECORD_TYPE_REQUIRED'), 0, null, $row);
|
||||
// }
|
||||
if (empty($row['service_code'])) {
|
||||
throw new ImportRowException(__('plan.REQUIRED'), 0, null, $row);
|
||||
}
|
||||
}
|
||||
|
||||
public function handleDiagnosisExclusionRow(Corporate $corporate, $row)
|
||||
|
||||
0
Modules/Internal/Services/FormulariumService.php
Normal file → Executable file
0
Modules/Internal/Services/FormulariumService.php
Normal file → Executable file
338
Modules/Internal/Services/MemberEnrollmentService.php
Normal file → Executable file
338
Modules/Internal/Services/MemberEnrollmentService.php
Normal file → Executable file
@@ -7,6 +7,7 @@ use App\Helpers\Helper;
|
||||
use App\Models\Corporate;
|
||||
use App\Models\CorporateEmployee;
|
||||
use App\Models\CorporateDivision;
|
||||
use App\Models\CorporatePolicy;
|
||||
use App\Models\CorporatePlan;
|
||||
use App\Models\Member;
|
||||
use App\Models\MemberPolicy;
|
||||
@@ -26,7 +27,7 @@ class MemberEnrollmentService
|
||||
"Payor ID" => "payor_id",
|
||||
"Member ID" => "member_id",
|
||||
"Mapping ID" => "principal_id",
|
||||
"Halodoc Member ID" => "halodoc_member_id",
|
||||
"LinkSehat Member ID" => "halodoc_member_id",
|
||||
"Corporate ID" => "corporate_id",
|
||||
"NIK" => "nik",
|
||||
"Division" => "division_name",
|
||||
@@ -50,7 +51,7 @@ class MemberEnrollmentService
|
||||
"Agent Code / intermediary code" => "agent_code",
|
||||
"Member Name" => "name",
|
||||
"Address1" => "address1",
|
||||
"Address 1" => "address1",
|
||||
// "Address 1" => "address1",
|
||||
"Address2" => "address2",
|
||||
"Address3" => "address3",
|
||||
"Address4" => "address4",
|
||||
@@ -90,12 +91,13 @@ class MemberEnrollmentService
|
||||
"Member Suspended" => "member_suspended",
|
||||
"Activation Date" => "activation_date",
|
||||
"Internal Use" => "internal_use_6",
|
||||
"Date Terminated" => "date_terminated",
|
||||
"StartNoClaim" => "start_no_claim",
|
||||
"EndNoClaim" => "end_no_claim",
|
||||
"Option Mode" => "option_mode",
|
||||
"Policy Inforce" => "policy_in_force",
|
||||
"Renewal activation date" => "renewal_activation_date",
|
||||
"Renewal Activation Date" => "renewal_activation_date",
|
||||
// "Renewal Activation Date" => "renewal_activation_date",
|
||||
"Ingestion Code" => "ingestion_code", // TODO I think this should not be here because if user uploading result then ingestion code and status will be filled
|
||||
"Ingestion Status" => "ingestion_status",
|
||||
];
|
||||
@@ -106,7 +108,7 @@ class MemberEnrollmentService
|
||||
"payor_id" => "Payor ID",
|
||||
"member_id" => "Member ID",
|
||||
"principal_id" => "Mapping ID",
|
||||
"halodoc_member_id" => "Halodoc Member ID",
|
||||
"halodoc_member_id" => "LinkSehat Member ID",
|
||||
"corporate_id" => "Corporate ID",
|
||||
"nik" => "NIK",
|
||||
"division_name" => "Division",
|
||||
@@ -129,7 +131,7 @@ class MemberEnrollmentService
|
||||
"agent_code" => "Agent Code / intermediary code",
|
||||
"name" => "Member Name",
|
||||
"address1" => "Address1",
|
||||
"address1" => "Address 1",
|
||||
// "address1" => "Address 1",
|
||||
"address2" => "Address2",
|
||||
"address3" => "Address3",
|
||||
"address4" => "Address4",
|
||||
@@ -168,17 +170,18 @@ class MemberEnrollmentService
|
||||
"start_no_claim" => "StartNoClaim",
|
||||
"end_no_claim" => "EndNoClaim",
|
||||
"option_mode" => "Option Mode",
|
||||
"renewal_activation_date" => "Renewal Activation Date",
|
||||
// "renewal_activation_date" => "Renewal Activation Date",
|
||||
"ingestion_code" => "Ingestion Code",
|
||||
"ingestion_status" => "Ingestion Status",
|
||||
];
|
||||
|
||||
public $result_doc_headers = [
|
||||
"Record Mode",
|
||||
"Record Type",
|
||||
"Payor ID",
|
||||
"Member ID",
|
||||
"Mapping ID",
|
||||
"Halodoc Member ID",
|
||||
"LinkSehat Member ID",
|
||||
"Corporate ID",
|
||||
"NIK",
|
||||
"Division",
|
||||
@@ -201,7 +204,7 @@ class MemberEnrollmentService
|
||||
"Internal Use",
|
||||
"Member Name",
|
||||
"Address1",
|
||||
"Address 1",
|
||||
// "Address 1",
|
||||
"Address2",
|
||||
"Address3",
|
||||
"Address4",
|
||||
@@ -239,11 +242,83 @@ class MemberEnrollmentService
|
||||
"StartNoClaim",
|
||||
"EndNoClaim",
|
||||
"Option Mode",
|
||||
"Renewal Activation Date",
|
||||
// "Renewal Activation Date",
|
||||
"Ingestion Code",
|
||||
"Ingestion Status",
|
||||
];
|
||||
|
||||
public $listing_doc_headers = [
|
||||
"Record Mode",
|
||||
"Record Type",
|
||||
"Payor ID",
|
||||
"Member ID",
|
||||
"Mapping ID",
|
||||
"LinkSehat Member ID",
|
||||
"Corporate ID",
|
||||
"NIK",
|
||||
"Division",
|
||||
"Branch Code",
|
||||
"Bank Info",
|
||||
"Language",
|
||||
"Type of work",
|
||||
"Race",
|
||||
"Policy Number",
|
||||
// "Policy No.",
|
||||
"Marital Status",
|
||||
"Relationship",
|
||||
"Member's Effective Date",
|
||||
"Member's Expiry Date",
|
||||
"Faskes FKTP (First Level Provider) or Individual preferred provider",
|
||||
"Faskes FKRTL (Next Level Provider) or Individual group preferred provider",
|
||||
"The Right Classes Room of BPJS Participants",
|
||||
"Name of Faskes",
|
||||
"Rule BPJSK",
|
||||
"Internal Use",
|
||||
"Member Name",
|
||||
"Address1",
|
||||
// "Address 1",
|
||||
"Address2",
|
||||
"Address3",
|
||||
"Address4",
|
||||
"City",
|
||||
"State",
|
||||
"Post Code",
|
||||
"Telephone - Mobile",
|
||||
"Telephone - Res",
|
||||
"Telephone - Office",
|
||||
"NRIC",
|
||||
"Passport No",
|
||||
"Passport Country",
|
||||
"Email",
|
||||
"Identification Code",
|
||||
"Date of Birth",
|
||||
"Sex",
|
||||
"Internal Use",
|
||||
"Plan-ID",
|
||||
"Employment-Status",
|
||||
"Internal Use",
|
||||
"Internal Use",
|
||||
"Internal Use",
|
||||
"Date Terminated",
|
||||
"Pre Existing",
|
||||
"BPJS ID",
|
||||
"Endorsement Date",
|
||||
"Remarks",
|
||||
"Internal Use",
|
||||
"Member Since",
|
||||
"Internal Use",
|
||||
"Policy Inforce",
|
||||
"Member Suspended",
|
||||
"Activation Date",
|
||||
"Internal Use",
|
||||
"StartNoClaim",
|
||||
"EndNoClaim",
|
||||
"Option Mode",
|
||||
// "Renewal Activation Date",
|
||||
// "Ingestion Code",
|
||||
// "Ingestion Status",
|
||||
];
|
||||
|
||||
public function __construct(Member $member)
|
||||
{
|
||||
$this->member = $member;
|
||||
@@ -253,8 +328,26 @@ class MemberEnrollmentService
|
||||
return is_string($date_from_row) ? Carbon::parse(strtotime($date_from_row)) : Carbon::parse($date_from_row);
|
||||
}
|
||||
|
||||
public function validateDate($dateString, $dateFormat = 'Ymd'){
|
||||
$date = DateTime::createFromFormat($dateFormat, $dateString);
|
||||
if ($date && $date->format($dateFormat) == $dateString) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected function validateRow($row)
|
||||
{
|
||||
$title =[
|
||||
'member_effective_date' => 'Member Effective Date',
|
||||
'member_expiry_date' => 'Member Expired Date',
|
||||
'activation_date' => 'Activation Date',
|
||||
'date_of_birth' => 'Date of Birth',
|
||||
'date_terminated' => 'Date Terminated',
|
||||
|
||||
];
|
||||
|
||||
if (empty($row['record_type'])) {
|
||||
throw new ImportRowException(__('enrollment.RECORD_TYPE_REQUIRED'), 0, null, $row);
|
||||
}
|
||||
@@ -278,9 +371,31 @@ class MemberEnrollmentService
|
||||
}
|
||||
|
||||
if ($row['record_type'] == 'D') {
|
||||
$member = Member::query()
|
||||
->where('member_id', $row['principal_id'])
|
||||
// ->whereHas('employeds', function ($query) use ($corporate) {
|
||||
// $query->where('corporate_id', $corporate->id);
|
||||
// })
|
||||
->first();
|
||||
|
||||
if(empty($member)){
|
||||
throw new ImportRowException(__('enrollment.PRINCIPAL_NOT_IN_MEMBER_ID'), 0, null, $row);
|
||||
} else {
|
||||
if ($member['record_type'] != 'P'){
|
||||
throw new ImportRowException(__('enrollment.PRINCIPAL_ID_NOT_SAME_MEMBER_ID'), 0, null, $row);
|
||||
}
|
||||
}
|
||||
if (empty($row['principal_id'])) {
|
||||
throw new ImportRowException(__('enrollment.PRINCIPAL_ID_REQUIRED'), 0, null, $row);
|
||||
}
|
||||
if (empty($row['relationship_with_principal'])){
|
||||
throw new ImportRowException(__('enrollment.RELATIONSHIP_WITH_PRICIPAL_REQUIRED'), 0, null, $row);
|
||||
}
|
||||
if (!empty($row['relationship_with_principal']) && !in_array($row['relationship_with_principal'], ['H', 'W', 'D', 'S'])){
|
||||
throw new ImportRowException(__('enrollment.RELATIONSHIP_WITH_PRICIPAL_NOT_VALID'), 0, null, $row);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// TODO RECORD BCA ONLY
|
||||
@@ -312,17 +427,37 @@ class MemberEnrollmentService
|
||||
if (!empty($row['marital_status']) && !in_array($row['marital_status'], ['S', 'M', 'D'])) {
|
||||
throw new ImportRowException(__('enrollment.INVALID_MARITAL_STATUS'), 0, null, $row);
|
||||
}
|
||||
|
||||
|
||||
// TODO EFFECTIVE DATE VALIDATION
|
||||
if (empty($row['member_effective_date'])) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EFFECTIVE_REQUIRED'), 0, null, $row);
|
||||
}
|
||||
// TODO EFFECTIVE DATE VALIDATION
|
||||
if(!$this->validateDate($row['member_effective_date'])){
|
||||
throw new ImportRowException(__('enrollment.INVALID_DATE', [
|
||||
'title' => $title['member_effective_date']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if (empty($row['member_expiry_date'])) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_REQUIRED'), 0, null, $row);
|
||||
}
|
||||
if(!$this->validateDate($row['member_expiry_date'])){
|
||||
throw new ImportRowException(__('enrollment.INVALID_DATE', [
|
||||
'title' => $title['member_expiry_date']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
// TODO EFFECTIVE DATE VALIDATION
|
||||
|
||||
// if (empty($row['activation_date'])) {
|
||||
// throw new ImportRowException(__('enrollment.ACTIVATION_DATE_REQUIRED'), 0, null, $row);
|
||||
// }
|
||||
if(!empty($row['activation_date'])){
|
||||
if(!$this->validateDate($row['activation_date'])){
|
||||
throw new ImportRowException(__('enrollment.INVALID_DATE', [
|
||||
'title' => $title['activation_date']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
}
|
||||
// TODO FKTP VALIDATION
|
||||
// TODO FKRTL VALIDATION
|
||||
|
||||
@@ -334,6 +469,10 @@ class MemberEnrollmentService
|
||||
throw new ImportRowException(__('enrollment.NAME_REQUIRED'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (!Helper::validatePhoneNumber($row['telephone_mobile'])){
|
||||
throw new ImportRowException(__('enrollment.PHONE_INVALID'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (
|
||||
!empty($row['telephone_mobile'])
|
||||
&& !(substr($row['telephone_mobile'], 0, 4) == '+628' || substr($row['telephone_mobile'], 0, 3) == '628')
|
||||
@@ -351,27 +490,57 @@ class MemberEnrollmentService
|
||||
if (empty($row['date_of_birth'])) {
|
||||
throw new ImportRowException(__('enrollment.DATE_OF_BIRTH_REQUIRED'), 0, null, $row);
|
||||
}
|
||||
if(!$this->validateDate($row['date_of_birth'])){
|
||||
throw new ImportRowException(__('enrollment.INVALID_DATE', [
|
||||
'title' => $title['date_of_birth']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
// if (empty($row['date_terminated'])) {
|
||||
// throw new ImportRowException(__('enrollment.DATE_OF_TERMINATED'), 0, null, $row);
|
||||
// }
|
||||
if (!empty($row['date_terminated'])) {
|
||||
if(!$this->validateDate($row['date_terminated'])){
|
||||
throw new ImportRowException(__('enrollment.INVALID_DATE', [
|
||||
'title' => $title['date_terminated']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
}
|
||||
// TODO DOB FORMAT VALIDATION
|
||||
|
||||
if (empty($row['sex'])) {
|
||||
throw new ImportRowException(__('enrollment.SEX_REQUIRED'), 0, null, $row);
|
||||
}
|
||||
|
||||
if (!in_array($row['sex'], ['F', 'M'])){
|
||||
throw new ImportRowException(__('enrollment.SEX_CODE_NOT_VALID'), 0, null, $row);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function handleImportRow(Corporate $corporate, $row)
|
||||
{
|
||||
try {
|
||||
$activation_date = NULL;
|
||||
if (!empty($row['activation_date'])){
|
||||
$activation_date = $row['activation_date'];
|
||||
}
|
||||
$date_terminated = NULL;
|
||||
if(!empty($row['date_terminated'])){
|
||||
$date_terminated = $row['date_terminated'];
|
||||
}
|
||||
$member_data = [
|
||||
"name" => $row['name'] ?? null,
|
||||
"member_id" => $row['member_id'] ?? null,
|
||||
"payor_id" => $row['payor_id'] ?? null,
|
||||
"nik" => $row['nik'] ?? null,
|
||||
"birth_date" => $this->dateParser($row['date_of_birth']),
|
||||
"birth_date" => $row['date_of_birth'],
|
||||
"gender" => Helper::genderNormalization($row['sex']),
|
||||
// "language" => $row['language'] ?? null,
|
||||
// "race" => $row['race'] ?? null,
|
||||
"language" => $row['language'] ?? null,
|
||||
"race" => $row['race'] ?? null,
|
||||
"marital_status" => $row['marital_status'] ?? null,
|
||||
"record_type" => $row['record_type'] ?? null,
|
||||
"record_mode" => $row['record_mode'] ?? null,
|
||||
"principal_id" => $row['principal_id'] ?? null,
|
||||
"relation_with_principal" => $row['relationship_with_principal'] ?? null,
|
||||
"bpjs_class" => $row['bpjs_class'] ?? null,
|
||||
@@ -396,16 +565,117 @@ class MemberEnrollmentService
|
||||
"policy_in_force" => $row['policy_in_force'] ?? null,
|
||||
"start_no_claim" => $row['start_no_claim'] ?? null,
|
||||
"end_no_claim" => $row['end_no_claim'] ?? null,
|
||||
|
||||
"members_effective_date" => $row['member_effective_date'] ?? null,
|
||||
"members_expire_date" => $row['member_expiry_date'] ?? null,
|
||||
"activation_date" => $activation_date,
|
||||
"terminated_date" => $date_terminated,
|
||||
|
||||
"telephone_mobile" => $row['telephone_mobile'] ?? null,
|
||||
"telephone_res" => $row['telephone_res'] ?? null,
|
||||
"telephone_office" => $row['telephone_office'] ?? null,
|
||||
];
|
||||
|
||||
// $this->validateRow($row);
|
||||
if (!isset($corporate->currentPolicy) || $corporate->currentPolicy->code != $row['policy_number']) {
|
||||
throw new ImportRowException(__('enrollment.POLICY_NUMBER_NOT_MATCH', [
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
// validasi member efektif date range date in periode date coroporate
|
||||
$member_effective_date = date("Y-m-d", strtotime($row['member_effective_date']));
|
||||
$date_terminated = date("Y-m-d", strtotime($row['date_terminated']));
|
||||
if(!empty($row['activation_date'])){
|
||||
$activation_date = date("Y-m-d", strtotime($row['activation_date']));
|
||||
if (($activation_date == $date_terminated) && ($activation_date == $member_effective_date)) {
|
||||
throw new ImportRowException(__('enrollment.MORE_THAN', [
|
||||
'date_param' => 'Activation Date',
|
||||
'date' => $activation_date,
|
||||
'date_param2' => 'Member Effective Date',
|
||||
'start' => $activation_date
|
||||
]), 0, null, $row);
|
||||
}
|
||||
}
|
||||
if (!empty($row['date_terminated'])){
|
||||
$date_terminated = date("Y-m-d", strtotime($row['date_terminated']));
|
||||
if($date_terminated){
|
||||
if ($date_terminated <= $member_effective_date && ($date_terminated != $member_effective_date)) {
|
||||
throw new ImportRowException(__('enrollment.MORE_THAN', [
|
||||
'date_param' => 'Date Terminated Date',
|
||||
'date' => $date_terminated,
|
||||
'date_param2' => 'Member Effective Date',
|
||||
'start' => $member_effective_date
|
||||
]), 0, null, $row);
|
||||
}
|
||||
}
|
||||
}
|
||||
// validasi member expried date range date in periode date coroporate
|
||||
$members_expire_date = date("Y-m-d", strtotime($row['member_expiry_date']));
|
||||
// validasi member expried date must less date member effective
|
||||
$members_expire_date = date("Y-m-d", strtotime($row['member_expiry_date']));
|
||||
$members_expire_date = date("Y-m-d", strtotime($row['member_expiry_date']));
|
||||
|
||||
if ($member_effective_date <= $corporate->currentPolicy->start && ($member_effective_date != $corporate->currentPolicy->start)) {
|
||||
throw new ImportRowException(__('enrollment.MORE_THAN', [
|
||||
'date_param' => 'Member Effective Date',
|
||||
'date' => $member_effective_date,
|
||||
'date_param2' => 'Start Period Date',
|
||||
'start' => $corporate->currentPolicy->start
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if ($member_effective_date >= $corporate->currentPolicy->end && ($member_effective_date != $corporate->currentPolicy->end)) {
|
||||
throw new ImportRowException(__('enrollment.LESS_THAN', [
|
||||
'date_param' => 'Member Effective Date',
|
||||
'date' => $member_effective_date,
|
||||
'date_param2' => 'End Period Date',
|
||||
'end' => $corporate->currentPolicy->end
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if ($member_effective_date >= $corporate->currentPolicy->end && ($member_effective_date != $corporate->currentPolicy->end)) {
|
||||
throw new ImportRowException(__('enrollment.LESS_THAN', [
|
||||
'date_param' => 'Member Effective Date',
|
||||
'date' => $member_effective_date,
|
||||
'date_param2' => 'End Period Date',
|
||||
'end' => $corporate->currentPolicy->end
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if ($members_expire_date <= $corporate->currentPolicy->start && ($members_expire_date != $corporate->currentPolicy->start) ) {
|
||||
throw new ImportRowException(__('enrollment.MORE_THAN', [
|
||||
'date_param' => 'Member Expired Date',
|
||||
'date' => $members_expire_date,
|
||||
'date_param2' => 'Start Period Date',
|
||||
'start' => $corporate->currentPolicy->start
|
||||
]), 0, null, $row);
|
||||
}
|
||||
if ($members_expire_date >= $corporate->currentPolicy->end && ($members_expire_date != $corporate->currentPolicy->end)) {
|
||||
throw new ImportRowException(__('enrollment.LESS_THAN', [
|
||||
'date_param' => 'Member Expired Date',
|
||||
'date' => $members_expire_date,
|
||||
'date_param2' => 'END Period Date',
|
||||
'end' => $corporate->currentPolicy->end
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
if ($members_expire_date <= $member_effective_date && ($members_expire_date != $member_effective_date)) {
|
||||
throw new ImportRowException(__('enrollment.MORE_THAN', [
|
||||
'date_param' => 'Member Expired Date',
|
||||
'date' => $members_expire_date,
|
||||
'date_param2' => 'Member Effective Date',
|
||||
'start' => $member_effective_date
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
|
||||
if($corporate->code != $row['corporate_id']){
|
||||
throw new ImportRowException(__('enrollment.CORPORATE_CODE_NOT_MATCH', [
|
||||
'corporate_id' => $row['corporate_id']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
switch ($row['record_mode']) {
|
||||
case "1": // New Member
|
||||
$this->validateRow($row);
|
||||
$member = Member::query()
|
||||
->where('member_id', $row['member_id'])
|
||||
// ->whereHas('employeds', function ($query) use ($corporate) {
|
||||
@@ -421,7 +691,8 @@ class MemberEnrollmentService
|
||||
],
|
||||
[
|
||||
'name' => $row['name'] ?? null,
|
||||
'birth_date' => $this->dateParser($row['date_of_birth']),
|
||||
// 'birth_date' => $this->dateParser($row['date_of_birth']),
|
||||
'birth_date' => $row['date_of_birth'],
|
||||
'gender' => Helper::genderPerson($row['sex']),
|
||||
'language' => $row['language'] ?? null,
|
||||
'race' => $row['race'] ?? null,
|
||||
@@ -457,10 +728,7 @@ class MemberEnrollmentService
|
||||
if (!$plan) {
|
||||
throw new ImportRowException(__('enrollment.PLAN_NOT_FOUND'), 0, null, $row);
|
||||
}
|
||||
|
||||
$this->validateRow($row);
|
||||
|
||||
|
||||
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$member->fill($member_data);
|
||||
@@ -468,7 +736,7 @@ class MemberEnrollmentService
|
||||
|
||||
$person = Person::create([
|
||||
'name' => $row['name'],
|
||||
'birth_date' => $this->dateParser($row['date_of_birth']),
|
||||
'birth_date' => $row['date_of_birth'],
|
||||
'gender' => Helper::genderPerson($row['sex']),
|
||||
'language' => $row['language'] ?? null,
|
||||
'race' => $row['race'] ?? null,
|
||||
@@ -499,7 +767,7 @@ class MemberEnrollmentService
|
||||
$division_id = $division->id;
|
||||
}
|
||||
}
|
||||
|
||||
// Bisa disini penyebab data dobel
|
||||
$member->employeds()->create([
|
||||
'corporate_id' => $corporate->id,
|
||||
'branch_code' => $row['branch_code'],
|
||||
@@ -507,7 +775,7 @@ class MemberEnrollmentService
|
||||
'nik' => $row['nik'],
|
||||
'status' => $row['employment_status']
|
||||
]);
|
||||
|
||||
// Bisa disini penyebab data dobel
|
||||
$member->memberPlans()->create([
|
||||
'plan_id' => $plan->id,
|
||||
'status' => 'active',
|
||||
@@ -522,6 +790,7 @@ class MemberEnrollmentService
|
||||
}
|
||||
break;
|
||||
case "2": // Member Information Update (Without Replacement Card)
|
||||
$this->validateRow($row);
|
||||
$member = Member::query()
|
||||
->where('member_id', $row['member_id'])
|
||||
->first();
|
||||
@@ -533,7 +802,6 @@ class MemberEnrollmentService
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
|
||||
try {
|
||||
$memberPolicy = MemberPolicy::query()
|
||||
->where('policy_id', $row['policy_number'])
|
||||
@@ -559,8 +827,16 @@ class MemberEnrollmentService
|
||||
if (!$memberPolicy->member->isDirty()) {
|
||||
throw new ImportRowException(__('enrollment.MEMBER_NO_CHANGE'), 0, null, $row);
|
||||
}
|
||||
|
||||
|
||||
$memberPolicy->member->save();
|
||||
|
||||
// update informasi person
|
||||
$person = Person::query()
|
||||
->where('id', $member->person_id)
|
||||
->first();
|
||||
$person->fill($member_data);
|
||||
$person->save();
|
||||
|
||||
DB::commit();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollback();
|
||||
@@ -580,6 +856,7 @@ class MemberEnrollmentService
|
||||
'policy_id' => $row['policy_number']
|
||||
]), 0, null, $row);
|
||||
}
|
||||
$this->validateRow($row);
|
||||
|
||||
$memberPolicy = MemberPolicy::query()
|
||||
->where('policy_id', $row['policy_number'])
|
||||
@@ -1036,6 +1313,17 @@ class MemberEnrollmentService
|
||||
return $cells;
|
||||
}
|
||||
|
||||
// This validation for range date in period corporate // validasi untuk range tanggal dalam period corporate yang ditentukan
|
||||
public function validateRangePeriode($dates){
|
||||
$date = date("Y-m-d", strtotime($dates));
|
||||
if (!isset($corporate->currentPolicy) || $corporate->currentPolicy->start <= $date) {
|
||||
|
||||
}
|
||||
if (!isset($corporate->currentPolicy) || $corporate->currentPolicy->end >= $date) {
|
||||
dd($corporate->currentPolicy->end, $dates);
|
||||
}
|
||||
}
|
||||
|
||||
// This returning row with format or order as it is
|
||||
public function makeResultRow($row_data)
|
||||
{
|
||||
|
||||
0
Modules/Internal/Tests/Feature/.gitkeep
Normal file → Executable file
0
Modules/Internal/Tests/Feature/.gitkeep
Normal file → Executable file
0
Modules/Internal/Tests/Unit/.gitkeep
Normal file → Executable file
0
Modules/Internal/Tests/Unit/.gitkeep
Normal file → Executable file
0
Modules/Internal/Transformers/AppointmentResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/AppointmentResource.php
Normal file → Executable file
30
Modules/Internal/Transformers/AuditTrailResource.php
Normal file
30
Modules/Internal/Transformers/AuditTrailResource.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Internal\Transformers;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class AuditTrailResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$audit_trail = [
|
||||
'id' => $this->id,
|
||||
'old_values' => json_decode($this->old_values),
|
||||
'new_values' => json_decode($this->new_values),
|
||||
'action' => $this->action,
|
||||
'user_id' => $this->user->email,
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
];
|
||||
|
||||
return $audit_trail;
|
||||
}
|
||||
}
|
||||
2
Modules/Internal/Transformers/ClaimRequestResource.php
Normal file → Executable file
2
Modules/Internal/Transformers/ClaimRequestResource.php
Normal file → Executable file
@@ -24,7 +24,7 @@ class ClaimRequestResource extends JsonResource
|
||||
'submission_date' => $this->submission_date,
|
||||
'member' => $this->member,
|
||||
'status' => $this->status ?? 'unknown',
|
||||
'service_name' => $this->service->name,
|
||||
'service_name' => $this->service ? $this->service->name : '',
|
||||
'payment_type' => $this->payment_type,
|
||||
'payment_type_name' => $this->payment_type_name,
|
||||
'files_by_type' => $filesGroupByType
|
||||
|
||||
0
Modules/Internal/Transformers/ClaimRequestShowResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/ClaimRequestShowResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/ClaimResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/ClaimResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/ClaimShowResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/ClaimShowResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/CorporateFormulariumResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/CorporateFormulariumResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/CorporateServiceConfigResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/CorporateServiceConfigResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/DiagnosisExclusionResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/DiagnosisExclusionResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/DoctorResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/DoctorResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/EncounterResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/EncounterResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/LinksehatPaymentResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/LinksehatPaymentResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/LivechatResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/LivechatResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/OrganizationResource.php
Normal file → Executable file
0
Modules/Internal/Transformers/OrganizationResource.php
Normal file → Executable file
0
Modules/Internal/composer.json
Normal file → Executable file
0
Modules/Internal/composer.json
Normal file → Executable file
0
Modules/Internal/module.json
Normal file → Executable file
0
Modules/Internal/module.json
Normal file → Executable file
0
Modules/Internal/package.json
Normal file → Executable file
0
Modules/Internal/package.json
Normal file → Executable file
0
Modules/Internal/webpack.mix.js
Normal file → Executable file
0
Modules/Internal/webpack.mix.js
Normal file → Executable file
Reference in New Issue
Block a user