akaunting/app/Traits/Users.php
Denis Duliçi 7d62186292 formatting
2022-07-08 00:10:38 +03:00

132 lines
2.6 KiB
PHP

<?php
namespace App\Traits;
use App\Models\Auth\UserInvitation;
trait Users
{
/**
* Get user logged in
*
* @return object
*/
public function getCurrentUser()
{
return user();
}
/**
* Check user company assignment
*
* @param $id
*
* @return boolean
*/
public function isUserCompany($id)
{
$user = user();
if (empty($user)) {
return app()->runningInConsole() ? true : false;
}
$company = $user->withoutEvents(function () use ($user, $id) {
return $user->companies()->where('id', $id)->first();
});
return !empty($company);
}
public function isNotUserCompany($id)
{
return !$this->isUserCompany($id);
}
/**
* Check user dashboard assignment
*
* @param $id
*
* @return boolean
*/
public function isUserDashboard($id)
{
$user = user();
if (empty($user)) {
return app()->runningInConsole() ? true : false;
}
$dashboard = $user->withoutEvents(function () use ($user, $id) {
return $user->dashboards()->where('id', $id)->first();
});
return !empty($dashboard);
}
public function isNotUserDashboard($id)
{
return !$this->isUserDashboard($id);
}
/**
* Get the fist company of active user
*
* @return null|\App\Models\Common\Company
*/
public function getFirstCompanyOfUser()
{
$user = user();
if (empty($user)) {
return null;
}
$company = $user->withoutEvents(function () use ($user) {
return $user->companies()->enabled()->first();
});
if (empty($company)) {
return null;
}
return $company;
}
public function getLandingPageOfUser()
{
$user = user();
if (empty($user)) {
return route('login');
}
$route_name = $user->isCustomer() ? 'portal.dashboard' : $user->landing_page;
$company_id = company_id() ?: $this->getFirstCompanyOfUser()?->id;
return route($route_name, ['company_id' => $company_id]);
}
/**
* Checks if the given user has a pending invitation.
*
* @return bool
*/
public function hasPendingInvitation()
{
return $this->getPendingInvitation() ? true : false;
}
/**
* Returns if the given user has a pending invitation.
*
* @return null|UserInvitation
*/
public function getPendingInvitation()
{
return UserInvitation::where('user_id', $this->id)->first();
}
}