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 .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; foreach ($tariffs as $tariff) { $age_limits = explode(",", $tariff->age_limit); $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; $return_code .= ""; } $return_code .= ""; $return_code .= "
" . __('insurance_benefits.tariff_name') . "" . __('insurance_benefits.gender') . "" . __('insurance_benefits.age_limit') . "" . __('insurance_benefits.tariff_price') . "" . __('insurance_benefits.ipd_tariff_price') . "" . __('insurance_benefits.authorisation') . "
" . $tariff->name . "" . ($genders[$tariff->gender] ?? 'All') . "" . ($age_limits[0] ?? "0") . ' to ' . ($age_limits[1] ?? "0") . ' ' . $time_periods[$tariff->age_type] ?? 'years' . "" . ugandan_shillings($tariff->tariff_price) . "" . ugandan_shillings($tariff->ipd_tariff_price) . "" . ($tariff->authorisation == 1 ? 'Yes' : 'No') . "" . (Auth::user()->can('insurance-tariffs-edit') ? "Edit" : "") . "" . (Auth::user()->can('insurance-tariffs-delete') ? "Deactivate" : "") . "
"; 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'); } }