move into sonardesk

This commit is contained in:
Mark Gregory
2026-10-12 14:50:13 +01:00
parent 5f0d2ceb72
commit 38b4a7406f
879 changed files with 24021 additions and 1 deletions
+23
View File
@@ -0,0 +1,23 @@
<?php
namespace Modules\CRM\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
final class Activity extends Model
{
protected $table = 'crm_activities';
protected $fillable = ['subject_type', 'subject_id', 'user_id', 'type', 'title', 'description', 'due_at', 'completed_at'];
protected function casts(): array
{
return ['due_at' => 'datetime', 'completed_at' => 'datetime'];
}
public function subject(): MorphTo
{
return $this->morphTo();
}
}
+23
View File
@@ -0,0 +1,23 @@
<?php
namespace Modules\CRM\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
final class Company extends Model
{
protected $table = 'crm_companies';
protected $fillable = ['name', 'website', 'phone', 'email', 'industry', 'address', 'notes', 'is_active'];
protected function casts(): array
{
return ['is_active' => 'boolean'];
}
public function contacts(): HasMany
{
return $this->hasMany(Contact::class);
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace Modules\CRM\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
final class Contact extends Model
{
protected $table = 'crm_contacts';
protected $fillable = ['company_id', 'first_name', 'last_name', 'email', 'phone', 'job_title', 'notes', 'is_active'];
protected function casts(): array
{
return ['is_active' => 'boolean'];
}
public function company(): BelongsTo
{
return $this->belongsTo(Company::class);
}
public function getNameAttribute(): string
{
return trim($this->first_name.' '.$this->last_name);
}
}
+23
View File
@@ -0,0 +1,23 @@
<?php
namespace Modules\CRM\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
final class Lead extends Model
{
protected $table = 'crm_leads';
protected $fillable = ['contact_id', 'title', 'source', 'status', 'estimated_value', 'notes', 'next_action_at'];
protected function casts(): array
{
return ['estimated_value' => 'decimal:2', 'next_action_at' => 'datetime'];
}
public function contact(): BelongsTo
{
return $this->belongsTo(Contact::class);
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace Modules\CRM\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
final class Opportunity extends Model
{
protected $table = 'crm_opportunities';
protected $fillable = ['company_id', 'contact_id', 'name', 'stage', 'value', 'probability', 'expected_close_at', 'notes'];
protected function casts(): array
{
return ['value' => 'decimal:2', 'expected_close_at' => 'date'];
}
public function company(): BelongsTo
{
return $this->belongsTo(Company::class);
}
public function contact(): BelongsTo
{
return $this->belongsTo(Contact::class);
}
}