Files

481 lines
17 KiB
PHP

<?php
namespace Modules\ClinicalData\Http\Controllers;
use Illuminate\Database\QueryException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Streamline\Models\County;
use Streamline\Models\District;
use Streamline\Models\Occupation;
use Streamline\Models\Parish;
use Streamline\Models\Subcounty;
use Streamline\Models\Village;
class ResidenceController
{
public function __construct()
{
}
public function get_counties($id)
{
$code = "<option> -- select -- </option>";
$counties = DB::table('counties')
->whereNull('deleted_at')
->where(['district_id' => $id])
->get();
foreach ($counties as $county) {
$code .= "<option value='" . $county->id . "'>" . $county->name . "</option>";
}
return $code;
}
public function get_subcounties($id)
{
$code = "<option> -- select -- </option>";
$subcounties = DB::table('subcounties')
->whereNull('deleted_at')
->where(['county_id' => $id])
->get();
foreach ($subcounties as $subcounty) {
$code .= "<option value='" . $subcounty->id . "'>" . $subcounty->name . "</option>";
}
$code .= "</select>";
return $code;
}
public function get_parishes($id)
{
$code = "<option> -- select -- </option>";
$parishes = DB::table('parishes')
->whereNull('deleted_at')
->where(['subcounty_id' => $id])
->get();
foreach ($parishes as $parish) {
$code .= "<option value='" . $parish->id . "'>" . $parish->name . "</option>";
}
return $code;
}
public function get_villages($id)
{
$code = "<option> -- select -- </option>";
$villages = DB::table('villages')
->whereNull('deleted_at')
->where(['parish_id' => $id])
->get();
foreach ($villages as $village) {
$code .= "<option value='" . $village->id . "'>" . $village->name . "</option>";
}
return $code;
}
/*
* get patient residences and send corresponding drop down options
*/
public function search_districts(Request $request) {
$data = [];
if ($request->has('q')) {
$search = $request->q;
$data = DB::table('districts')->select("name", "id")
->where('name', 'LIKE', "%$search%")
->get();
}
return response()->json($data);
}
public function search_counties(Request $request) {
$data = [];
if ($request->has('q')) {
$search = $request->q;
$data = DB::table('counties')->leftJoin('districts', 'districts.id', '=', 'counties.district_id')
->select("counties.name", "counties.id", "districts.name as district_name")
->where('counties.name', 'LIKE', "%$search%")
->get();
}
return response()->json($data);
}
public function search_subcounties(Request $request) {
$data = [];
if ($request->has('q')) {
$search = $request->q;
$data = DB::table('subcounties')->leftJoin('counties', 'counties.id', '=', 'subcounties.county_id')
->select("subcounties.name", "subcounties.id", "counties.name as county_name")
->where('subcounties.name', 'LIKE', "%$search%")
->get();
}
return response()->json($data);
}
public function search_parishes(Request $request) {
$data = [];
if ($request->has('q')) {
$search = $request->q;
$data = DB::table('parishes')->leftJoin('subcounties', 'subcounties.id', '=', 'parishes.subcounty_id')
->select("parishes.name", "parishes.id", "subcounties.name as sub_county_name")
->where('parishes.name', 'LIKE', "%$search%")
->get();
}
return response()->json($data);
}
public function search_villages(Request $request) {
$data = [];
if ($request->has('q')) {
$search = $request->q;
$data = DB::table('villages')->leftJoin('parishes', 'parishes.id', '=', 'villages.parish_id')
->select("villages.name", "villages.id", "parishes.name as parish_name")
->where('villages.name', 'LIKE', "%$search%")
->get();
}
return response()->json($data);
}
public function get_residence($district_id)
{
//loop is going to take long execution time
$villages_array = [];
$parishes_array = [];
$subcounties_array = [];
$counties = DB::table('counties')->where(['district_id' => $district_id])->whereNull('deleted_at')->pluck("name", "id");
foreach ($counties as $county_id => $county_name) {
$subcounties = DB::table('subcounties')->where(['county_id' => $county_id])->whereNull('deleted_at')->get();
foreach ($subcounties as $subcounty) {
$subcounties_array[$subcounty->id] = $subcounty->name;
$parishes = DB::table('parishes')->where(['subcounty_id' => $subcounty->id])->whereNull('deleted_at')->get();
foreach ($parishes as $parish) {
$parishes_array[$parish->id] = $parish->name;
$villages = DB::table('villages')->where(['parish_id' => $parish->id])->whereNull('deleted_at')->get();
foreach ($villages as $village) {
$villages_array[$village->id] = $village->name;
}
}
}
}
return ['subcounties' => $subcounties_array, 'parishes' => $parishes_array, 'villages' => $villages_array];
}
public function get_residence_district($district_id)
{
//loop is going to take long execution time
$villages_array = [];
$parishes_array = [];
$sub_counties_array = [];
$counties_array = [];
$residences_array = [];
$counties = DB::table('counties')->where(['district_id' => $district_id])->whereNull('deleted_at')->orderBy("name", "asc")->pluck("name", "id");
foreach ($counties as $county_id => $county_name) {
$counties_array[$county_id] = $county_name;
$subcounties = DB::table('subcounties')->where(['county_id' => $county_id])->whereNull('deleted_at')->get();
foreach ($subcounties as $subcounty) {
$sub_counties_array[$subcounty->id] = $subcounty->name;
$parishes = DB::table('parishes')->where(['subcounty_id' => $subcounty->id])->whereNull('deleted_at')->get();
foreach ($parishes as $parish) {
$parishes_array[$parish->id] = $parish->name;
$villages = DB::table('villages')->where(['parish_id' => $parish->id])->whereNull('deleted_at')->get();
foreach ($villages as $village) {
$villages_array[$village->id] = $village->name;
}
}
}
}
$residences_array['counties'] = $counties_array;
$residences_array['subcounties'] = $sub_counties_array;
$residences_array['parishes'] = $parishes_array;
$residences_array['villages'] = $villages_array;
return json_encode($residences_array);
}
public function get_residence_county($county_id)
{
//loop is going to take long execution time
$villages_array = [];
$parishes_array = [];
$sub_counties_array = [];
$residences_array = [];
$subcounties = DB::table('subcounties')->where(['county_id' => $county_id])->whereNull('deleted_at')->orderBy("name", "asc")->get();
foreach ($subcounties as $subcounty) {
$sub_counties_array[$subcounty->id] = $subcounty->name;
$parishes = DB::table('parishes')->where(['subcounty_id' => $subcounty->id])->whereNull('deleted_at')->get();
foreach ($parishes as $parish) {
$parishes_array[$parish->id] = $parish->name;
$villages = DB::table('villages')->where(['parish_id' => $parish->id])->whereNull('deleted_at')->get();
foreach ($villages as $village) {
$villages_array[$village->id] = $village->name;
}
}
}
$residences_array['subcounties'] = $sub_counties_array;
$residences_array['parishes'] = $parishes_array;
$residences_array['villages'] = $villages_array;
return json_encode($residences_array);
}
public function get_residence_sub_county($sub_county_id)
{
//loop is going to take long execution time
$villages_array = [];
$parishes_array = [];
$residences_array = [];
$parishes = DB::table('parishes')->where(['subcounty_id' => $sub_county_id])->whereNull('deleted_at')->orderBy("name", "asc")->get();
foreach ($parishes as $parish) {
$parishes_array[$parish->id] = $parish->name;
$villages = DB::table('villages')->where(['parish_id' => $parish->id])->whereNull('deleted_at')->get();
foreach ($villages as $village) {
$villages_array[$village->id] = $village->name;
}
}
$residences_array['parishes'] = $parishes_array;
$residences_array['villages'] = $villages_array;
return json_encode($residences_array);
}
public function get_residence_parish($parish_id)
{
//loop is going to take long execution time
$villages_array = [];
$residences_array = [];
$villages = DB::table('villages')->where(['parish_id' => $parish_id])->whereNull('deleted_at')->orderBy("name", "asc")->get();
foreach ($villages as $village) {
$villages_array[$village->id] = $village->name;
}
$residences_array['villages'] = $villages_array;
return json_encode($residences_array);
}
/* cater for adding a new occupation from a modal dynamically */
public function add_new_occupation_dynamically(Request $request)
{
$occupation = new Occupation;
$occupation->name = $request->name;
$occupation->created_by = Auth::user()->id;
$occupation->updated_by = Auth::user()->id;
try {
$occupation->save();
return $occupation->id;
} catch (QueryException $e) {
flash("An error occurred")->error();
return back()->withInput();
}
}
public function add_new_district_dynamically(Request $request)
{
$district = new District;
$district->name = $request->name;
$district->created_by = Auth::user()->id;
$district->updated_by = Auth::user()->id;
$check = District::where('name', $request->name)->pluck('name')->first();
if (is_null($check)) {
try {
$district->save();
return $district->id;
} catch (QueryException $e) {
flash("An error occurred")->error();
return back()->withInput();
}
} else {
return 'false';
}
}
public function add_new_county_dynamically(Request $request)
{
$county = new County;
$county->name = $request->name;
$county->district_id = $request->district_id;
$county->created_by = Auth::user()->id;
$county->updated_by = Auth::user()->id;
$check = County::where('name', $request->name)->pluck('name')->first();
if (is_null($check)) {
try {
$county->save();
return $county->id;
} catch (QueryException $e) {
flash("An error occurred")->error();
return back()->withInput();
}
} else {
return 'false';
}
}
public function add_new_subcounty_dynamically(Request $request)
{
$sub_county = new Subcounty;
$sub_county->name = $request->name;
$sub_county->county_id = $request->county_id;
$sub_county->created_by = Auth::user()->id;
$sub_county->updated_by = Auth::user()->id;
$check = Subcounty::where('name', $request->name)->pluck('name')->first();
if (is_null($check)) {
try {
$sub_county->save();
return $sub_county->id;
} catch (QueryException $e) {
flash("An error occurred")->error();
return back()->withInput();
}
} else {
return 'false';
}
}
public function add_new_parish_dynamically(Request $request)
{
$parish = new Parish;
$parish->name = $request->name;
$parish->subcounty_id = $request->subcounty_id;
$parish->created_by = Auth::user()->id;
$parish->updated_by = Auth::user()->id;
$check = Parish::where('name', $request->name)->pluck('name')->first();
if (is_null($check)) {
try {
$parish->save();
return $parish->id;
} catch (QueryException $e) {
flash("An error occurred")->error();
return back()->withInput();
}
} else {
return 'false';
}
}
public function add_new_village_dynamically(Request $request)
{
$village = new Village;
$village->name = $request->name;
$village->parish_id = $request->parish_id;
$village->created_by = Auth::user()->id;
$village->updated_by = Auth::user()->id;
$check = Village::where('name', $request->name)->pluck('name')->first();
if (is_null($check)) {
try {
$village->save();
return $village->id;
} catch (QueryException $e) {
flash("An error occurred")->error();
return back()->withInput();
}
} else {
return 'false';
}
}
public function quick_add_residence(Request $request)
{
$district_id = $request->district_id;
$new_district_name = $request->new_district_name;
$county_id = $request->county_id;
$new_county_name = $request->new_county_name;
$subcounty_id = $request->subcounty_id;
$new_subcounty_name = $request->new_subcounty_name;
$parish_id = $request->parish_id;
$new_parish_name = $request->new_parish_name;
$village_id = 0;
$new_village_name = $request->new_village_name;
if (!isset($district_id) && isset($new_district_name)) {
$district = new District;
$district->name = $new_district_name;
$district->created_by = Auth::user()->id;
$district->updated_by = Auth::user()->id;
$district->save();
$district_id = $district->id;
}
if (!isset($county_id) && isset($new_county_name) && is_numeric($district_id)) {
$county = new County;
$county->name = $new_county_name;
$county->district_id = $district_id;
$county->created_by = Auth::user()->id;
$county->updated_by = Auth::user()->id;
$county->save();
$county_id = $county->id;
}
if (!isset($subcounty_id) && isset($new_subcounty_name) && is_numeric($county_id)) {
$sub_county = new Subcounty;
$sub_county->name = $new_subcounty_name;
$sub_county->county_id = $county_id;
$sub_county->created_by = Auth::user()->id;
$sub_county->updated_by = Auth::user()->id;
$sub_county->save();
$subcounty_id = $sub_county->id;
}
if (!isset($parish_id) && isset($new_parish_name) && is_numeric($subcounty_id)) {
$parish = new Parish;
$parish->name = $new_parish_name;
$parish->subcounty_id = $subcounty_id;
$parish->created_by = Auth::user()->id;
$parish->updated_by = Auth::user()->id;
$parish->save();
$parish_id = $parish->id;
}
if (isset($new_village_name)) {
$village = new Village;
$village->name = $new_village_name;
$village->parish_id = is_numeric($parish_id) ? $parish_id : 0;
$village->created_by = Auth::user()->id;
$village->updated_by = Auth::user()->id;
$village->save();
$village_id = $village->id;
}
return (is_numeric($village_id) ? $village_id : 0) . "," . (is_numeric($parish_id) ? $parish_id : 0) . "," . (is_numeric($subcounty_id) ? $subcounty_id : 0) . "," .
(is_numeric($county_id) ? $county_id : 0) . "," . (is_numeric($district_id) ? $district_id : 0);
}
}