First Commit

This commit is contained in:
marco
2026-09-01 10:46:29 -03:00
commit bf96b77e9c
10000 changed files with 3508600 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
<?php
namespace Modules\AffiliatesAdmin\Models;
use Illuminate\Database\Eloquent\Model;
class Affiliate extends Model
{
protected $table = 'affiliates';
protected $primaryKey = 'affiliates_id';
protected $fillable = [
'affiliates_code',
'affiliates_name',
'affiliates_email',
'affiliates_phone',
'affiliates_address',
'affiliates_website',
'affiliates_commission_rate',
'affiliates_total_earned',
'affiliates_total_paid',
'affiliates_status',
];
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot()
{
parent::boot();
// Ensure affiliates_code is generated before creating
static::creating(function ($affiliate) {
if (empty($affiliate->affiliates_code)) {
$affiliate->affiliates_code = static::generateUniqueAffiliateCode();
}
});
}
/**
* Generate a unique affiliate code.
*
* @return string
*/
protected static function generateUniqueAffiliateCode(): string
{
$code = \Illuminate\Support\Str::random(10); // Using Laravel's Str helper
while (static::where('affiliates_code', $code)->exists()) {
$code = \Illuminate\Support\Str::random(10);
}
return $code;
}
/**
* Get the commissions for the affiliate.
*/
public function commissions()
{
return $this->hasMany(AffiliateCommission::class, 'affiliate_commissions_affiliate_id', 'affiliates_id');
}
/**
* Get the banners created by the affiliate.
*/
public function banners()
{
return $this->hasMany(AffiliateBanner::class, 'affiliate_banners_affiliate_id', 'affiliates_id');
}
/**
* Get the clicks for the affiliate's banners.
*/
public function clicks()
{
return $this->hasMany(AffiliateClick::class, 'affiliate_clicks_affiliate_id', 'affiliates_id');
}
}
+38
View File
@@ -0,0 +1,38 @@
<?php
namespace Modules\AffiliatesAdmin\Models;
use Illuminate\Database\Eloquent\Model;
class AffiliateBanner extends Model
{
protected $table = 'affiliate_banners';
protected $primaryKey = 'affiliate_banners_id';
protected $fillable = [
'affiliate_banners_name',
'affiliate_banners_description',
'affiliate_banners_image_url',
'affiliate_banners_target_url',
'affiliate_banners_width',
'affiliate_banners_height',
'affiliate_banners_is_active',
];
/**
* Get the affiliate that owns the banner.
*/
public function affiliate()
{
return $this->belongsTo(Affiliate::class, 'affiliate_banners_affiliate_id', 'affiliates_id');
}
/**
* Get the clicks for the banner.
*/
public function clicks()
{
return $this->hasMany(AffiliateClick::class, 'affiliate_clicks_banner_id', 'affiliate_banners_id');
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace Modules\AffiliatesAdmin\Models;
use Illuminate\Database\Eloquent\Model;
class AffiliateClick extends Model
{
protected $table = 'affiliate_clicks';
protected $primaryKey = 'affiliate_clicks_id';
protected $fillable = [
'affiliate_clicks_affiliate_id',
'affiliate_clicks_banner_id',
'affiliate_clicks_ip_address',
'affiliate_clicks_user_agent',
'affiliate_clicks_referrer',
];
/**
* Get the affiliate that generated the click.
*/
public function affiliate()
{
return $this->belongsTo(Affiliate::class, 'affiliate_clicks_affiliate_id', 'affiliates_id');
}
/**
* Get the banner that was clicked.
*/
public function banner()
{
return $this->belongsTo(AffiliateBanner::class, 'affiliate_clicks_banner_id', 'affiliate_banners_id');
}
}
@@ -0,0 +1,29 @@
<?php
namespace Modules\AffiliatesAdmin\Models;
use Illuminate\Database\Eloquent\Model;
class AffiliateCommission extends Model
{
protected $table = 'affiliate_commissions';
protected $primaryKey = 'affiliate_commissions_id';
protected $fillable = [
'affiliate_commissions_affiliate_id',
'affiliate_commissions_order_id',
'affiliate_commissions_amount',
'affiliate_commissions_commission_rate',
'affiliate_commissions_status',
'affiliate_commissions_notes',
];
/**
* Get the affiliate that owns the commission.
*/
public function affiliate()
{
return $this->belongsTo(Affiliate::class, 'affiliate_commissions_affiliate_id', 'affiliates_id');
}
}