%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/www/admin1/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use App\Scopes\CompanyScope;
use App\Traits\HasCompany;
/**
* App\Models\ModuleSetting
*
* @property int $id
* @property string $module_name
* @property string $status
* @property string $type
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read mixed $icon
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting query()
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting whereModuleName($value)
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting whereUpdatedAt($value)
* @property int|null $company_id
* @property-read \App\Models\Company|null $company
* @method static \Illuminate\Database\Eloquent\Builder|ModuleSetting whereCompanyId($value)
* @mixin \Eloquent
*/
class ModuleSetting extends BaseModel
{
use HasCompany;
const CLIENT_MODULES = [
'clients',
'projects',
'tickets',
'invoices',
'estimates',
'events',
'messages',
'tasks',
'timelogs',
'contracts',
'notices',
'payments',
'orders',
'knowledgebase',
];
const OTHER_MODULES = [
'employees',
'attendance',
'expenses',
'leaves',
'leads',
'holidays',
'products',
'reports',
'settings',
'bankaccount'
];
protected $guarded = ['id'];
public static function checkModule($moduleName)
{
$module = ModuleSetting::where('module_name', $moduleName);
if (in_array('admin', user_roles())) {
$module = $module->where('type', 'admin');
}
elseif (in_array('client', user_roles())) {
$module = $module->where('type', 'client');
}
elseif (in_array('employee', user_roles())) {
$module = $module->where('type', 'employee');
}
$module = $module->where('status', 'active');
$module = $module->first();
return (bool)$module;
}
public static function addCompanyIdToNullModule($company, $module)
{
// This is done for existing module settings. This will update the company id with 1
// for existing module rather creating new module setting
if ($company->id == 1) {
ModuleSetting::withoutGlobalScope(CompanyScope::class)->where('module_name', $module)
->whereNull('company_id')
->update(['company_id' => $company->id]);
}
}
public static function createRoleSettingEntry($module, $roles, $company)
{
self::addCompanyIdToNullModule($company, $module);
foreach ($roles as $role) {
$data = ModuleSetting::withoutGlobalScope(CompanyScope::class)
->where('module_name', $module)
->where('type', $role)
->where('company_id', $company->id)
->first();
if (!$data) {
ModuleSetting::create([
'module_name' => $module,
'type' => $role,
'company_id' => $company->id,
]);
}
}
PermissionRole::insertModuleRolePermission($module, $company->id);
}
}