17 protected $rules = [
'name' =>
'required|min:2|max:255|unique:companies,name'];
37 private static function isFullMultipleCompanySupportEnabled()
42 if (is_null($settings)) {
45 return $settings->full_multiple_companies_support == 1;
49 private static function scopeCompanyablesDirectly($query, $column =
'company_id')
52 $company_id = Auth::user()->company_id;
57 if ($company_id == null) {
60 return $query->where($column,
'=', $company_id);
66 $select_company = Lang::get(
'general.select_company');
67 return [
'0' => $select_company] + DB::table(
'companies')->orderBy(
'name',
'ASC')->lists(
'name',
'id');
72 $escaped_input = e($unescaped_input);
74 if ($escaped_input ==
'0') {
77 return $escaped_input;
83 if (!static::isFullMultipleCompanySupportEnabled()) {
84 return static::getIdFromInput($unescaped_input);
86 $current_user = Auth::user();
88 if ($current_user->company_id != null) {
89 return $current_user->company_id;
91 return static::getIdFromInput($unescaped_input);
98 if (is_null($companyable)) {
100 } elseif (!static::isFullMultipleCompanySupportEnabled()) {
103 $current_user_company_id = Auth::user()->company_id;
104 $companyable_company_id = $companyable->company_id;
106 return ($current_user_company_id == null || $current_user_company_id == $companyable_company_id);
112 return (!static::isFullMultipleCompanySupportEnabled() || Auth::user()->company_id == null);
117 return (!static::isFullMultipleCompanySupportEnabled() || Auth::user()->isSuperUser() ||
118 Auth::user()->company_id == null);
123 if (!static::isFullMultipleCompanySupportEnabled() || Auth::user()->isSuperUser()) {
124 return static::getIdFromInput($unescaped_input);
126 return static::getIdForCurrentUser($unescaped_input);
132 if (!static::isFullMultipleCompanySupportEnabled()) {
135 return static::scopeCompanyablesDirectly($query, $column);
141 if (count($companyable_names) == 0) {
142 throw new Exception(
'No Companyable Children to scope');
143 } elseif (!static::isFullMultipleCompanySupportEnabled()) {
148 static::scopeCompanyablesDirectly($q);
151 $q = $query->where(
function ($q) use ($companyable_names, $f) {
152 $q2 = $q->whereHas($companyable_names[0], $f);
154 for ($i = 1; $i < count($companyable_names); $i++) {
155 $q2 = $q2->orWhereHas($companyable_names[$i], $f);
164 $company = $companyable->company;
166 if (is_null($company)) {
169 return e($company->name);
static getIdForUser($unescaped_input)
static getIdForCurrentUser($unescaped_input)
static scopeCompanyableChildren(array $companyable_names, $query)
static isCurrentUserHasAccess($companyable)
static getIdFromInput($unescaped_input)
static isCurrentUserAuthorized()
static scopeCompanyables($query, $column= 'company_id')
static getName($companyable)
static canManageUsersCompanies()