Optimise User all_accounts(),all_clients(), added Invoice/Service to search
This commit is contained in:
68
app/User.php
68
app/User.php
@@ -5,6 +5,8 @@ namespace App;
|
||||
use App\Models\Site;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Database\Eloquent\Collection as DatabaseCollection;
|
||||
use Laravel\Passport\HasApiTokens;
|
||||
|
||||
use Leenooks\Carbon;
|
||||
@@ -221,39 +223,61 @@ class User extends Authenticatable
|
||||
|
||||
/** Functions */
|
||||
|
||||
public function all_accounts()
|
||||
/**
|
||||
* Get a list of accounts for the clients of this user
|
||||
*
|
||||
* @return DatabaseCollection
|
||||
*/
|
||||
public function all_accounts(): DatabaseCollection
|
||||
{
|
||||
$result = collect();
|
||||
$result = new DatabaseCollection();
|
||||
$clients = $this->all_clients();
|
||||
$clients->load('accounts');
|
||||
|
||||
foreach ($this->all_clients() as $o)
|
||||
{
|
||||
$result->push($o->accounts->where('active',TRUE));
|
||||
foreach ($clients->pluck('accounts') as $accounts) {
|
||||
foreach ($accounts as $o) {
|
||||
if (! $o->active)
|
||||
continue;
|
||||
|
||||
$result->push($o);
|
||||
}
|
||||
}
|
||||
|
||||
// Include my accounts
|
||||
$result->push($this->accounts);
|
||||
|
||||
return $result->flatten();
|
||||
}
|
||||
|
||||
public function all_clients($level=0)
|
||||
{
|
||||
$result = collect();
|
||||
|
||||
foreach ($this->clients as $o)
|
||||
{
|
||||
foreach ($this->accounts as $o) {
|
||||
if (! $o->active)
|
||||
continue;
|
||||
|
||||
$o->level = $level;
|
||||
|
||||
$result->push($o);
|
||||
|
||||
// Include clients of agents
|
||||
$result->push($o->all_clients($level+1));
|
||||
}
|
||||
|
||||
return $result->flatten();
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of clients that this user is responsible for.
|
||||
*
|
||||
* @param int $level
|
||||
* @return Collection
|
||||
*/
|
||||
public function all_clients($level=0,DatabaseCollection $clients=NULL): DatabaseCollection
|
||||
{
|
||||
$result = is_null($clients) ? $this->clients : $clients;
|
||||
|
||||
$result
|
||||
->filter(function($item) { return $item->active; })
|
||||
->transform(function($item) use ($level) { $item->level = $level; return $item; });
|
||||
|
||||
foreach ($result->pluck('clients') as $clients) {
|
||||
foreach ($this->all_clients($level+1,$clients) as $o) {
|
||||
if (! $o->active)
|
||||
continue;
|
||||
|
||||
$result->push($o);
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function all_client_service_inactive()
|
||||
|
Reference in New Issue
Block a user