where('id', $item_id)->first();
break;
case 2:
$item = DB::table('procedures')->where('id', $item_id)->first();
break;
case 3:
$item = DB::table('investigations')->where('id', $item_id)->first();
break;
case 4:
$item = DB::table('drugs')->where('id', $item_id)->first();
break;
case 5:
$item = DB::table('sundries')->where('id', $item_id)->first();
break;
}
$item_details = get_item_insurance_details($item_id, $item_type, $benefit_id);
$item_name = $item ? $item->name : '';
$item_cash_price = $item ? $item->non_insured_price : 0;
$co_payment = $item_details ? $item_details['co_payment'] : 0;
$ipd_co_payment = $item_details ? ($item_details['ipd_co_payment'] ?? 0) : 0;
return view('insurance::insurance_tariffs.add_tariff', compact('benefit', 'item_type', 'item_name', 'item_id', 'item_cash_price', 'co_payment', 'ipd_co_payment'));
}
public function save_tariff(Request $request) {
request()->validate([
'age_limit_start' => 'nullable|required_with:age_limit_end|integer',
'age_limit_end' =>'bail|nullable|required_with:age_limit_start|integer'
]);
$tariff = new InsuranceTariff();
$tariff->benefit_id = $request->benefit_id;
$tariff->plan_id = get_name($request->benefit_id, 'id', 'plan_id', 'insurance_benefits');
$tariff->item_id = $request->item_id;
$tariff->item_type = $request->item_type;
$tariff->name = $request->tariff_name;
$tariff->age_limit = $request->age_limit_start . ',' . $request->age_limit_end;
$tariff->age_type = $request->age_type;
$tariff->gender = $request->gender;
$tariff->authorisation_required = $request->authorisation;
$tariff->tariff_price = $request->tariff_price;
$tariff->ipd_tariff_price = $request->ipd_tariff_price;
$tariff->created_by = Auth::id();
try {
$tariff->save();
flash("Tariff has been added to the item")->success();
return redirect('/insurance_benefits/view_items/' . $request->benefit_id . '/' . $request->item_type);
} catch (\Exception $e) {
flash("An error occurred. Please try again later")->error();
return back()->withInput();
}
}
public function get_item_tariffs($benefit_id, $item_id, $item_type) {
$tariffs = InsuranceTariff::where('benefit_id', $benefit_id)
->where('item_id', $item_id)->where('item_type', $item_type)->get();
$time_periods = [0 => 'Days', 1 => 'Months', 2 => 'Years'];
$genders = [0 => 'All', 1 => 'Male', 2 => 'Female'];
if (count($tariffs) > 0) {
$return_code = "
";
$return_code .= "| " . __('insurance_benefits.tariff_name') . " | ";
$return_code .= "" . __('insurance_benefits.gender') . " | " . __('insurance_benefits.age_limit') . " | ";
$return_code .= "" . __('insurance_benefits.tariff_price') . " | " . __('insurance_benefits.ipd_tariff_price') . " | " . __('insurance_benefits.authorisation') . " | ";
$return_code .= " | |
";
$return_code .= "";
$return_code .= "";
foreach ($tariffs as $tariff) {
$age_limits = explode(",", $tariff->age_limit);
$return_code .= "";
$return_code .= "| " . $tariff->name . " | ";
$return_code .= "" . ($genders[$tariff->gender] ?? 'All') . " | ";
$return_code .= "" . ($age_limits[0] ?? "0") . ' to ' . ($age_limits[1] ?? "0") . ' ' . $time_periods[$tariff->age_type] ?? 'years' . " | ";
$return_code .= "" . ugandan_shillings($tariff->tariff_price) . " | ";
$return_code .= "" . ugandan_shillings($tariff->ipd_tariff_price) . " | ";
$return_code .= "" . ($tariff->authorisation == 1 ? 'Yes' : 'No') . " | ";
$return_code .= "" . (Auth::user()->can('insurance-tariffs-edit') ? "Edit" : "") . " | ";
$return_code .= "" . (Auth::user()->can('insurance-tariffs-delete') ? "Deactivate" : "") . " | ";
$return_code .= "
";
}
$return_code .= "";
$return_code .= "
";
return $return_code;
} else {
return "No tariffs registered for this item
";
}
}
public function edit($id) {
$tariff = InsuranceTariff::find($id);
$benefit = InsuranceBenefit::find($tariff->benefit_id);
$item_id = $tariff->item_id;
$item_type = $tariff->item_type;
$item = false;
switch ($item_type) {
case 1:
$item = DB::table('services')->where('id', $item_id)->first();
break;
case 2:
$item = DB::table('procedures')->where('id', $item_id)->first();
break;
case 3:
$item = DB::table('investigations')->where('id', $item_id)->first();
break;
case 4:
$item = DB::table('drugs')->where('id', $item_id)->first();
break;
case 5:
$item = DB::table('sundries')->where('id', $item_id)->first();
break;
}
$item_details = get_item_insurance_details($item_id, $item_type, $tariff->benefit_id);
$item_name = $item ? $item->name : '';
$item_cash_price = $item ? $item->non_insured_price : 0;
$co_payment = $item_details ? $item_details['co_payment'] : 0;
$ipd_co_payment = $item_details ? ($item_details['ipd_co_payment'] ?? 0) : 0;
return view('insurance::insurance_tariffs.edit', compact('tariff', 'benefit', 'item_type', 'item_name', 'item_id', 'co_payment', 'item_cash_price', 'ipd_co_payment'));
}
public function update_tariff(Request $request) {
request()->validate([
'age_limit_start' => 'nullable|required_with:age_limit_end|integer',
'age_limit_end' =>'bail|nullable|required_with:age_limit_start|integer'
]);
$tariff = InsuranceTariff::find($request->tariff_id);
$tariff->name = $request->name;
$tariff->age_limit = $request->age_limit_start . ',' . $request->age_limit_end;
$tariff->age_type = $request->age_type;
$tariff->gender = $request->gender;
$tariff->authorisation_required = $request->authorisation;
$tariff->tariff_price = $request->tariff_price;
$tariff->ipd_tariff_price = $request->ipd_tariff_price;
$tariff->updated_by = Auth::id();
try {
$tariff->save();
flash("Tariff has been edited")->success();
return redirect('/insurance_benefits/view_items/' . $tariff->benefit_id . '/' . $tariff->item_type);
} catch (\Exception $e) {
flash("An error occurred. Please try again later")->error();
return back()->withInput();
}
}
public function delete($id) {
$tariff = InsuranceTariff::find($id);
try {
$tariff->delete();
flash("Insurance Tariff has been deactivated")->success();
return redirect("/insurance_benefits/");
} catch (QueryException $e) {
flash("An error occurred. Please try again later")->error();
return back()->withInput();
}
}
public function view_tariffs(Request $request) {
$filters = [];
$search_text = '';
$services = DB::table('services')->whereNull('deleted_at')->pluck('name', 'id');
$procedures = DB::table('procedures')->whereNull('deleted_at')->pluck('name', 'id');
$investigations = DB::table('investigations')->whereNull('deleted_at')->pluck('name', 'id');
$drugs = DB::table('drugs')->where('available', 1)->whereNull('deleted_at')->pluck('name', 'id');
$sundries = DB::table('sundries')->whereNull('deleted_at')->pluck('name', 'id');
$insurance_benefits = DB::table('insurance_benefits')->whereNull('deleted_at')->pluck('name', 'id')->toArray();
$insurance_benefits = ['' => '-- select --'] + $insurance_benefits;
$insurance_plans = DB::table('community_health_insurance_plans')->whereNull('deleted_at')->pluck('name', 'id')->toArray();
$insurance_plans = ['' => '-- select --'] + $insurance_plans;
if (!is_null($request->insurance_benefit) && is_numeric($request->insurance_benefit)) {
$filters[] = ['benefit_id', '=', $request->insurance_benefit];
$search_text = "Insurance Benefit: " . $insurance_benefits[$request->insurance_benefit] . " ";
}
if (!is_null($request->insurance_plan) && is_numeric($request->insurance_plan)) {
$filters[] = ['plan_id', '=', $request->insurance_plan];
$search_text = "Insurance Plan: " . $insurance_plans[$request->insurance_plan];
}
$tariffs = InsuranceTariff::where($filters)->get();
return view('insurance::insurance_tariffs.view_tariffs', compact('tariffs', 'services', 'procedures', 'investigations', 'drugs', 'sundries', 'insurance_benefits', 'insurance_plans', 'search_text'));
}
public function view_inactive_tariffs() {
$services = DB::table('services')->whereNull('deleted_at')->pluck('name', 'id');
$procedures = DB::table('procedures')->whereNull('deleted_at')->pluck('name', 'id');
$investigations = DB::table('investigations')->whereNull('deleted_at')->pluck('name', 'id');
$drugs = DB::table('drugs')->where('available', 1)->whereNull('deleted_at')->pluck('name', 'id');
$sundries = DB::table('sundries')->whereNull('deleted_at')->pluck('name', 'id');
$insurance_benefits = DB::table('insurance_benefits')->whereNull('deleted_at')->pluck('name', 'id')->toArray();
$insurance_benefits = ['' => '-- select --'] + $insurance_benefits;
$insurance_plans = DB::table('community_health_insurance_plans')->whereNull('deleted_at')->pluck('name', 'id')->toArray();
$insurance_plans = ['' => '-- select --'] + $insurance_plans;
$tariffs = InsuranceTariff::onlyTrashed()->get();
if (count($tariffs) < 1) {
flash()->error("There is no inactive tariffs");
return redirect('/insurance_tariffs/view_tariffs');
} else {
return view('insurance::insurance_tariffs.view_inactive_tariffs', compact('tariffs', 'services', 'procedures', 'investigations', 'drugs', 'sundries', 'insurance_benefits', 'insurance_plans'));
}
}
public function activate_tariff($id) {
$tariff = InsuranceTariff::withTrashed()->find($id);
if($tariff->restore()){
flash("Insurance tariff has been activated.")->success();
} else {
flash("An error occurred. Please try again later")->error();
}
return redirect('/insurance_tariffs/view_tariffs');
}
}