<?php
namespace App\Helper;
use App\Models\Divisi;
use App\Models\User;
class RoleHelper
{
//mengecek user punya atasan siapa
public static function parentRoleUser(User $user,$divisi_id = null, $role_id = null,$perusahaan_id = null)
{
$roles = ($role_id == null) ? $user->customRoles : $user->customRoles()->where('id', $role_id)->get();
foreach ($roles as $role) {
$_user = null;
if($role->parentRole && $role->parentRole->parentRole){
$divisi_ids = $user->divisis()->pluck('divisi_id')->toArray();
$perusahaan_ids = ($perusahaan_id != null)?[$perusahaan_id]:$user->perusahaans()->pluck('perusahaan_id')->toArray();
$_user = User::whereHas('roles', function ($query) use ($role) {
$query->where('id', $role->parentRole->parentRole->id);
})->where(function($ww)use($divisi_ids,$perusahaan_ids){
$ww->whereHas('divisis', function ($query) use ($divisi_ids) {
$query->whereIn('divisi_id', $divisi_ids);
})->whereHas('perusahaans', function ($query) use ($perusahaan_ids) {
$query->where('perusahaan_id', $perusahaan_ids);
});
})->first();
if (!$_user) {
$_user = User::whereHas('roles', function ($query) use ($role) {
$query->where('id', $role->parentRole->parentRole->id);
})->where(function($ww)use($divisi_ids,$perusahaan_ids){
$ww->whereHas('perusahaans', function ($query) use ($perusahaan_ids) {
$query->where('perusahaan_id', $perusahaan_ids);
})->whereDoesntHave('divisis');
})->first();
}
if (!$_user) {
$_user = User::whereHas('roles', function ($query) use ($role) {
$query->where('id', $role->parentRole->parentRole->id);
})->where(function($ww)use($divisi_ids,$perusahaan_ids){
$ww->whereHas('divisis', function ($query) use ($divisi_ids) {
$query->whereIn('divisi_id', $divisi_ids);
})->whereDoesntHave('perusahaans');
})->first();
}
// if(!$_user){
// $_user = User::whereHas('roles', function ($query) use ($role) {
// $query->where('id', $role->parentRole->parentRole->id);
// })->where(function($ww)use($divisi_ids,$perusahaan_ids){
// $ww->whereHas('perusahaans', function ($query) use ($perusahaan_ids) {
// $query->where('perusahaan_id', $perusahaan_ids);
// })->whereHave('divisis');
// })->first();
// }
// if($divisi_id){
// $divisi = Divisi::find($divisi_id);
// } else {
// $divisi = @$user->divisi->divisi;
// }
// if($divisi){
// if($role->parentRole->parentRole->pakai_divisi){
// $_user = User::whereHas('roles', function ($query) use ($role) {
// $query->where('id', $role->parentRole->parentRole->id);
// })->whereHas('divisis', function ($query) use ($divisi) {
// $query->where('divisi_id', $divisi->id);
// })->first();
// } else if($role->parentRole->parentRole->pakai_perusahaan) {
// $_user = User::whereHas('roles', function ($query) use ($role) {
// $query->where('id', $role->parentRole->parentRole->id);
// })->whereHas('perusahaans', function ($query) use ($divisi) {
// $query->where('perusahaan_id', $divisi->perusahaan_id);
// })->first();
// }
// }
}
if($_user){
return $_user;
}
}
return null;
}
public static function strukturRoleUser(User $user,$divisi_id = null, $role_id = null,$perusahaan_id = null){
$divisi = Divisi::find($divisi_id);
$struktur = [];
$_user = $user;
while ($_user != null) {
$struktur[] = $_user;
$_user = self::parentRoleUser($_user,@$divisi->id,$role_id,$perusahaan_id);
}
return $struktur;
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]