File: /mnt/data/ghayatcom/ghayatcom-api/app/Library/HealthProfileLibrary.php
<?php
namespace App\Library;
use App\AlcoholConsumption;
use App\Allergie;
use App\DietaryRestrictions;
use App\HealthProfileAlcoholConsumptions;
use App\HealthProfileAllergie;
use App\HealthProfileDietaryRestrictions;
use App\HealthProfileMedicalCondition;
use App\HealthProfileMedication;
use App\HealthProfileProcedure;
use App\HealthProfileProsthesis;
use App\HealthProfileRecreationalDrugs;
use App\HealthProfileTobaccoUses;
use App\MedicalCondition;
use App\Medication;
use App\Procedure;
use App\ProsthesisImplantsGrafts;
use App\RecreationalDrugs;
use App\TobaccoUse;
use App\User;
class HealthProfileLibrary
{
public function healthProfileMasterGroup($id, $name, $type, $user_id, $auth_id)
{
if (in_array($type, ['allergies', 'medical_conditions', 'medications', 'procedures', 'prosthesis', 'dietary_restrictions', 'recreational_drugs', 'alcohol_consumption', 'tobacco_use']) && ! empty($user_id)) {
//!empty($id) &&
$nameExplode = explode(',', $name);
$nameExplode = array_filter($nameExplode);
$idExplode = explode(',', $id);
$idExplode = array_filter($idExplode);
if (count($nameExplode) > 0) {
$findArrId = [];
$insertedArrId = [];
for ($i = 0; $i < count($nameExplode); $i++) {
//variable declaration
$nameInner = $nameExplode[$i];
if ($type == 'allergies') {
$query = new Allergie;
} elseif ($type == 'medical_conditions') {
$query = new MedicalCondition;
} elseif ($type == 'medications') {
$query = new Medication;
} elseif ($type == 'procedures') {
$query = new Procedure;
} elseif ($type == 'recreational_drugs') {
$query = new RecreationalDrugs;
} elseif ($type == 'prosthesis') {
$query = new ProsthesisImplantsGrafts;
} elseif ($type == 'dietary_restrictions') {
$query = new DietaryRestrictions;
} elseif ($type == 'alcohol_consumption') {
$query = new AlcoholConsumption;
} elseif ($type == 'tobacco_use') {
$query = new TobaccoUse;
} else {
$query = new Allergie;
}
$queryBuilder = $query->where('name', $nameInner)->first();
if ($queryBuilder != '') {
$findArrId[] = $queryBuilder->id;
} else {
$query->name = ucfirst(strtolower($nameInner));
$query->created_by = $auth_id;
$query->updated_by = $auth_id;
$query->save();
$lastInsertId = $query->id;
$insertedArrId[] = $lastInsertId;
}
}
$arrResultSet = array_merge(array_values(array_unique(array_merge($idExplode, $findArrId))), $insertedArrId);
} else {
$arrResultSet = $idExplode;
}
if (count($arrResultSet) > 0) {
if ($type == 'allergies') {
$createQuery = new HealthProfileAllergie();
$unique_column = 'allergie_id';
} elseif ($type == 'medical_conditions') {
$unique_column = 'medical_condition_id';
$createQuery = new HealthProfileMedicalCondition();
} elseif ($type == 'medications') {
$unique_column = 'medication_id';
$createQuery = new HealthProfileMedication();
} elseif ($type == 'procedures') {
$unique_column = 'procedure_id';
$createQuery = new HealthProfileProcedure();
} elseif ($type == 'recreational_drugs') {
$unique_column = 'recreational_id';
$createQuery = new HealthProfileRecreationalDrugs();
} elseif ($type == 'prosthesis') {
$unique_column = 'prosthesis_id';
$createQuery = new HealthProfileProsthesis();
} elseif ($type == 'dietary_restrictions') {
$unique_column = 'dietary_id';
$createQuery = new HealthProfileDietaryRestrictions();
} elseif ($type == 'alcohol_consumption') {
$unique_column = 'consumption_id';
$createQuery = new HealthProfileAlcoholConsumptions();
} elseif ($type == 'tobacco_use') {
$unique_column = 'tobacco_use_id';
$createQuery = new HealthProfileTobaccoUses();
} else {
$createQuery = new HealthProfileAllergie();
$unique_column = 'allergie_id';
}
//Delete
// $existBuilder = $createQuery->where('user_id', $user_id);
// if ($existBuilder->count() > 0) {
// $existBuilder->update(['deleted_by' => $auth_id]);
// $existBuilder->delete();
// }
$tableId = '';
for ($i = 0; $i < count($arrResultSet); $i++) {
$idOf = $arrResultSet[$i];
$existBuilder = $createQuery->where('user_id', $user_id)->where($unique_column, $idOf)->first();
if ($existBuilder) {
$tableId .= $existBuilder->id.',';
}else{
$getId = $createQuery->create([
'user_id' => $user_id,
$unique_column => $idOf,
'created_by' => $auth_id,
'updated_by' => $auth_id,
]);
$tableId .= $getId->id.',';
}
} //end for
$tableId = explode(",",rtrim($tableId,','));
// if(!empty($tableId)){
$del = $createQuery->where('user_id', $user_id)->whereNotIn('id', $tableId)->delete();
// }
return true;
} else {
return true;
}
} else {
return false;
}
}
public function healthProfileFetch($user_id, $type = 'first')
{
$healthProfile = new User();
$query = $healthProfile->with(['healthProfile' => function ($query) {
// $query->select(['allergie_id','user_id']);
}, 'allergieHealthProfile' => function ($query) {
$query->select(['allergie_id', 'user_id']);
},
'medicalConditionHealthProfile' => function ($query) {
$query->select(['medical_condition_id', 'user_id']);
},
'medicationHealthProfile' => function ($query) {
$query->select(['medication_id', 'user_id']);
},
'procedureHealthProfile' => function ($query) {
$query->select(['procedure_id', 'user_id']);
},
'prosthesisHealthProfile' => function ($query) {
$query->select(['prosthesis_id', 'user_id']);
},
'dietaryRestrictionHealthProfile' => function ($query) {
$query->select(['dietary_id', 'user_id']);
},
'recreationalDrugHealthProfile' => function ($query) {
$query->select(['recreational_id', 'user_id']);
},
'alcoholConsumptionHealthProfile' => function ($query) {
$query->select(['consumption_id', 'user_id']);
},
'tobaccoUseHealthProfile' => function ($query) {
$query->select(['tobacco_use_id', 'user_id']);
},
'vaccinationHealthProfile' => function ($query) {
$query->select(['vaccination_id', 'user_id', 'upload']);
}, ])->find($user_id);
return $query;
}
public function patientUserCompletionLvlFour($user_id = null)
{
$query = User::role('patient')->find($user_id);
if ($query != '') {
if ($query->user_completion < 4) {
if ($query->user_completion == 3) {
$query->user_completion = 4;
$query->save();
}
}
}
}
}