add: full multi-tenancy control

This commit is contained in:
Cauê Faleiros
2026-02-02 15:31:15 -03:00
commit c6ec92802b
1711 changed files with 258106 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
<?php
namespace Webkul\Contact\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\Attribute\Traits\CustomAttribute;
use Webkul\Contact\Contracts\Organization as OrganizationContract;
use Webkul\User\Models\UserProxy;
class Organization extends Model implements OrganizationContract
{
use CustomAttribute;
protected $casts = [
'address' => 'array',
];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'address',
'user_id',
];
/**
* Get persons.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function persons()
{
return $this->hasMany(PersonProxy::modelClass());
}
/**
* Get the user that owns the lead.
*/
public function user()
{
return $this->belongsTo(UserProxy::modelClass());
}
}

View File

@@ -0,0 +1,7 @@
<?php
namespace Webkul\Contact\Models;
use Konekt\Concord\Proxies\ModelProxy;
class OrganizationProxy extends ModelProxy {}

View File

@@ -0,0 +1,109 @@
<?php
namespace Webkul\Contact\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Webkul\Activity\Models\ActivityProxy;
use Webkul\Activity\Traits\LogsActivity;
use Webkul\Attribute\Traits\CustomAttribute;
use Webkul\Contact\Contracts\Person as PersonContract;
use Webkul\Contact\Database\Factories\PersonFactory;
use Webkul\Lead\Models\LeadProxy;
use Webkul\Tag\Models\TagProxy;
use Webkul\User\Models\UserProxy;
class Person extends Model implements PersonContract
{
use CustomAttribute, HasFactory, LogsActivity;
/**
* Table name.
*
* @var string
*/
protected $table = 'persons';
/**
* Eager loading.
*
* @var string
*/
protected $with = 'organization';
/**
* The attributes that are castable.
*
* @var array
*/
protected $casts = [
'emails' => 'array',
'contact_numbers' => 'array',
];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'emails',
'contact_numbers',
'job_title',
'user_id',
'organization_id',
'unique_id',
];
/**
* Get the user that owns the lead.
*/
public function user(): BelongsTo
{
return $this->belongsTo(UserProxy::modelClass());
}
/**
* Get the organization that owns the person.
*/
public function organization(): BelongsTo
{
return $this->belongsTo(OrganizationProxy::modelClass());
}
/**
* Get the activities.
*/
public function activities(): BelongsToMany
{
return $this->belongsToMany(ActivityProxy::modelClass(), 'person_activities');
}
/**
* The tags that belong to the person.
*/
public function tags(): BelongsToMany
{
return $this->belongsToMany(TagProxy::modelClass(), 'person_tags');
}
/**
* Get the leads for the person.
*/
public function leads(): HasMany
{
return $this->hasMany(LeadProxy::modelClass(), 'person_id');
}
/**
* Create a new factory instance for the model.
*/
protected static function newFactory(): PersonFactory
{
return PersonFactory::new();
}
}

View File

@@ -0,0 +1,7 @@
<?php
namespace Webkul\Contact\Models;
use Konekt\Concord\Proxies\ModelProxy;
class PersonProxy extends ModelProxy {}