HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1014-azure #14~24.04.1-Ubuntu SMP Fri Oct 3 20:52:11 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
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();
                }
            }
        }
    }
}