Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging
This commit is contained in:
@@ -63,7 +63,7 @@ class ClaimRequestController extends Controller
|
|||||||
serviceCode: $request->service_code[$key],
|
serviceCode: $request->service_code[$key],
|
||||||
);
|
);
|
||||||
|
|
||||||
ClaimRequested::dispatch($newClaimRequest);
|
// ClaimRequested::dispatch($newClaimRequest);
|
||||||
|
|
||||||
// Log History
|
// Log History
|
||||||
$newClaimRequest->histories()->create([
|
$newClaimRequest->histories()->create([
|
||||||
|
|||||||
@@ -21,10 +21,15 @@ use Modules\Client\Transformers\Dashboard\MemberEmployeeDataResources as Dashboa
|
|||||||
use Modules\Client\Transformers\DataMemberResource;
|
use Modules\Client\Transformers\DataMemberResource;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||||
|
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||||
|
use Modules\Internal\Services\MemberEnrollmentService;
|
||||||
|
|
||||||
class CorporateMemberController extends Controller
|
class CorporateMemberController extends Controller
|
||||||
{
|
{
|
||||||
public function __construct(public CorporateMemberService $corporateMemberService)
|
public function __construct(public CorporateMemberService $corporateMemberService, MemberEnrollmentService $memberEnrollmentService)
|
||||||
{
|
{
|
||||||
|
$this->memberEnrollmentService = $memberEnrollmentService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -106,6 +111,111 @@ class CorporateMemberController extends Controller
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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){
|
public function showPerMember($corporate_id, $member_id){
|
||||||
$data = ClaimRequest::where(['member_id' => $member_id])
|
$data = ClaimRequest::where(['member_id' => $member_id])
|
||||||
->whereNotNull('claim_id')
|
->whereNotNull('claim_id')
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ Route::prefix('client')->group(function () {
|
|||||||
Route::get('division', [CorporateDivisionController::class, 'index']);
|
Route::get('division', [CorporateDivisionController::class, 'index']);
|
||||||
Route::get('members', [CorporateMemberController::class, 'index']);
|
Route::get('members', [CorporateMemberController::class, 'index']);
|
||||||
Route::get('members/{id}', [CorporateMemberController::class, 'show']);
|
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('alarm-center-members/{id}', [CorporateMemberController::class, 'showPerMember']);
|
||||||
Route::get('service-monitoring/{id}', [CorporateMemberController::class, 'serviceMonitoring']);
|
Route::get('service-monitoring/{id}', [CorporateMemberController::class, 'serviceMonitoring']);
|
||||||
Route::get('claims/status', [ClaimController::class, 'status']);
|
Route::get('claims/status', [ClaimController::class, 'status']);
|
||||||
|
|||||||
@@ -96,6 +96,16 @@ class MemberController extends Controller
|
|||||||
|
|
||||||
$res_data['type'] = $request->type;
|
$res_data['type'] = $request->type;
|
||||||
|
|
||||||
|
// Provider
|
||||||
|
$providers = DB::table('organizations')
|
||||||
|
->select(
|
||||||
|
'organizations.id',
|
||||||
|
'organizations.name'
|
||||||
|
)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$res_data['providers'] = $providers;
|
||||||
|
|
||||||
|
|
||||||
return ApiResponse::apiResponse("Success", $res_data, trans('Message.success'), 200);
|
return ApiResponse::apiResponse("Success", $res_data, trans('Message.success'), 200);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,10 @@ class RequestLogController extends Controller
|
|||||||
{
|
{
|
||||||
$data = [
|
$data = [
|
||||||
'member_id' => $request->member_id,
|
'member_id' => $request->member_id,
|
||||||
'service_code' => $request->service_code
|
'service_code' => $request->service_code,
|
||||||
|
'id_provider' => $request->id_provider,
|
||||||
|
'name_provider' => $request->name_provider,
|
||||||
|
'adress_provider' => $request->address_provider
|
||||||
];
|
];
|
||||||
$validator = Validator::make($request->all(), [
|
$validator = Validator::make($request->all(), [
|
||||||
'member_id' => 'required',
|
'member_id' => 'required',
|
||||||
@@ -32,6 +35,18 @@ class RequestLogController extends Controller
|
|||||||
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
|
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
|
||||||
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']),
|
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']),
|
||||||
]);
|
]);
|
||||||
|
if($request->id_provider)
|
||||||
|
{
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
'id_provider' => 'required',
|
||||||
|
'member_id' => 'required',
|
||||||
|
'service_code' => 'required'
|
||||||
|
], [
|
||||||
|
'id_provider.required' => trans('Validation.required',['attribute' => 'Provider ID']),
|
||||||
|
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
|
||||||
|
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']),
|
||||||
|
]);
|
||||||
|
}
|
||||||
if ($validator->fails())
|
if ($validator->fails())
|
||||||
{
|
{
|
||||||
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
|
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class CorporateController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'code' => 'required|regex:/^[a-zA-Z0-9_]+$/',
|
'code' => 'required|regex:/^[a-zA-Z0-9_]+$/',
|
||||||
'name' => 'required',
|
'name' => 'required',
|
||||||
@@ -468,9 +468,9 @@ class CorporateController extends Controller
|
|||||||
// $import->read($fileRead);
|
// $import->read($fileRead);
|
||||||
// $import->write($fileWrite, 'xsls');
|
// $import->write($fileWrite, 'xsls');
|
||||||
$result_headers = array_merge($row_data, ['Ingest Code' =>200, 'Ingest Note' => 'Success']);
|
$result_headers = array_merge($row_data, ['Ingest Code' =>200, 'Ingest Note' => 'Success']);
|
||||||
|
|
||||||
$import->addArrayToRow($result_headers, $sheet->getName());
|
$import->addArrayToRow($result_headers, $sheet->getName());
|
||||||
|
|
||||||
} catch (ImportRowException $e) {
|
} catch (ImportRowException $e) {
|
||||||
// Write Data Validation Error to File
|
// Write Data Validation Error to File
|
||||||
// $import->read($fileRead);
|
// $import->read($fileRead);
|
||||||
@@ -518,7 +518,7 @@ class CorporateController extends Controller
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function importDocumentExample($document_type)
|
public function importDocumentExample($document_type)
|
||||||
{
|
{
|
||||||
switch ($document_type) {
|
switch ($document_type) {
|
||||||
case 'plan-benefit':
|
case 'plan-benefit':
|
||||||
@@ -532,7 +532,7 @@ class CorporateController extends Controller
|
|||||||
'file_name' => "Corporate Membership Import.xlsx",
|
'file_name' => "Corporate Membership Import.xlsx",
|
||||||
"file_url" => url('files/Corporate Membership Import.xlsx')
|
"file_url" => url('files/Corporate Membership Import.xlsx')
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'diagnosis-exclusion':
|
case 'diagnosis-exclusion':
|
||||||
return Helper::responseJson([
|
return Helper::responseJson([
|
||||||
'file_name' => "Corporate Exclusion Import.xlsx",
|
'file_name' => "Corporate Exclusion Import.xlsx",
|
||||||
@@ -544,31 +544,31 @@ class CorporateController extends Controller
|
|||||||
'file_name' => "Template - ICD.xlsx",
|
'file_name' => "Template - ICD.xlsx",
|
||||||
"file_url" => url('files/Template - ICD.xlsx')
|
"file_url" => url('files/Template - ICD.xlsx')
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'master-formularium':
|
case 'master-formularium':
|
||||||
return Helper::responseJson([
|
return Helper::responseJson([
|
||||||
'file_name' => "Template - Formularium.xlsx",
|
'file_name' => "Template - Formularium.xlsx",
|
||||||
"file_url" => url('files/Template - Formularium.xlsx')
|
"file_url" => url('files/Template - Formularium.xlsx')
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'master-formularium-corporate':
|
case 'master-formularium-corporate':
|
||||||
return Helper::responseJson([
|
return Helper::responseJson([
|
||||||
'file_name' => "Template - Formularium.xlsx",
|
'file_name' => "Template - Formularium.xlsx",
|
||||||
"file_url" => url('files/Template - Formularium - Corporate.xlsx')
|
"file_url" => url('files/Template - Formularium - Corporate.xlsx')
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'claim-request':
|
case 'claim-request':
|
||||||
return Helper::responseJson([
|
return Helper::responseJson([
|
||||||
'file_name' => "Template Format Claim.xlsx",
|
'file_name' => "Template Format Claim.xlsx",
|
||||||
"file_url" => url('files/Template Format Claim.xlsx')
|
"file_url" => url('files/Template Format Claim.xlsx')
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'request-log':
|
case 'request-log':
|
||||||
return Helper::responseJson([
|
return Helper::responseJson([
|
||||||
'file_name' => "Template Update Status Request LOG.xlsx",
|
'file_name' => "Template Update Status Request LOG.xlsx",
|
||||||
"file_url" => url('files/Template Update Status Request LOG.xlsx')
|
"file_url" => url('files/Template Update Status Request LOG.xlsx')
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return Helper::responseJson([], 'error', 404);
|
return Helper::responseJson([], 'error', 404);
|
||||||
break;
|
break;
|
||||||
@@ -582,7 +582,7 @@ class CorporateController extends Controller
|
|||||||
$writer = WriterEntityFactory::createXLSXWriter();
|
$writer = WriterEntityFactory::createXLSXWriter();
|
||||||
// Membuka penulis untuk menulis ke file
|
// Membuka penulis untuk menulis ke file
|
||||||
$writer->openToFile(public_path('files/CorporatePlan&BenefitImportData.xlsx'));
|
$writer->openToFile(public_path('files/CorporatePlan&BenefitImportData.xlsx'));
|
||||||
|
|
||||||
// Sheet 1
|
// Sheet 1
|
||||||
$writer->getCurrentSheet()->setName('Plans');
|
$writer->getCurrentSheet()->setName('Plans');
|
||||||
$headers_map_to_table_fields = Plan::$listing_doc_headers;
|
$headers_map_to_table_fields = Plan::$listing_doc_headers;
|
||||||
@@ -783,7 +783,7 @@ class CorporateController extends Controller
|
|||||||
{
|
{
|
||||||
return Helper::responseJson(data: $request->toArray(), message: 'Tidak ada file yang ditambahkan');
|
return Helper::responseJson(data: $request->toArray(), message: 'Tidak ada file yang ditambahkan');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFilesDoc(Request $request)
|
public function getFilesDoc(Request $request)
|
||||||
@@ -825,5 +825,5 @@ class CorporateController extends Controller
|
|||||||
return Helper::responseJson(data: $datas, message: 'Berhasil update status download menjadi '.($request->status_download == 0 ? 'Inactive' : 'Active'));
|
return Helper::responseJson(data: $datas, message: 'Berhasil update status download menjadi '.($request->status_download == 0 ? 'Inactive' : 'Active'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ class CorporateMemberController extends Controller
|
|||||||
$result_headers = $this->memberEnrollmentService->result_doc_headers;
|
$result_headers = $this->memberEnrollmentService->result_doc_headers;
|
||||||
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRow($result_headers));
|
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRow($result_headers));
|
||||||
$writer->addRow($singleRow);
|
$writer->addRow($singleRow);
|
||||||
|
|
||||||
$imported_member_data = 0;
|
$imported_member_data = 0;
|
||||||
$failed_member_data = [];
|
$failed_member_data = [];
|
||||||
foreach ($reader->getSheetIterator() as $sheet) {
|
foreach ($reader->getSheetIterator() as $sheet) {
|
||||||
@@ -202,7 +202,7 @@ class CorporateMemberController extends Controller
|
|||||||
$new_member_data[$headers_map_to_table_fields[$doc_headers_indexes[$header_index]]] = $cell->getValue();
|
$new_member_data[$headers_map_to_table_fields[$doc_headers_indexes[$header_index]]] = $cell->getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$rowResponse = $this->memberEnrollmentService->handleImportRow($corporate, $new_member_data);
|
$rowResponse = $this->memberEnrollmentService->handleImportRow($corporate, $new_member_data);
|
||||||
// Write Success Result to File
|
// Write Success Result to File
|
||||||
@@ -257,23 +257,23 @@ class CorporateMemberController extends Controller
|
|||||||
$corporate_id = CorporateEmployee::where('member_id', $member_id)->value('corporate_id');
|
$corporate_id = CorporateEmployee::where('member_id', $member_id)->value('corporate_id');
|
||||||
// $member = Member::findOrFail($member_id)
|
// $member = Member::findOrFail($member_id)
|
||||||
// ->load([
|
// ->load([
|
||||||
// 'currentPlan',
|
// 'currentPlan',
|
||||||
// 'currentPolicy',
|
// 'currentPolicy',
|
||||||
// 'currentPlan.corporateBenefits' => function ($benefit) use ($request) {
|
// 'currentPlan.corporateBenefits' => function ($benefit) use ($request) {
|
||||||
// return $benefit->when($request->benefit_ids, function ($q, $ids) {
|
// return $benefit->when($request->benefit_ids, function ($q, $ids) {
|
||||||
|
|
||||||
// $q->whereIn('benefit_id', $ids)
|
// $q->whereIn('benefit_id', $ids)
|
||||||
// ->where([
|
// ->where([
|
||||||
// 'corporate_benefits.active' => 1,
|
// 'corporate_benefits.active' => 1,
|
||||||
// 'corporate_benefits.corporate_id' => $corporate_id,
|
// 'corporate_benefits.corporate_id' => $corporate_id,
|
||||||
// ]);
|
// ]);
|
||||||
// });
|
// });
|
||||||
// },
|
// },
|
||||||
// // 'currentPlan.corporateBenefits.benefit'
|
// // 'currentPlan.corporateBenefits.benefit'
|
||||||
// ]);
|
// ]);
|
||||||
$member = Member::with([
|
$member = Member::with([
|
||||||
'currentPlan',
|
'currentPlan',
|
||||||
'currentPolicy',
|
'currentPolicy',
|
||||||
'currentPlan.corporateBenefits' => function ($query) use ($request, $corporate_id) {
|
'currentPlan.corporateBenefits' => function ($query) use ($request, $corporate_id) {
|
||||||
$query->when($request->benefit_ids, function ($q, $ids) use ($corporate_id) {
|
$query->when($request->benefit_ids, function ($q, $ids) use ($corporate_id) {
|
||||||
$q->whereIn('benefit_id', $ids)
|
$q->whereIn('benefit_id', $ids)
|
||||||
@@ -283,7 +283,7 @@ class CorporateMemberController extends Controller
|
|||||||
},
|
},
|
||||||
// 'currentPlan.corporateBenefits.benefit'
|
// 'currentPlan.corporateBenefits.benefit'
|
||||||
])->findOrFail($member_id);
|
])->findOrFail($member_id);
|
||||||
|
|
||||||
$dateOfAdmission = $request->date_of_admission ? Carbon::parse($request->date_of_admission) : now();
|
$dateOfAdmission = $request->date_of_admission ? Carbon::parse($request->date_of_admission) : now();
|
||||||
|
|
||||||
// return view('pdf.guaranted_leter', compact('member'));
|
// return view('pdf.guaranted_leter', compact('member'));
|
||||||
@@ -307,7 +307,7 @@ class CorporateMemberController extends Controller
|
|||||||
// Menulis header kolom
|
// Menulis header kolom
|
||||||
$headers_map_to_table_fields = $this->memberEnrollmentService->listing_doc_headers;
|
$headers_map_to_table_fields = $this->memberEnrollmentService->listing_doc_headers;
|
||||||
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
||||||
|
|
||||||
$writer->addRow($headerRow);
|
$writer->addRow($headerRow);
|
||||||
// dd('test');
|
// dd('test');
|
||||||
// Menulis data
|
// Menulis data
|
||||||
@@ -366,7 +366,7 @@ class CorporateMemberController extends Controller
|
|||||||
$item['pre_existing'], // Pre Existing
|
$item['pre_existing'], // Pre Existing
|
||||||
$item['bpjs_id'], // BPJS ID
|
$item['bpjs_id'], // BPJS ID
|
||||||
$item['endorsement_date'], // Endorsement Date
|
$item['endorsement_date'], // Endorsement Date
|
||||||
$item['remarks'], // Remarks
|
$item['remarks'], // Remarks
|
||||||
NULL, // Internal Use
|
NULL, // Internal Use
|
||||||
NULL,// Member Since
|
NULL,// Member Since
|
||||||
NULL,// Internal Use
|
NULL,// Internal Use
|
||||||
@@ -398,8 +398,8 @@ class CorporateMemberController extends Controller
|
|||||||
|
|
||||||
public function sendAllECard(Request $request, $corporate_id){
|
public function sendAllECard(Request $request, $corporate_id){
|
||||||
$members = Member::with([
|
$members = Member::with([
|
||||||
'currentPlan',
|
'currentPlan',
|
||||||
'currentPolicy',
|
'currentPolicy',
|
||||||
'currentCorporate',
|
'currentCorporate',
|
||||||
// 'currentPlan.corporateBenefits.benefit'
|
// 'currentPlan.corporateBenefits.benefit'
|
||||||
])->whereHas('currentCorporate', function ($query) use ($corporate_id) {
|
])->whereHas('currentCorporate', function ($query) use ($corporate_id) {
|
||||||
@@ -415,7 +415,7 @@ class CorporateMemberController extends Controller
|
|||||||
$pdf = PDF::loadView('pdf.ecard', compact('member'))->setPaper('A5', 'portrait');
|
$pdf = PDF::loadView('pdf.ecard', compact('member'))->setPaper('A5', 'portrait');
|
||||||
$pdf->save($pdfPath);
|
$pdf->save($pdfPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
$dataEmail = [
|
$dataEmail = [
|
||||||
// 'email' => $member->email,
|
// 'email' => $member->email,
|
||||||
'email' => 'tbfajri',
|
'email' => 'tbfajri',
|
||||||
@@ -425,7 +425,7 @@ class CorporateMemberController extends Controller
|
|||||||
'attach' => $pdfPath,
|
'attach' => $pdfPath,
|
||||||
];
|
];
|
||||||
$sendEmail = Helper::sendEmailattachData($dataEmail);
|
$sendEmail = Helper::sendEmailattachData($dataEmail);
|
||||||
|
|
||||||
if ($sendEmail === true){
|
if ($sendEmail === true){
|
||||||
$countSuccesSend ++;
|
$countSuccesSend ++;
|
||||||
|
|
||||||
@@ -445,7 +445,7 @@ class CorporateMemberController extends Controller
|
|||||||
'data_succes_send' => $countSuccesSend,
|
'data_succes_send' => $countSuccesSend,
|
||||||
];
|
];
|
||||||
|
|
||||||
return response()->json($response);
|
return response()->json($response);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewECard(Request $request, $member_id){
|
public function viewECard(Request $request, $member_id){
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ class CorporateService
|
|||||||
MCU=Medical Check Up
|
MCU=Medical Check Up
|
||||||
KB-VACC = Family Planning/Vaccination
|
KB-VACC = Family Planning/Vaccination
|
||||||
LAB = Test Diagnostic
|
LAB = Test Diagnostic
|
||||||
PHAR = Pharmacy
|
PHAR = Pharmacy
|
||||||
**/
|
**/
|
||||||
protected $service_code = ['MEDIVAC', 'MSO', 'PAC', 'OPDE', 'IP', 'OP', 'MA', 'ANC', 'DE', 'GL', 'SP', 'PF', 'MCU', 'KB-VACC', 'LAB', 'PHAR'];
|
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){
|
protected function corporatePlansId($corporate_id){
|
||||||
$plans = Plan::where('corporate_id', $corporate_id)->get()->toArray();
|
$plans = Plan::where('corporate_id', $corporate_id)->get()->toArray();
|
||||||
$current_corporate_plans_id = [];
|
$current_corporate_plans_id = [];
|
||||||
@@ -80,8 +80,8 @@ class CorporateService
|
|||||||
throw new ImportRowException(__('plan.REQUIRED', [
|
throw new ImportRowException(__('plan.REQUIRED', [
|
||||||
'attribute' => 'Customer Plan'
|
'attribute' => 'Customer Plan'
|
||||||
]), 0, null, $row);
|
]), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!in_array($row['type'], $plan_code)){
|
if (!in_array($row['type'], $plan_code)){
|
||||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||||
'attribute' => 'Plan Type',
|
'attribute' => 'Plan Type',
|
||||||
@@ -105,13 +105,13 @@ class CorporateService
|
|||||||
// 'code' => $row['code']
|
// 'code' => $row['code']
|
||||||
// ]), 0, null, $row);
|
// ]), 0, null, $row);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if (!empty($row['family_plan']) && !in_array($row['family_plan'],$family_plan)) {
|
if (!empty($row['family_plan']) && !in_array($row['family_plan'],$family_plan)) {
|
||||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||||
'attribute' => 'Family Plan',
|
'attribute' => 'Family Plan',
|
||||||
'code' => $row['family_plan']
|
'code' => $row['family_plan']
|
||||||
]), 0, null, $row);
|
]), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($row['prorate_type']) && !in_array($row['prorate_type'], $prorate_type)) {
|
if (!empty($row['prorate_type']) && !in_array($row['prorate_type'], $prorate_type)) {
|
||||||
throw new ImportRowException(__('plan.NOT_MATCH', [
|
throw new ImportRowException(__('plan.NOT_MATCH', [
|
||||||
@@ -171,7 +171,7 @@ class CorporateService
|
|||||||
'code' => $row['service_code']
|
'code' => $row['service_code']
|
||||||
]), 0, null, $row);
|
]), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($row['plan_code'])) {
|
if (empty($row['plan_code'])) {
|
||||||
throw new ImportRowException(__('benefit.PLAN_CODE_REQUIRED'), 0, null, $row);
|
throw new ImportRowException(__('benefit.PLAN_CODE_REQUIRED'), 0, null, $row);
|
||||||
} else if (!in_array($row['plan_code'], $current_corporate_plans)){
|
} else if (!in_array($row['plan_code'], $current_corporate_plans)){
|
||||||
@@ -181,21 +181,21 @@ class CorporateService
|
|||||||
// ]), 0, null, $row);
|
// ]), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (empty($row['code'])) {
|
if (empty($row['code'])) {
|
||||||
throw new ImportRowException(__('plan.REQUIRED', [
|
throw new ImportRowException(__('plan.REQUIRED', [
|
||||||
'attribute' => 'Benefit Code'
|
'attribute' => 'Benefit Code'
|
||||||
]), 0, null, $row);
|
]), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($row['corporate_benefit_code'])) {
|
if (empty($row['corporate_benefit_code'])) {
|
||||||
throw new ImportRowException(__('Customer Benefit Code Required', [
|
throw new ImportRowException(__('Customer Benefit Code Required', [
|
||||||
'attribute' => 'Customer Benefit Code'
|
'attribute' => 'Customer Benefit Code'
|
||||||
]), 0, null, $row);
|
]), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (empty($row['description'])) {
|
if (empty($row['description'])) {
|
||||||
throw new ImportRowException(__('plan.REQUIRED', [
|
throw new ImportRowException(__('plan.REQUIRED', [
|
||||||
'attribute' => 'Description'
|
'attribute' => 'Description'
|
||||||
@@ -216,16 +216,16 @@ class CorporateService
|
|||||||
'attribute' => 'Gender'
|
'attribute' => 'Gender'
|
||||||
]), 0, null, $row);
|
]), 0, null, $row);
|
||||||
}
|
}
|
||||||
if (!empty($row['max_frequency_period']) && $row['max_frequency_period'] >= $max_frequence){ // jenis frequence
|
if (!empty($row['max_frequency_period']) && $row['max_frequency_period'] >= $max_frequence){ // jenis frequence
|
||||||
throw new ImportRowException(__('plan.MAX_FREQUENCY'), 0, null, $row);
|
throw new ImportRowException(__('plan.MAX_FREQUENCY'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!empty($row['budget']) && !in_array($budget_aso)) {
|
|
||||||
|
if (!empty($row['budget']) && !in_array($budget_aso)) {
|
||||||
throw new ImportRowException(__('plan.MAX_FREQUENCY'), 0, null, $row);
|
throw new ImportRowException(__('plan.MAX_FREQUENCY'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// if (empty($row['limit_free_tc'])){
|
// if (empty($row['limit_free_tc'])){
|
||||||
// throw new ImportRowException(__('plan.REQUIRED', [
|
// throw new ImportRowException(__('plan.REQUIRED', [
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use Str;
|
|||||||
|
|
||||||
class ClaimRequestService{
|
class ClaimRequestService{
|
||||||
|
|
||||||
public static function storeClaimRequest($row = null, $code, $member, $paymentType, $serviceCode, $requestLogID, $submissionDate = null, $status = 'requested', $organization_code = null)
|
public static function storeClaimRequest($row = null, $code, $member, $paymentType, $serviceCode, $requestLogID = null, $submissionDate = null, $status = 'requested', $organization_code = null)
|
||||||
{
|
{
|
||||||
// try {
|
// try {
|
||||||
$organization = False;
|
$organization = False;
|
||||||
@@ -38,7 +38,7 @@ class ClaimRequestService{
|
|||||||
|
|
||||||
$claimRequestData = [
|
$claimRequestData = [
|
||||||
'code' => $code,
|
'code' => $code,
|
||||||
'request_log_id' => $requestLogID,
|
'request_log_id' => $requestLogID ?? 0,
|
||||||
'member_id' => $member->id,
|
'member_id' => $member->id,
|
||||||
'submission_date' => $submissionDate ?? now(),
|
'submission_date' => $submissionDate ?? now(),
|
||||||
'status' => $status,
|
'status' => $status,
|
||||||
@@ -60,6 +60,8 @@ class ClaimRequestService{
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static function storeClaimManagement($row, $member, $claim_request_id){
|
public static function storeClaimManagement($row, $member, $claim_request_id){
|
||||||
try {
|
try {
|
||||||
$organization = 0;
|
$organization = 0;
|
||||||
@@ -100,7 +102,7 @@ class ClaimRequestService{
|
|||||||
DB::commit();
|
DB::commit();
|
||||||
return $claimManagement;
|
return $claimManagement;
|
||||||
|
|
||||||
|
|
||||||
} catch (\Exception $error) {
|
} catch (\Exception $error) {
|
||||||
DB::rollBack();
|
DB::rollBack();
|
||||||
|
|
||||||
@@ -144,18 +146,18 @@ class ClaimRequestService{
|
|||||||
$paymentType = $row['claim_type'];
|
$paymentType = $row['claim_type'];
|
||||||
$status = $row['status'];
|
$status = $row['status'];
|
||||||
$serviceCode = $row['coverage_type'];
|
$serviceCode = $row['coverage_type'];
|
||||||
|
|
||||||
$newClaimRequest = $this->storeClaimRequest(
|
$newClaimRequest = $this->storeClaimRequest(
|
||||||
row: $row,
|
row: $row,
|
||||||
code: $code,
|
code: $code,
|
||||||
member: $member,
|
member: $member,
|
||||||
paymentType: $paymentType,
|
paymentType: $paymentType,
|
||||||
serviceCode: $serviceCode,
|
serviceCode: $serviceCode,
|
||||||
submissionDate: $submissionDate,
|
submissionDate: $submissionDate,
|
||||||
status: $status,
|
status: $status,
|
||||||
organization_code: $organization_id
|
organization_code: $organization_id
|
||||||
);
|
);
|
||||||
|
|
||||||
$newlyCreatedID = $newClaimRequest->id;
|
$newlyCreatedID = $newClaimRequest->id;
|
||||||
|
|
||||||
$newClaimManangement = $this->storeClaimManagement($row, $member, $newlyCreatedID);
|
$newClaimManangement = $this->storeClaimManagement($row, $member, $newlyCreatedID);
|
||||||
@@ -177,4 +179,4 @@ class ClaimRequestService{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
"laravel/socialite": "^5.5",
|
"laravel/socialite": "^5.5",
|
||||||
"laravel/tinker": "^2.7",
|
"laravel/tinker": "^2.7",
|
||||||
"maatwebsite/excel": "^3.1",
|
"maatwebsite/excel": "^3.1",
|
||||||
|
"mikehaertl/phpwkhtmltopdf": "^2.5",
|
||||||
"nwidart/laravel-modules": "^9.0",
|
"nwidart/laravel-modules": "^9.0",
|
||||||
"phpmailer/phpmailer": "^6.9",
|
"phpmailer/phpmailer": "^6.9",
|
||||||
"psr/simple-cache": "^1.0",
|
"psr/simple-cache": "^1.0",
|
||||||
|
|||||||
@@ -235,12 +235,12 @@ export default function Index() {
|
|||||||
label: 'Divisi',
|
label: 'Divisi',
|
||||||
isSort: true,
|
isSort: true,
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
id: 'limit',
|
// id: 'limit',
|
||||||
align: 'center',
|
// align: 'center',
|
||||||
label: 'Limit',
|
// label: 'Limit',
|
||||||
isSort: false,
|
// isSort: false,
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
id: 'status',
|
id: 'status',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
@@ -292,18 +292,18 @@ export default function Index() {
|
|||||||
corporateMembers.data.data.map((obj: any) => {
|
corporateMembers.data.data.map((obj: any) => {
|
||||||
return {
|
return {
|
||||||
...obj,
|
...obj,
|
||||||
limit: (
|
// limit: (
|
||||||
<Stack>
|
// <Stack>
|
||||||
<BorderLinearProgress
|
// <BorderLinearProgress
|
||||||
variant="determinate"
|
// variant="determinate"
|
||||||
value={obj.limit.percentage}
|
// value={obj.limit.percentage}
|
||||||
sx={{ mb: 1 }}
|
// sx={{ mb: 1 }}
|
||||||
/>
|
// />
|
||||||
<Typography sx={{ typography: 'caption', color: '#637381' }}>
|
// <Typography sx={{ typography: 'caption', color: '#637381' }}>
|
||||||
{fSplit(obj.limit.current)} / {fSplit(obj.limit.total)}
|
// {fSplit(obj.limit.current)} / {fSplit(obj.limit.total)}
|
||||||
</Typography>
|
// </Typography>
|
||||||
</Stack>
|
// </Stack>
|
||||||
),
|
// ),
|
||||||
status:
|
status:
|
||||||
obj.status === 1 ? (
|
obj.status === 1 ? (
|
||||||
<Button
|
<Button
|
||||||
@@ -369,12 +369,12 @@ export default function Index() {
|
|||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
<Grid container spacing={2}>
|
<Grid container spacing={2}>
|
||||||
<Grid item xs={12} lg={6} md={12}>
|
{/* <Grid item xs={12} lg={6} md={12}>
|
||||||
<CardNotification data={itemList} />
|
<CardNotification data={itemList} />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} lg={6} md={12}>
|
<Grid item xs={12} lg={6} md={12}>
|
||||||
<CardPolicy data={policyData} />
|
<CardPolicy data={policyData} />
|
||||||
</Grid>
|
</Grid> */}
|
||||||
<Grid item xs={12} lg={12} md={12}>
|
<Grid item xs={12} lg={12} md={12}>
|
||||||
<Table
|
<Table
|
||||||
headCells={headCells}
|
headCells={headCells}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import TableMoreMenu from '../../components/table/TableMoreMenu';
|
|||||||
import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
|
import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
|
||||||
import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
|
import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
|
||||||
import Label from '../../components/Label';
|
import Label from '../../components/Label';
|
||||||
|
import { enqueueSnackbar } from 'notistack';
|
||||||
|
|
||||||
|
|
||||||
/* ---------------------------------- types --------------------------------- */
|
/* ---------------------------------- types --------------------------------- */
|
||||||
@@ -229,10 +230,32 @@ export default function List() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const searchs = {
|
const searchs = {
|
||||||
|
useSearchs: true,
|
||||||
searchText: searchText,
|
searchText: searchText,
|
||||||
setSearchText: setSearchText,
|
setSearchText: setSearchText,
|
||||||
handleSearchSubmit: handleSearchSubmit,
|
handleSearchSubmit: handleSearchSubmit,
|
||||||
};
|
};
|
||||||
|
const [startDateValue, setStartDateValue] = useState('');
|
||||||
|
const [endDateValue, setEndDateValue] = useState('');
|
||||||
|
const [statusValue, setStatusValue] = useState('all');
|
||||||
|
|
||||||
|
const handleExportReport = async (appliedFilter = null) => {
|
||||||
|
axios.get(corporateValue + '/export-members/list').then((response) => {
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = response.data.data.file_url;
|
||||||
|
link.setAttribute('download', response.data.data.file_name);
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
// handleClose();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const exportReport = {
|
||||||
|
useExport: true,
|
||||||
|
startDate: startDateValue,
|
||||||
|
endDate: endDateValue,
|
||||||
|
status: statusValue,
|
||||||
|
handleExportReport: handleExportReport
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------- headCell -------------------------------- */
|
/* -------------------------------- headCell -------------------------------- */
|
||||||
const headCells: HeadCell<never>[] = [
|
const headCells: HeadCell<never>[] = [
|
||||||
@@ -375,6 +398,7 @@ export default function List() {
|
|||||||
params={params}
|
params={params}
|
||||||
searchs={searchs}
|
searchs={searchs}
|
||||||
// filters={filters}
|
// filters={filters}
|
||||||
|
exportReport={exportReport}
|
||||||
/>
|
/>
|
||||||
</Stack>
|
</Stack>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -34,5 +34,9 @@
|
|||||||
"txtSupportingResultDocument" : "Supporting Result Document",
|
"txtSupportingResultDocument" : "Supporting Result Document",
|
||||||
"txtAddResult" : "Add Result",
|
"txtAddResult" : "Add Result",
|
||||||
"txtServiceType" : "Service Type",
|
"txtServiceType" : "Service Type",
|
||||||
"txtAdditionalDocuments" : "Additional Documents"
|
"txtAdditionalDocuments" : "Additional Documents",
|
||||||
|
"txtAddNew" : "Add New",
|
||||||
|
"txtAddress" : "Address",
|
||||||
|
"txtProvider": "Provider",
|
||||||
|
"txtAlertProvider" : "Please enter provider"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,5 +34,9 @@
|
|||||||
"txtSupportingResultDocument" : "Dokumen Hasil Pendukung",
|
"txtSupportingResultDocument" : "Dokumen Hasil Pendukung",
|
||||||
"txtAddResult" : "Tambah Hasil",
|
"txtAddResult" : "Tambah Hasil",
|
||||||
"txtServiceType" : "Tipe Layanan",
|
"txtServiceType" : "Tipe Layanan",
|
||||||
"txtAdditionalDocuments" : "Dokumen Tambahan"
|
"txtAdditionalDocuments" : "Dokumen Tambahan",
|
||||||
|
"txtAddNew" : "Tambah Baru",
|
||||||
|
"txtAddress" : "Alamat",
|
||||||
|
"txtProvider": "Penyedia",
|
||||||
|
"txtAlertProvider" : "Mohon masukan provider"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,14 @@ import { useRef, useState, useContext } from 'react';
|
|||||||
import { makeFormData } from '@/utils/jsonToFormData';
|
import { makeFormData } from '@/utils/jsonToFormData';
|
||||||
import { format } from 'date-fns';
|
import { format } from 'date-fns';
|
||||||
import { LanguageContext } from '@/contexts/LanguageContext';
|
import { LanguageContext } from '@/contexts/LanguageContext';
|
||||||
|
import Autocomplete from '@mui/material/Autocomplete';
|
||||||
|
import TextField from '@mui/material/TextField';
|
||||||
|
import Button from '@mui/material/Button';
|
||||||
|
|
||||||
interface MemberType {
|
interface MemberType {
|
||||||
members: any;
|
members: any;
|
||||||
services: any;
|
services: any;
|
||||||
|
providers:any;
|
||||||
}
|
}
|
||||||
interface FormRequestClaimProps {
|
interface FormRequestClaimProps {
|
||||||
member: MemberType;
|
member: MemberType;
|
||||||
@@ -28,9 +32,15 @@ interface FormRequestClaimProps {
|
|||||||
export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRequestClaimProps) {
|
export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRequestClaimProps) {
|
||||||
const { localeData }: any = useContext(LanguageContext);
|
const { localeData }: any = useContext(LanguageContext);
|
||||||
const [serviceCode, setServiceCode] = useState<string>('');
|
const [serviceCode, setServiceCode] = useState<string>('');
|
||||||
|
const [idProvider, setIdProvider] = useState<number>(0);
|
||||||
|
|
||||||
const [submitLoading, setSubmitLoading] = useState<boolean>(false);
|
const [submitLoading, setSubmitLoading] = useState<boolean>(false);
|
||||||
function submitRequest() {
|
function submitRequest() {
|
||||||
|
if(!idProvider&& (name == '' || alamat == ''))
|
||||||
|
{
|
||||||
|
enqueueSnackbar(localeData.txtAlertProvider, { variant: 'warning' });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if(serviceCode == '')
|
if(serviceCode == '')
|
||||||
{
|
{
|
||||||
enqueueSnackbar(localeData.txtDialogMember4, { variant: 'warning' });
|
enqueueSnackbar(localeData.txtDialogMember4, { variant: 'warning' });
|
||||||
@@ -39,7 +49,10 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
|
|||||||
setSubmitLoading(true);
|
setSubmitLoading(true);
|
||||||
const formData = {
|
const formData = {
|
||||||
member_id: member.members.id,
|
member_id: member.members.id,
|
||||||
service_code: serviceCode
|
service_code: serviceCode,
|
||||||
|
id_provider: idProvider,
|
||||||
|
name_provider : name,
|
||||||
|
address_provider: alamat
|
||||||
};
|
};
|
||||||
axios
|
axios
|
||||||
.post('/request-log', formData)
|
.post('/request-log', formData)
|
||||||
@@ -64,8 +77,26 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
|
|||||||
name: string;
|
name: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface Providers {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const [showAddNewForm, setShowAddNewForm] = useState(false);
|
||||||
|
const [name, setName] = useState('');
|
||||||
|
const [alamat, setAlamat] = useState('');
|
||||||
|
|
||||||
|
const handleAddNewData = () => {
|
||||||
|
// Logika untuk menambahkan data baru ke database
|
||||||
|
// Pastikan untuk menyesuaikan logika ini sesuai dengan kebutuhan aplikasi Anda
|
||||||
|
console.log('Adding new data:', { name, alamat });
|
||||||
|
|
||||||
|
// Setelah menambahkan data baru, Anda mungkin ingin melakukan sesuatu seperti menutup formulir tambahan atau melakukan pengaturan lainnya
|
||||||
|
setShowAddNewForm(false);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack direction="column" spacing={4}>
|
<Stack direction="column" spacing={2}>
|
||||||
<Stack direction="row" justifyContent={'end'} sx={{ marginBottom: 2 }} spacing={2}>
|
<Stack direction="row" justifyContent={'end'} sx={{ marginBottom: 2 }} spacing={2}>
|
||||||
<Typography variant='body2' sx={{color: '#757575'}}>
|
<Typography variant='body2' sx={{color: '#757575'}}>
|
||||||
{localeData.txtDialogMember5}
|
{localeData.txtDialogMember5}
|
||||||
@@ -74,27 +105,71 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
|
|||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
<Stack direction="row" spacing={2}>
|
<Stack direction="row" spacing={2}>
|
||||||
<Stack spacing={2} sx={{width:'100%'}}>
|
<Stack spacing={2} sx={{ width: '100%' }}>
|
||||||
<Typography variant='subtitle1'>{localeData.txtDialogMember1}*</Typography>
|
<Typography variant='subtitle1'>{localeData.txtProvider} *</Typography>
|
||||||
<FormControl>
|
<Autocomplete
|
||||||
<InputLabel htmlFor="service_type">
|
id="provider"
|
||||||
{localeData.txtDialogMember1}
|
options={[{ name: localeData.txtAddNew, id: 0 }, ...member?.providers || []]}
|
||||||
</InputLabel>
|
getOptionLabel={(option: Providers) => option.name || ''}
|
||||||
<Select
|
value={member?.providers.find((item: Providers) => item.id === idProvider) || null}
|
||||||
id="service_type"
|
onChange={(event: React.ChangeEvent<{}>, newValue: Providers | null) => {
|
||||||
value={serviceCode}
|
if (newValue?.id === 0) {
|
||||||
|
// Pengguna memilih opsi "Tambahkan Data Baru"
|
||||||
|
setIdProvider(0); // Reset nilai
|
||||||
|
setShowAddNewForm(true); // Menampilkan formulir tambahan
|
||||||
|
} else {
|
||||||
|
// Pengguna memilih opsi dari hasil pencarian
|
||||||
|
setIdProvider(newValue?.id || 0);
|
||||||
|
setShowAddNewForm(false); // Menyembunyikan formulir tambahan
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField
|
||||||
|
{...params}
|
||||||
|
label={localeData.txtProvider}
|
||||||
fullWidth
|
fullWidth
|
||||||
label={localeData.txtDialogMember1}
|
/>
|
||||||
onChange={(e) => {
|
)}
|
||||||
setServiceCode(e.target.value);
|
/>
|
||||||
}}
|
{showAddNewForm && (
|
||||||
>
|
<Stack direction="column" spacing={1} padding={1}>
|
||||||
{member && member?.services?.map((item: MemberService, index:number) => (
|
<Typography variant='body2'>{localeData.txtAddNew} *</Typography>
|
||||||
<MenuItem key={index} value={item.service_code}>{item.name}</MenuItem>
|
<TextField
|
||||||
))}
|
label={localeData.txtName}
|
||||||
</Select>
|
fullWidth
|
||||||
|
onChange={(e) => setName(e.target.value)}
|
||||||
|
/>
|
||||||
|
<TextField
|
||||||
|
label={localeData.txtAddress}
|
||||||
|
fullWidth
|
||||||
|
onChange={(e) => setAlamat(e.target.value)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
)}
|
||||||
|
<FormHelperText style={{ color: 'red' }}></FormHelperText>
|
||||||
|
</Stack>
|
||||||
|
</Stack>
|
||||||
|
|
||||||
|
<Stack direction="row" spacing={2}>
|
||||||
|
<Stack spacing={2} sx={{ width: '100%' }}>
|
||||||
|
<Typography variant='subtitle1'>{localeData.txtDialogMember1} *</Typography>
|
||||||
|
<Autocomplete
|
||||||
|
id="service_type"
|
||||||
|
options={member?.services || []}
|
||||||
|
getOptionLabel={(option: MemberService) => option.name || ''}
|
||||||
|
value={member?.services.find((item: MemberService) => item.service_code === serviceCode) || null}
|
||||||
|
onChange={(event: React.ChangeEvent<{}>, newValue: MemberService | null) => {
|
||||||
|
setServiceCode(newValue?.service_code || '');
|
||||||
|
}}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField
|
||||||
|
{...params}
|
||||||
|
label={localeData.txtDialogMember1}
|
||||||
|
fullWidth
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
<FormHelperText style={{ color: 'red' }}></FormHelperText>
|
<FormHelperText style={{ color: 'red' }}></FormHelperText>
|
||||||
</FormControl>
|
|
||||||
</Stack>
|
</Stack>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user