[WIP] Fix Rename to Coroporate
This commit is contained in:
@@ -18,7 +18,7 @@ class BenefitController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index(Request $request, $corporate_id)
|
public function index(Request $request, $corporate_id)
|
||||||
{
|
{
|
||||||
$benefits = MemberBenefit::query()
|
$benefits = Benefit::query()
|
||||||
->filter($request->all())
|
->filter($request->all())
|
||||||
->where('corporate_id', $corporate_id)
|
->where('corporate_id', $corporate_id)
|
||||||
->paginate(0)
|
->paginate(0)
|
||||||
@@ -98,7 +98,7 @@ class BenefitController extends Controller
|
|||||||
$reader = ReaderEntityFactory::createReaderFromFile(Storage::path('temp/'.$file_name));
|
$reader = ReaderEntityFactory::createReaderFromFile(Storage::path('temp/'.$file_name));
|
||||||
$reader->open(Storage::path('temp/'.$file_name));
|
$reader->open(Storage::path('temp/'.$file_name));
|
||||||
|
|
||||||
$headers_map_to_table_fields = MemberBenefit::$doc_headers_to_field_map;
|
$headers_map_to_table_fields = Benefit::$doc_headers_to_field_map;
|
||||||
|
|
||||||
$imported_benefit_data = 0;
|
$imported_benefit_data = 0;
|
||||||
$failed_benefit_data = [];
|
$failed_benefit_data = [];
|
||||||
@@ -119,7 +119,7 @@ class BenefitController extends Controller
|
|||||||
// Create Directly
|
// Create Directly
|
||||||
$new_benefit_data['corporate_id'] = $corporate_id;
|
$new_benefit_data['corporate_id'] = $corporate_id;
|
||||||
try {
|
try {
|
||||||
MemberBenefit::updateOrCreate([
|
Benefit::updateOrCreate([
|
||||||
'corporate_id' => $corporate_id,
|
'corporate_id' => $corporate_id,
|
||||||
'code' => $new_benefit_data['code']
|
'code' => $new_benefit_data['code']
|
||||||
], $new_benefit_data);
|
], $new_benefit_data);
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
namespace Modules\Internal\Http\Controllers\Api;
|
namespace Modules\Internal\Http\Controllers\Api;
|
||||||
|
|
||||||
use App\Models\Benefit;
|
use App\Models\Benefit;
|
||||||
|
use App\Models\CorporateBenefit;
|
||||||
use Illuminate\Contracts\Support\Renderable;
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
class CorporateBenefitController extends Controller
|
class CorporateBenefitController extends Controller
|
||||||
{
|
{
|
||||||
@@ -15,7 +17,7 @@ class CorporateBenefitController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index(Request $request, $corporate_id)
|
public function index(Request $request, $corporate_id)
|
||||||
{
|
{
|
||||||
$benefits = Benefit::query()
|
$benefits = CorporateBenefit::query()
|
||||||
->filter($request->all())
|
->filter($request->all())
|
||||||
->where('corporate_id', $corporate_id)
|
->where('corporate_id', $corporate_id)
|
||||||
->paginate(0)
|
->paginate(0)
|
||||||
@@ -38,9 +40,23 @@ class CorporateBenefitController extends Controller
|
|||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return Renderable
|
* @return Renderable
|
||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(Request $request, $corporate_id)
|
||||||
{
|
{
|
||||||
//
|
$request->validate([
|
||||||
|
'code' => [
|
||||||
|
'required',
|
||||||
|
Rule::unique('corporate_benefits')->where('corporate_id', $corporate_id)
|
||||||
|
],
|
||||||
|
'name' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$newCorporatePlan = CorporateBenefit::create([
|
||||||
|
'corporate_id' => $corporate_id,
|
||||||
|
'code' => $request->code,
|
||||||
|
'name' => $request->name,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $newCorporatePlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,9 +74,11 @@ class CorporateBenefitController extends Controller
|
|||||||
* @param int $id
|
* @param int $id
|
||||||
* @return Renderable
|
* @return Renderable
|
||||||
*/
|
*/
|
||||||
public function edit($id)
|
public function edit($corporate_id, $id)
|
||||||
{
|
{
|
||||||
return view('internal::edit');
|
$benefit = CorporateBenefit::findOrFail($id);
|
||||||
|
|
||||||
|
return $benefit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,9 +87,25 @@ class CorporateBenefitController extends Controller
|
|||||||
* @param int $id
|
* @param int $id
|
||||||
* @return Renderable
|
* @return Renderable
|
||||||
*/
|
*/
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $corporate_id, $id)
|
||||||
{
|
{
|
||||||
//
|
|
||||||
|
$corporateBenefit = CorporateBenefit::findOrFail($id);
|
||||||
|
$request->validate([
|
||||||
|
'code' => [
|
||||||
|
'required',
|
||||||
|
Rule::unique('corporate_plans')->where('corporate_id', $corporate_id)->ignore($corporateBenefit->id)
|
||||||
|
],
|
||||||
|
'name' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$corporateBenefit->fill([
|
||||||
|
'code' => $request->code,
|
||||||
|
'name' => $request->name,
|
||||||
|
'active' => $request->active,
|
||||||
|
])->save();
|
||||||
|
|
||||||
|
return $corporateBenefit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -86,9 +86,24 @@ class CorporatePlanController extends Controller
|
|||||||
* @param int $id
|
* @param int $id
|
||||||
* @return Renderable
|
* @return Renderable
|
||||||
*/
|
*/
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $corporate_id, $id)
|
||||||
{
|
{
|
||||||
//
|
$corporatePlan = CorporatePlan::findOrFail($id);
|
||||||
|
$request->validate([
|
||||||
|
'code' => [
|
||||||
|
'required',
|
||||||
|
Rule::unique('corporate_plans')->where('corporate_id', $corporate_id)->ignore($corporatePlan->id)
|
||||||
|
],
|
||||||
|
'name' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$corporatePlan->fill([
|
||||||
|
'code' => $request->code,
|
||||||
|
'name' => $request->name,
|
||||||
|
'active' => $request->active,
|
||||||
|
])->save();
|
||||||
|
|
||||||
|
return $corporatePlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -35,16 +35,21 @@ Route::prefix('internal')->group(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Route::resource('corporates', CorporateController::class);
|
Route::resource('corporates', CorporateController::class);
|
||||||
Route::get('corporates/{corporate_id}/plans', [PlanController::class, 'index']);
|
|
||||||
Route::post('corporates/{corporate_id}/plans/import', [PlanController::class, 'planImport']);
|
|
||||||
|
|
||||||
Route::get('corporates/{corporate_id}/benefits', [BenefitController::class, 'index']);
|
|
||||||
Route::post('corporates/{corporate_id}/benefits/import', [BenefitController::class, 'memberBenefitImport']);
|
|
||||||
|
|
||||||
Route::get('corporates/{corporate_id}/corporate-plans', [CorporatePlanController::class, 'index']);
|
Route::get('corporates/{corporate_id}/corporate-plans', [CorporatePlanController::class, 'index']);
|
||||||
Route::post('corporates/{corporate_id}/corporate-plans', [CorporatePlanController::class, 'store']);
|
Route::post('corporates/{corporate_id}/corporate-plans', [CorporatePlanController::class, 'store']);
|
||||||
Route::get('corporates/{corporate_id}/corporate-plans/{id}/edit', [CorporatePlanController::class, 'edit']);
|
Route::get('corporates/{corporate_id}/corporate-plans/{id}/edit', [CorporatePlanController::class, 'edit']);
|
||||||
|
Route::put('corporates/{corporate_id}/corporate-plans/{id}', [CorporatePlanController::class, 'update']);
|
||||||
|
|
||||||
|
Route::get('corporates/{corporate_id}/plans', [PlanController::class, 'index']);
|
||||||
|
Route::post('corporates/{corporate_id}/plans/import', [PlanController::class, 'planImport']);
|
||||||
|
|
||||||
Route::get('corporates/{corporate_id}/corporate-benefits', [CorporateBenefitController::class, 'index']);
|
Route::get('corporates/{corporate_id}/corporate-benefits', [CorporateBenefitController::class, 'index']);
|
||||||
|
Route::post('corporates/{corporate_id}/corporate-benefits', [CorporateBenefitController::class, 'store']);
|
||||||
|
Route::get('corporates/{corporate_id}/corporate-benefits/{id}/edit', [CorporateBenefitController::class, 'edit']);
|
||||||
|
Route::put('corporates/{corporate_id}/corporate-benefits/{id}', [CorporateBenefitController::class, 'update']);
|
||||||
|
|
||||||
|
Route::get('corporates/{corporate_id}/benefits', [BenefitController::class, 'index']);
|
||||||
|
Route::post('corporates/{corporate_id}/benefits/import', [BenefitController::class, 'memberBenefitImport']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,19 +10,155 @@ class Benefit extends Model
|
|||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
"corporate_id",
|
'corporate_id',
|
||||||
"code",
|
'service_code',
|
||||||
"name",
|
'plan_code',
|
||||||
"description"
|
'benefit_code',
|
||||||
|
'code',
|
||||||
|
'description',
|
||||||
|
'budget',
|
||||||
|
'budget_conditions',
|
||||||
|
'budget_code',
|
||||||
|
'primary_benefit_code',
|
||||||
|
'benefit_mode',
|
||||||
|
'room_class_coverage',
|
||||||
|
'max_bed_coverage',
|
||||||
|
'tolerance_parameter',
|
||||||
|
'max_room_class',
|
||||||
|
'limit_amount',
|
||||||
|
'area_limit',
|
||||||
|
'shared_benefit',
|
||||||
|
'shared_benefit_type',
|
||||||
|
'msc',
|
||||||
|
'genders',
|
||||||
|
'min_age',
|
||||||
|
'max_age',
|
||||||
|
'max_frequency_period',
|
||||||
|
'daily_frequency',
|
||||||
|
'weekly_frequency',
|
||||||
|
'monthly_frequency',
|
||||||
|
'yearly_frequency',
|
||||||
|
'custom_frequency_days',
|
||||||
|
'custom_duration_value',
|
||||||
|
'allowed_transaction_types',
|
||||||
|
'high_plan_factor',
|
||||||
|
'pre_post_treatment',
|
||||||
|
'pre_treatment_days',
|
||||||
|
'post_treatment_days',
|
||||||
|
'layer_type_1',
|
||||||
|
'layer_value_1',
|
||||||
|
'layer_type_2',
|
||||||
|
'layer_value_2',
|
||||||
|
'cashless_percentage',
|
||||||
|
'reimbursement_percentage',
|
||||||
|
'digital_percentage',
|
||||||
|
'co_share_m_percentage',
|
||||||
|
'co_share_s_percentage',
|
||||||
|
'co_share_c_percentage',
|
||||||
|
'cashless_deductible',
|
||||||
|
'reimbursement_deductible',
|
||||||
|
'digital_deductible',
|
||||||
|
'co_share_m_deductible',
|
||||||
|
'co_share_s_deductible',
|
||||||
|
'co_share_c_deductible',
|
||||||
|
'prorate_type',
|
||||||
|
'prorate_lookup',
|
||||||
|
'max_days_for_disability',
|
||||||
|
'max_period_for_disability',
|
||||||
|
'currency',
|
||||||
|
'show_benefit_item',
|
||||||
|
'show_benefit_value',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public static $doc_headers_to_field_map = [
|
||||||
|
"Service" => 'service_code',
|
||||||
|
"Plan" => 'plan_code',
|
||||||
|
"Benefit Code" => 'benefit_code',
|
||||||
|
"Customer Benefit Code" => 'code',
|
||||||
|
"Detail Benefit" => 'description',
|
||||||
|
"ASO/Budget" => 'budget',
|
||||||
|
"Budget Condition" => 'budget_conditions',
|
||||||
|
"Budget Code" => 'budget_code',
|
||||||
|
"Primary benefit" => 'primary_benefit_code',
|
||||||
|
"Benefit Mode" => 'benefit_mode',
|
||||||
|
"Room Class" => 'room_class_coverage',
|
||||||
|
"Max Bed" => 'max_bed_coverage',
|
||||||
|
"Tolerance Paramater" => 'tolerance_parameter',
|
||||||
|
"Max. Room Class" => 'max_room_class',
|
||||||
|
"Limit Value" => 'limit_amount',
|
||||||
|
"Area" => 'area_limit',
|
||||||
|
"Shared Benefit With" => 'shared_benefit',
|
||||||
|
"Shared Benefit Type" => 'shared_benefit_type',
|
||||||
|
"MSC" => 'msc',
|
||||||
|
"Gender" => 'genders',
|
||||||
|
"Min Age" => 'min_age',
|
||||||
|
"Max Age" => 'max_age',
|
||||||
|
"Freq. Period" => 'max_frequency_period',
|
||||||
|
"Daily Frequency" => 'daily_frequency',
|
||||||
|
"Weekly Frequency" => 'weekly_frequency',
|
||||||
|
"Monthly Frequency" => 'monthly_frequency',
|
||||||
|
"Yearly Frequency" => 'yearly_frequency',
|
||||||
|
"Custom Duration" => 'custom_frequency_days',
|
||||||
|
"Custom Duration Value" => 'custom_duration_value',
|
||||||
|
"Cashless, Reimbursement" => 'allowed_transaction_types',
|
||||||
|
"High Plan Factor" => 'high_plan_factor',
|
||||||
|
"Pre Post Treatment" => 'pre_post_treatment',
|
||||||
|
"Pre Treatment" => 'pre_treatment_days',
|
||||||
|
"Post Treatment" => 'post_treatment_days',
|
||||||
|
"Layer Type 1" => 'layer_type_1',
|
||||||
|
"Layer Value 1" => 'layer_value_1',
|
||||||
|
"Layer Type 2" => 'layer_type_2',
|
||||||
|
"Layer Value 2" => 'layer_value_2',
|
||||||
|
"Cashless (%)" => 'cashless_percentage',
|
||||||
|
"Reimburse (%)" => 'reimbursement_percentage',
|
||||||
|
"Digital (%)" => 'digital_percentage',
|
||||||
|
"CoShareM (%)" => 'co_share_m_percentage',
|
||||||
|
"CoShareS (%)" => 'co_share_s_percentage',
|
||||||
|
"CoShareC (%)" => 'co_share_c_percentage',
|
||||||
|
"Cashless Deductible" => 'cashless_deductible',
|
||||||
|
"Reimbursement Deductible" => 'reimbursement_deductible',
|
||||||
|
"Digital Deductible" => 'digital_deductible',
|
||||||
|
"DeductibleM" => 'co_share_m_deductible',
|
||||||
|
"DeductibleS" => 'co_share_s_deductible',
|
||||||
|
"DeductibleC" => 'co_share_c_deductible',
|
||||||
|
"Prorate Type" => 'prorate_type',
|
||||||
|
"Prorate Lookup" => 'prorate_lookup',
|
||||||
|
"Max Days for Disability" => 'max_days_for_disability',
|
||||||
|
"Max Periode of Disability" => 'max_period_for_disability',
|
||||||
|
"Currency" => 'currency',
|
||||||
|
"Show Benefit Item" => 'show_benefit_item',
|
||||||
|
"Show Benefit Value" => 'show_benefit_value',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function setPrePostTreatmentAttribute($value)
|
||||||
|
{
|
||||||
|
return empty($value) ? null : ($value == 'Y');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPrePostTreatmentAttribute($value)
|
||||||
|
{
|
||||||
|
return empty($value) ? null : ($value ? 'Y' : 'N');
|
||||||
|
}
|
||||||
|
|
||||||
public function scopeFilter($query, array $filters)
|
public function scopeFilter($query, array $filters)
|
||||||
{
|
{
|
||||||
$query->when($filters['search'] ?? false, function ($query, $search) {
|
$query->when($filters['search'] ?? false, function ($query, $search) {
|
||||||
return $query
|
return $query
|
||||||
->where('code', 'like', "%" . $search . "%")
|
->where('service_code', 'like', "%" . $search . "%")
|
||||||
->orWhere('name', 'like', "%" . $search . "%")
|
->orWhere('code', 'like', "%" . $search . "%")
|
||||||
->orWhere('description', 'like', "%" . $search . "%");
|
->orWhereHas('plan', function ($query) use ($search) {
|
||||||
|
$query->where('code', 'like', "%" . $search . "%");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function benefit()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Benefit::class, 'benefit_code', 'code');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function plan()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Plan::class, 'plan_code', 'code');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,4 +8,26 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
class CorporateBenefit extends Model
|
class CorporateBenefit extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'corporate_id',
|
||||||
|
'code',
|
||||||
|
'name',
|
||||||
|
'description',
|
||||||
|
'active',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function corporate()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Corporate::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function scopeFilter($query, array $filters)
|
||||||
|
{
|
||||||
|
$query->when($filters['search'] ?? false, function ($query, $search) {
|
||||||
|
return $query
|
||||||
|
->where('code', 'like', "%" . $search . "%")
|
||||||
|
->orWhere('name', 'like', "%" . $search . "%");
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,164 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
|
|
||||||
class MemberBenefit extends Model
|
|
||||||
{
|
|
||||||
use HasFactory;
|
|
||||||
|
|
||||||
protected $fillable = [
|
|
||||||
'corporate_id',
|
|
||||||
'service_code',
|
|
||||||
'plan_code',
|
|
||||||
'benefit_code',
|
|
||||||
'code',
|
|
||||||
'description',
|
|
||||||
'budget',
|
|
||||||
'budget_conditions',
|
|
||||||
'budget_code',
|
|
||||||
'primary_benefit_code',
|
|
||||||
'benefit_mode',
|
|
||||||
'room_class_coverage',
|
|
||||||
'max_bed_coverage',
|
|
||||||
'tolerance_parameter',
|
|
||||||
'max_room_class',
|
|
||||||
'limit_amount',
|
|
||||||
'area_limit',
|
|
||||||
'shared_benefit',
|
|
||||||
'shared_benefit_type',
|
|
||||||
'msc',
|
|
||||||
'genders',
|
|
||||||
'min_age',
|
|
||||||
'max_age',
|
|
||||||
'max_frequency_period',
|
|
||||||
'daily_frequency',
|
|
||||||
'weekly_frequency',
|
|
||||||
'monthly_frequency',
|
|
||||||
'yearly_frequency',
|
|
||||||
'custom_frequency_days',
|
|
||||||
'custom_duration_value',
|
|
||||||
'allowed_transaction_types',
|
|
||||||
'high_plan_factor',
|
|
||||||
'pre_post_treatment',
|
|
||||||
'pre_treatment_days',
|
|
||||||
'post_treatment_days',
|
|
||||||
'layer_type_1',
|
|
||||||
'layer_value_1',
|
|
||||||
'layer_type_2',
|
|
||||||
'layer_value_2',
|
|
||||||
'cashless_percentage',
|
|
||||||
'reimbursement_percentage',
|
|
||||||
'digital_percentage',
|
|
||||||
'co_share_m_percentage',
|
|
||||||
'co_share_s_percentage',
|
|
||||||
'co_share_c_percentage',
|
|
||||||
'cashless_deductible',
|
|
||||||
'reimbursement_deductible',
|
|
||||||
'digital_deductible',
|
|
||||||
'co_share_m_deductible',
|
|
||||||
'co_share_s_deductible',
|
|
||||||
'co_share_c_deductible',
|
|
||||||
'prorate_type',
|
|
||||||
'prorate_lookup',
|
|
||||||
'max_days_for_disability',
|
|
||||||
'max_period_for_disability',
|
|
||||||
'currency',
|
|
||||||
'show_benefit_item',
|
|
||||||
'show_benefit_value',
|
|
||||||
];
|
|
||||||
|
|
||||||
public static $doc_headers_to_field_map = [
|
|
||||||
"Service" => 'service_code',
|
|
||||||
"Plan" => 'plan_code',
|
|
||||||
"Benefit Code" => 'benefit_code',
|
|
||||||
"Customer Benefit Code" => 'code',
|
|
||||||
"Detail Benefit" => 'description',
|
|
||||||
"ASO/Budget" => 'budget',
|
|
||||||
"Budget Condition" => 'budget_conditions',
|
|
||||||
"Budget Code" => 'budget_code',
|
|
||||||
"Primary benefit" => 'primary_benefit_code',
|
|
||||||
"Benefit Mode" => 'benefit_mode',
|
|
||||||
"Room Class" => 'room_class_coverage',
|
|
||||||
"Max Bed" => 'max_bed_coverage',
|
|
||||||
"Tolerance Paramater" => 'tolerance_parameter',
|
|
||||||
"Max. Room Class" => 'max_room_class',
|
|
||||||
"Limit Value" => 'limit_amount',
|
|
||||||
"Area" => 'area_limit',
|
|
||||||
"Shared Benefit With" => 'shared_benefit',
|
|
||||||
"Shared Benefit Type" => 'shared_benefit_type',
|
|
||||||
"MSC" => 'msc',
|
|
||||||
"Gender" => 'genders',
|
|
||||||
"Min Age" => 'min_age',
|
|
||||||
"Max Age" => 'max_age',
|
|
||||||
"Freq. Period" => 'max_frequency_period',
|
|
||||||
"Daily Frequency" => 'daily_frequency',
|
|
||||||
"Weekly Frequency" => 'weekly_frequency',
|
|
||||||
"Monthly Frequency" => 'monthly_frequency',
|
|
||||||
"Yearly Frequency" => 'yearly_frequency',
|
|
||||||
"Custom Duration" => 'custom_frequency_days',
|
|
||||||
"Custom Duration Value" => 'custom_duration_value',
|
|
||||||
"Cashless, Reimbursement" => 'allowed_transaction_types',
|
|
||||||
"High Plan Factor" => 'high_plan_factor',
|
|
||||||
"Pre Post Treatment" => 'pre_post_treatment',
|
|
||||||
"Pre Treatment" => 'pre_treatment_days',
|
|
||||||
"Post Treatment" => 'post_treatment_days',
|
|
||||||
"Layer Type 1" => 'layer_type_1',
|
|
||||||
"Layer Value 1" => 'layer_value_1',
|
|
||||||
"Layer Type 2" => 'layer_type_2',
|
|
||||||
"Layer Value 2" => 'layer_value_2',
|
|
||||||
"Cashless (%)" => 'cashless_percentage',
|
|
||||||
"Reimburse (%)" => 'reimbursement_percentage',
|
|
||||||
"Digital (%)" => 'digital_percentage',
|
|
||||||
"CoShareM (%)" => 'co_share_m_percentage',
|
|
||||||
"CoShareS (%)" => 'co_share_s_percentage',
|
|
||||||
"CoShareC (%)" => 'co_share_c_percentage',
|
|
||||||
"Cashless Deductible" => 'cashless_deductible',
|
|
||||||
"Reimbursement Deductible" => 'reimbursement_deductible',
|
|
||||||
"Digital Deductible" => 'digital_deductible',
|
|
||||||
"DeductibleM" => 'co_share_m_deductible',
|
|
||||||
"DeductibleS" => 'co_share_s_deductible',
|
|
||||||
"DeductibleC" => 'co_share_c_deductible',
|
|
||||||
"Prorate Type" => 'prorate_type',
|
|
||||||
"Prorate Lookup" => 'prorate_lookup',
|
|
||||||
"Max Days for Disability" => 'max_days_for_disability',
|
|
||||||
"Max Periode of Disability" => 'max_period_for_disability',
|
|
||||||
"Currency" => 'currency',
|
|
||||||
"Show Benefit Item" => 'show_benefit_item',
|
|
||||||
"Show Benefit Value" => 'show_benefit_value',
|
|
||||||
];
|
|
||||||
|
|
||||||
public function setPrePostTreatmentAttribute($value)
|
|
||||||
{
|
|
||||||
return empty($value) ? null : ($value == 'Y');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getPrePostTreatmentAttribute($value)
|
|
||||||
{
|
|
||||||
return empty($value) ? null : ($value ? 'Y' : 'N');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function scopeFilter($query, array $filters)
|
|
||||||
{
|
|
||||||
$query->when($filters['search'] ?? false, function ($query, $search) {
|
|
||||||
return $query
|
|
||||||
->where('service_code', 'like', "%" . $search . "%")
|
|
||||||
->orWhere('code', 'like', "%" . $search . "%")
|
|
||||||
->orWhereHas('plan', function ($query) use ($search) {
|
|
||||||
$query->where('code', 'like', "%" . $search . "%");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function benefit()
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Benefit::class, 'benefit_code', 'code');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function plan()
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Plan::class, 'plan_code', 'code');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,6 +19,7 @@ return new class extends Migration
|
|||||||
$table->string('code')->index();
|
$table->string('code')->index();
|
||||||
$table->string('name')->nullable();
|
$table->string('name')->nullable();
|
||||||
$table->text('description')->nullable();
|
$table->text('description')->nullable();
|
||||||
|
$table->boolean('active')->default(true);
|
||||||
|
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
$table->softDeletes();
|
$table->softDeletes();
|
||||||
|
|||||||
@@ -103,6 +103,15 @@ export type Plan = {
|
|||||||
max_surgery_periode_days: string;
|
max_surgery_periode_days: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type CorporateBenefit = {
|
||||||
|
id: number;
|
||||||
|
corporate_id: number;
|
||||||
|
code: string;
|
||||||
|
name: string;
|
||||||
|
description: string | null;
|
||||||
|
active: boolean | number;
|
||||||
|
}
|
||||||
|
|
||||||
export type Benefit = {
|
export type Benefit = {
|
||||||
service_code : string;
|
service_code : string;
|
||||||
plan_code : string;
|
plan_code : string;
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ export default function Divisions() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Corporate Name',
|
name: 'Corporate Name',
|
||||||
href: '/corporates/'+id,
|
href: '/corporates/'+corporate_id,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Benefit',
|
name: 'Benefit',
|
||||||
href: '/corporates/'+id+'/benefits',
|
href: '/corporates/'+corporate_id+'/benefits',
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import useSettings from '../../../hooks/useSettings';
|
|||||||
import { useParams, useSearchParams } from 'react-router-dom';
|
import { useParams, useSearchParams } from 'react-router-dom';
|
||||||
// components
|
// components
|
||||||
import axios from '../../../utils/axios';
|
import axios from '../../../utils/axios';
|
||||||
import { MemberBenefit } from '../../../@types/corporates';
|
|
||||||
import { LaravelPaginatedData } from '../../../@types/paginated-data';
|
import { LaravelPaginatedData } from '../../../@types/paginated-data';
|
||||||
|
|
||||||
export default function PlanList() {
|
export default function PlanList() {
|
||||||
@@ -88,7 +87,7 @@ export default function PlanList() {
|
|||||||
if (importPlan.current?.files.length) {
|
if (importPlan.current?.files.length) {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("file", importPlan.current?.files[0])
|
formData.append("file", importPlan.current?.files[0])
|
||||||
axios.post(`corporates/${id}/benefits/import`, formData )
|
axios.post(`corporates/${corporate_id}/benefits/import`, formData )
|
||||||
.then(response => {
|
.then(response => {
|
||||||
handleCancelImportButton();
|
handleCancelImportButton();
|
||||||
loadDataTableData();
|
loadDataTableData();
|
||||||
@@ -155,9 +154,9 @@ export default function PlanList() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Called on every row to map the data to the columns
|
// Called on every row to map the data to the columns
|
||||||
function createData( memberBenefit: MemberBenefit ): MemberBenefit {
|
function createData( benefit: Benefit ): Benefit {
|
||||||
return {
|
return {
|
||||||
...memberBenefit,
|
...benefit,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,7 +305,7 @@ export default function PlanList() {
|
|||||||
const loadDataTableData = async (appliedFilter = null) => {
|
const loadDataTableData = async (appliedFilter = null) => {
|
||||||
setDataTableLoading(true);
|
setDataTableLoading(true);
|
||||||
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
||||||
const response = await axios.get('/corporates/'+id+'/benefits', { params: filter });
|
const response = await axios.get('/corporates/'+corporate_id+'/benefits', { params: filter });
|
||||||
// console.log(response.data);
|
// console.log(response.data);
|
||||||
setDataTableLoading(false);
|
setDataTableLoading(false);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
import { useNavigate, useParams } from "react-router-dom";
|
||||||
|
import HeaderBreadcrumbs from "../../../components/HeaderBreadcrumbs";
|
||||||
|
import Page from "../../../components/Page";
|
||||||
|
import useSettings from "../../../hooks/useSettings";
|
||||||
|
import { useEffect, useMemo, useState } from 'react';
|
||||||
|
import axios from '../../../utils/axios';
|
||||||
|
import { useSnackbar } from 'notistack';
|
||||||
|
import CorporatePlanForm from './Form';
|
||||||
|
import { CorporatePlan } from '../../../@types/corporates';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export default function PlanCreate() {
|
||||||
|
const { themeStretch } = useSettings();
|
||||||
|
const { corporate_id, id } = useParams();
|
||||||
|
const [ currentCorporateBenefit, setCurrentCorporateBenefit ] = useState<CorporatePlan>();
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
|
const isEdit = !!id;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (isEdit) {
|
||||||
|
axios.get('/corporates/'+corporate_id+'/corporate-benefits/'+id+'/edit')
|
||||||
|
.then((res) => {
|
||||||
|
setCurrentCorporateBenefit(res.data);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
if (err.response.status === 404) {
|
||||||
|
navigate('/404');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}, [corporate_id, id]);
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page title="Create Corporate Benefit">
|
||||||
|
<HeaderBreadcrumbs
|
||||||
|
heading={'Create Corporate Benefit'}
|
||||||
|
links={[
|
||||||
|
{
|
||||||
|
name: 'Corporates',
|
||||||
|
href: '/corporates',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Corporate Name',
|
||||||
|
href: '/corporates/'+corporate_id,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Corporate Benefits',
|
||||||
|
href: '/corporates/'+corporate_id+'/corporate-benefits',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: !isEdit ? 'Create' : 'Edit',
|
||||||
|
href: '/corporates/'+corporate_id+'/corporate-benefits/'+id,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<CorporatePlanForm isEdit={isEdit} currentCorporateBenefit={currentCorporateBenefit}/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
import * as Yup from 'yup';
|
||||||
|
import { LoadingButton } from "@mui/lab";
|
||||||
|
import { Card, Grid, Stack, Typography } from "@mui/material";
|
||||||
|
import { CorporateBenefit } from "../../../@types/corporates";
|
||||||
|
import { FormProvider, RHFSwitch, RHFTextField } from "../../../components/hook-form";
|
||||||
|
import { useEffect, useMemo } from 'react';
|
||||||
|
import { useForm } from 'react-hook-form';
|
||||||
|
import { yupResolver } from '@hookform/resolvers/yup';
|
||||||
|
import { useSnackbar } from 'notistack';
|
||||||
|
import { useNavigate, useParams } from 'react-router-dom';
|
||||||
|
import axios from '../../../utils/axios';
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
isEdit: boolean;
|
||||||
|
currentCorporateBenefit?: CorporateBenefit;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function CorporatePlanForm({ isEdit, currentCorporateBenefit }: Props) {
|
||||||
|
|
||||||
|
const { enqueueSnackbar } = useSnackbar();
|
||||||
|
const navigate = useNavigate();
|
||||||
|
const { corporate_id } = useParams();
|
||||||
|
|
||||||
|
const NewCorporatePlanSchema = Yup.object().shape({
|
||||||
|
name: Yup.string().required('Name is required'),
|
||||||
|
code: Yup.string().required('Corporate Code is required'),
|
||||||
|
});
|
||||||
|
|
||||||
|
const defaultValues = useMemo(
|
||||||
|
() => ({
|
||||||
|
name: currentCorporateBenefit?.name || '',
|
||||||
|
code: currentCorporateBenefit?.code || '',
|
||||||
|
active: currentCorporateBenefit?.active === 1 ? true : false,
|
||||||
|
}),
|
||||||
|
[currentCorporateBenefit]
|
||||||
|
);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (isEdit && currentCorporateBenefit) {
|
||||||
|
reset(defaultValues);
|
||||||
|
}
|
||||||
|
if (!isEdit) {
|
||||||
|
reset(defaultValues);
|
||||||
|
}
|
||||||
|
}, [isEdit, currentCorporateBenefit]);
|
||||||
|
|
||||||
|
const methods = useForm({
|
||||||
|
resolver: yupResolver(NewCorporatePlanSchema),
|
||||||
|
defaultValues,
|
||||||
|
});
|
||||||
|
|
||||||
|
const {
|
||||||
|
reset,
|
||||||
|
watch,
|
||||||
|
control,
|
||||||
|
setValue,
|
||||||
|
getValues,
|
||||||
|
setError,
|
||||||
|
handleSubmit,
|
||||||
|
formState: { isSubmitting },
|
||||||
|
} = methods;
|
||||||
|
|
||||||
|
|
||||||
|
const onSubmit = async (data: any) => {
|
||||||
|
if (!isEdit) {
|
||||||
|
await axios
|
||||||
|
.post('/corporates/' + corporate_id + '/corporate-benefits', data)
|
||||||
|
.then((res) => {
|
||||||
|
enqueueSnackbar('Corporate Plan created successfully', { variant: 'success' });
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
navigate('/corporates/' + corporate_id + '/corporate-benefits', { replace: true });
|
||||||
|
})
|
||||||
|
.catch(({ response }) => {
|
||||||
|
if (response.status === 422) {
|
||||||
|
for (const [key, value] of Object.entries(response.data.errors)) {
|
||||||
|
setError(key, { message: value[0] });
|
||||||
|
enqueueSnackbar(value[0] ?? 'Failed Processing Request', { variant: 'error' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
enqueueSnackbar('Create Failed : '+ response.data.message, { variant: 'error' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
await axios
|
||||||
|
.put('/corporates/' + corporate_id + '/corporate-benefits/' + currentCorporateBenefit?.id , data)
|
||||||
|
.then((res) => {
|
||||||
|
enqueueSnackbar('Corporate Benefit updated successfully', { variant: 'success' });
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
navigate('/corporates/' + corporate_id + '/corporate-benefits/' , { replace: true });
|
||||||
|
})
|
||||||
|
.catch(({ response }) => {
|
||||||
|
enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<FormProvider methods={methods} onSubmit={handleSubmit(onSubmit)}>
|
||||||
|
<Grid container spacing={2}>
|
||||||
|
<Grid item xs={8}>
|
||||||
|
<Card sx={{ p: 2 }}>
|
||||||
|
<Stack spacing={3}>
|
||||||
|
|
||||||
|
<Typography variant="h6">Corporate Benefit Detail</Typography>
|
||||||
|
|
||||||
|
<RHFTextField name="name" label="Name" />
|
||||||
|
|
||||||
|
<RHFTextField name="code" label="Code" />
|
||||||
|
|
||||||
|
<LoadingButton type="submit" variant="contained" size="large" fullWidth={true} loading={isSubmitting}>
|
||||||
|
{isEdit ? 'Update' : 'Create'}
|
||||||
|
</LoadingButton>
|
||||||
|
|
||||||
|
</Stack>
|
||||||
|
</Card>
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={4}>
|
||||||
|
<Card sx={{ p:2 }}>
|
||||||
|
|
||||||
|
<RHFSwitch name="active" label="Active" />
|
||||||
|
</Card>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</FormProvider>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -26,11 +26,11 @@ export default function Divisions() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Corporate Name',
|
name: 'Corporate Name',
|
||||||
href: '/corporates/'+id,
|
href: '/corporates/'+corporate_id,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Corporate Benefit',
|
name: 'Corporate Benefit',
|
||||||
href: '/corporates/'+id+'/benefits',
|
href: '/corporates/'+corporate_id+'/benefits',
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -8,10 +8,9 @@ import CancelIcon from '@mui/icons-material/Cancel';
|
|||||||
// hooks
|
// hooks
|
||||||
import React, { Component, useEffect, useRef, useState } from 'react';
|
import React, { Component, useEffect, useRef, useState } from 'react';
|
||||||
import useSettings from '../../../hooks/useSettings';
|
import useSettings from '../../../hooks/useSettings';
|
||||||
import { useParams, useSearchParams } from 'react-router-dom';
|
import { Link, useParams, useSearchParams } from 'react-router-dom';
|
||||||
// components
|
// components
|
||||||
import axios from '../../../utils/axios';
|
import axios from '../../../utils/axios';
|
||||||
import { MemberBenefit } from '../../../@types/corporates';
|
|
||||||
import { LaravelPaginatedData } from '../../../@types/paginated-data';
|
import { LaravelPaginatedData } from '../../../@types/paginated-data';
|
||||||
|
|
||||||
export default function PlanList() {
|
export default function PlanList() {
|
||||||
@@ -47,7 +46,7 @@ export default function PlanList() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Called on every row to map the data to the columns
|
// Called on every row to map the data to the columns
|
||||||
function createData( benefit: Benefit ): Benefit {
|
function createData( benefit: CorporateBenefit ): CorporateBenefit {
|
||||||
return {
|
return {
|
||||||
...benefit,
|
...benefit,
|
||||||
}
|
}
|
||||||
@@ -74,7 +73,7 @@ export default function PlanList() {
|
|||||||
<TableCell align="left">{row.name}</TableCell>
|
<TableCell align="left">{row.name}</TableCell>
|
||||||
|
|
||||||
<TableCell align="right"><Button variant="outlined" color="success" size="small">Active</Button></TableCell>
|
<TableCell align="right"><Button variant="outlined" color="success" size="small">Active</Button></TableCell>
|
||||||
<TableCell align="right"><Button variant="outlined" color="success" size="small">Edit</Button></TableCell>
|
<TableCell align="right"><Link to={`/corporates/${row.corporate_id}/corporate-benefits/${row.id}/edit`}><Button variant="outlined" color="success" size="small">Edit</Button></Link></TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
{/* COLLAPSIBLE ROW */}
|
{/* COLLAPSIBLE ROW */}
|
||||||
<TableRow>
|
<TableRow>
|
||||||
@@ -143,7 +142,7 @@ export default function PlanList() {
|
|||||||
const loadDataTableData = async (appliedFilter = null) => {
|
const loadDataTableData = async (appliedFilter = null) => {
|
||||||
setDataTableLoading(true);
|
setDataTableLoading(true);
|
||||||
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
||||||
const response = await axios.get('/corporates/'+id+'/corporate-benefits', { params: filter });
|
const response = await axios.get('/corporates/'+corporate_id+'/corporate-benefits', { params: filter });
|
||||||
// console.log(response.data);
|
// console.log(response.data);
|
||||||
setDataTableLoading(false);
|
setDataTableLoading(false);
|
||||||
|
|
||||||
@@ -167,13 +166,15 @@ export default function PlanList() {
|
|||||||
<Stack>
|
<Stack>
|
||||||
<Stack direction={'row'} spacing={2} sx={{ p: 2 }}>
|
<Stack direction={'row'} spacing={2} sx={{ p: 2 }}>
|
||||||
<SearchInput onSearch={applyFilter}/>
|
<SearchInput onSearch={applyFilter}/>
|
||||||
<Button
|
<Link to={`/corporates/${corporate_id}/corporate-benefits/create`}>
|
||||||
id="upload-button"
|
<Button
|
||||||
variant='outlined'
|
id="upload-button"
|
||||||
startIcon={<AddIcon />} sx={{ p: 1.8 }}
|
variant='outlined'
|
||||||
>
|
startIcon={<AddIcon />} sx={{ p: 1.8 }}
|
||||||
Create
|
>
|
||||||
</Button>
|
Create
|
||||||
|
</Button>
|
||||||
|
</Link>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
<Card>
|
<Card>
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
|
|||||||
|
|
||||||
|
|
||||||
const onSubmit = async (data: any) => {
|
const onSubmit = async (data: any) => {
|
||||||
console.log('IS EDIT', isEdit);
|
|
||||||
if (!isEdit) {
|
if (!isEdit) {
|
||||||
await axios
|
await axios
|
||||||
.post('/corporates/' + corporate_id + '/corporate-plans', data)
|
.post('/corporates/' + corporate_id + '/corporate-plans', data)
|
||||||
@@ -84,18 +83,17 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log('EDITING')
|
|
||||||
await axios
|
await axios
|
||||||
.put('/corporates/' + corporate_id + '/corporate-plans/' + currentCorporatePlan?.id , data)
|
.put('/corporates/' + corporate_id + '/corporate-plans/' + currentCorporatePlan?.id , data)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
enqueueSnackbar('Corporate Plan created successfully', { variant: 'success' });
|
enqueueSnackbar('Corporate Plan updated successfully', { variant: 'success' });
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
navigate('/corporates/' + corporate_id + '/corporate-plans/' + currentCorporatePlan?.id , { replace: true });
|
navigate('/corporates/' + corporate_id + '/corporate-plans/' , { replace: true });
|
||||||
})
|
})
|
||||||
.catch(({ response }) => {
|
.catch(({ response }) => {
|
||||||
enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' });
|
enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -170,14 +170,15 @@ export default function PlanList() {
|
|||||||
<Stack direction={'row'} spacing={2} sx={{ p: 2 }}>
|
<Stack direction={'row'} spacing={2} sx={{ p: 2 }}>
|
||||||
<SearchInput onSearch={applyFilter}/>
|
<SearchInput onSearch={applyFilter}/>
|
||||||
<Link to={`/corporates/${corporate_id}/corporate-plans/create`}>
|
<Link to={`/corporates/${corporate_id}/corporate-plans/create`}>
|
||||||
<Button
|
<Button
|
||||||
component="button"
|
component="button"
|
||||||
id="upload-button"
|
id="upload-button"
|
||||||
variant='outlined'
|
variant='outlined'
|
||||||
startIcon={<AddIcon />} sx={{ p: 1.8 }}
|
startIcon={<AddIcon />} sx={{ p: 1.8 }}
|
||||||
>
|
>
|
||||||
Create
|
Create
|
||||||
</Button></Link>
|
</Button>
|
||||||
|
</Link>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
<Card>
|
<Card>
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ export default function Divisions() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Corporate Name',
|
name: 'Corporate Name',
|
||||||
href: '/corporates/'+id,
|
href: '/corporates/'+corporate_id,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Plan',
|
name: 'Plan',
|
||||||
href: '/corporates/'+id+'/plans',
|
href: '/corporates/'+corporate_id+'/plans',
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ export default function CorporatePlanList() {
|
|||||||
if (importPlan.current?.files.length) {
|
if (importPlan.current?.files.length) {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("file", importPlan.current?.files[0])
|
formData.append("file", importPlan.current?.files[0])
|
||||||
axios.post(`corporates/${id}/plans/import`, formData )
|
axios.post(`corporates/${corporate_id}/plans/import`, formData )
|
||||||
.then(response => {
|
.then(response => {
|
||||||
handleCancelImportButton();
|
handleCancelImportButton();
|
||||||
loadDataTableData();
|
loadDataTableData();
|
||||||
@@ -296,7 +296,7 @@ export default function CorporatePlanList() {
|
|||||||
const loadDataTableData = async (appliedFilter = null) => {
|
const loadDataTableData = async (appliedFilter = null) => {
|
||||||
setDataTableLoading(true);
|
setDataTableLoading(true);
|
||||||
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
||||||
const response = await axios.get('/corporates/'+id+'/plans', { params: filter });
|
const response = await axios.get('/corporates/'+corporate_id+'/plans', { params: filter });
|
||||||
// console.log(response.data);
|
// console.log(response.data);
|
||||||
setDataTableLoading(false);
|
setDataTableLoading(false);
|
||||||
|
|
||||||
|
|||||||
@@ -135,10 +135,18 @@ export default function Router() {
|
|||||||
path: 'corporates/:corporate_id/benefits',
|
path: 'corporates/:corporate_id/benefits',
|
||||||
element: <Benefits />,
|
element: <Benefits />,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'corporates/:corporate_id/corporate-benefits/create',
|
||||||
|
element: <CorporateBenefitsCreate />,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: 'corporates/:corporate_id/corporate-benefits',
|
path: 'corporates/:corporate_id/corporate-benefits',
|
||||||
element: <CorporateBenefits />,
|
element: <CorporateBenefits />,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'corporates/:corporate_id/corporate-benefits/:id/edit',
|
||||||
|
element: <CorporateBenefitsCreate />,
|
||||||
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@@ -193,11 +201,11 @@ const CorporateDivisionsCreate = Loadable(lazy(() => import('../pages/Corporates
|
|||||||
|
|
||||||
const CorporateMembers = Loadable(lazy(() => import('../pages/Corporates/Member/Index')));
|
const CorporateMembers = Loadable(lazy(() => import('../pages/Corporates/Member/Index')));
|
||||||
|
|
||||||
const BenefitCreate = Loadable(lazy(() => import('../pages/Corporates/CorporateBenefit/Create')));
|
const BenefitCreate = Loadable(lazy(() => import('../pages/Corporates/Benefit/Create')));
|
||||||
const Benefits = Loadable(lazy(() => import('../pages/Corporates/CorporateBenefit/Index')));
|
const Benefits = Loadable(lazy(() => import('../pages/Corporates/Benefit/Index')));
|
||||||
|
|
||||||
const CorporateBenefitsCreate = Loadable(lazy(() => import('../pages/Corporates/Benefit/Create')));
|
const CorporateBenefitsCreate = Loadable(lazy(() => import('../pages/Corporates/CorporateBenefit/CreateUpdate')));
|
||||||
const CorporateBenefits = Loadable(lazy(() => import('../pages/Corporates/Benefit/Index')));
|
const CorporateBenefits = Loadable(lazy(() => import('../pages/Corporates/CorporateBenefit/Index')));
|
||||||
|
|
||||||
const CorporatePlanCreate = Loadable(lazy(() => import('../pages/Corporates/CorporatePlan/CreateUpdate')));
|
const CorporatePlanCreate = Loadable(lazy(() => import('../pages/Corporates/CorporatePlan/CreateUpdate')));
|
||||||
const CorporatePlans = Loadable(lazy(() => import('../pages/Corporates/CorporatePlan/Index')));
|
const CorporatePlans = Loadable(lazy(() => import('../pages/Corporates/CorporatePlan/Index')));
|
||||||
|
|||||||
Reference in New Issue
Block a user