Updated ERP with new modules and features

This commit is contained in:
Kwesi Banson
2026-09-22 08:06:31 +00:00
parent 71bc103fee
commit 5174e82e51
53 changed files with 3706 additions and 203 deletions

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ActivityLog extends Model
{
protected $fillable = [
'user_id', 'loggable_type', 'loggable_id', 'action',
'old_data', 'new_data', 'ip_address', 'user_agent'
];
protected $casts = [
'old_data' => 'array',
'new_data' => 'array',
];
// Links back to the User who made the change
public function user()
{
return $this->belongsTo(StaffMember::class);
}
// Links back to the affected Model (Client, Server, VpnConfig, etc.)
public function loggable()
{
return $this->morphTo();
}
}

View File

@@ -3,9 +3,10 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class Client extends Model
{
use LogsActivity;
protected $guarded = [
'id'
];

View File

@@ -3,9 +3,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class ClientFile extends Model
{
use LogsActivity;
protected $guarded = array('id');
public function client_info(){

View File

@@ -5,9 +5,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;
use App\Traits\LogsActivity;
class ClientNote extends Model
{
use LogsActivity;
protected $guarded = array('id');
protected static $logUnguarded = true;

View File

@@ -3,9 +3,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class DailyReport extends Model
{
use LogsActivity;
protected $fillable = ['user_id', 'report_date', 'content'];
protected $casts = [
'report_date' => 'date',

View File

@@ -3,9 +3,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class LeaveManagement extends Model
{
use LogsActivity;
protected $guarded = array('id');
public $table = "leave_management";

View File

@@ -15,10 +15,4 @@ class LeaveRequest extends Model
{
return $this->belongsTo(StaffMember::class, 'staff_member_id');
}
// In StaffMember.php
public function leaveRequests()
{
return $this->hasMany(LeaveRequest::class, 'staff_member_id');
}
}

View File

@@ -4,9 +4,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
use App\Traits\LogsActivity;
class NetworkOperator extends Model
{
use LogsActivity;
protected $guarded = array('id');
public $table = "network_operators";
@@ -15,6 +17,8 @@ class NetworkOperator extends Model
'support_emails' => 'array',
'finance_emails' => 'array',
'bind_specifics' => 'array',
'contract_auto_renew' => 'boolean',
'next_renewal_date' => 'date',
];
public function account_manager_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'account_manager_id');
@@ -23,6 +27,10 @@ class NetworkOperator extends Model
{
return $this->hasMany(NetworkOperatorConnection::class, 'network_operator_id');
}
public function documents()
{
return $this->hasMany(NetworkOperatorDocument::class);
}
/*
public function setBuyingRateAttribute($value)
{

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class NetworkOperatorDocument extends Model
{
use LogsActivity;
protected $fillable = ['network_operator_id', 'name', 'file_path'];
public function networkOperator()
{
return $this->belongsTo(NetworkOperator::class);
}
}

View File

@@ -3,9 +3,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class OfficeLocation extends Model
{
use LogsActivity;
protected $guarded = array('id');
protected $table = 'office_locations';

View File

@@ -3,9 +3,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class OfficeLocationDocument extends Model
{
use LogsActivity;
protected $table = 'office_location_documents';
protected $guarded = [];

View File

@@ -3,13 +3,14 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;
// use Spatie\Activitylog\Traits\LogsActivity;
// use Spatie\Activitylog\LogOptions;
use App\Traits\LogsActivity;
class SenderId extends Model{
// use LogsActivity;
use LogsActivity;
protected $guarded = array('id');
public $table = "sender_ids";
protected static $logName = 'senderid_log';

View File

@@ -3,10 +3,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class Senderidold extends Model{
use LogsActivity;
protected $guarded = array('id');
public $table = "sender_ids_copy";

22
app/Models/Server.php Normal file
View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class Server extends Model
{
use LogsActivity;
protected $fillable = [
'name', 'ip_address', 'os_version', 'username', 'password', 'services', 'status'
];
protected $casts = [
'password' => 'encrypted', // Automatically encrypts/decrypts
'services' => 'array', // Casts JSON to PHP array
];
// Hide password from standard array/JSON serialization for safety
protected $hidden = ['password'];
}

View File

@@ -3,9 +3,12 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class ShortCode extends Model
{
use LogsActivity;
protected $guarded = array('id');
public $table = "client_short_codes";

View File

@@ -3,9 +3,11 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class StaffDependent extends Model
{
use LogsActivity;
protected $table = 'staff_dependents';
protected $guarded = [];

View File

@@ -5,10 +5,11 @@ namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use App\Traits\LogsActivity;
class StaffMember extends Authenticatable
{
use HasFactory, Notifiable;
use HasFactory, Notifiable, LogsActivity;
// 1. Explicitly define the custom table name
protected $table = 'staff_members';
@@ -34,6 +35,7 @@ class StaffMember extends Authenticatable
public function department(){
return $this->hasOne('App\Models\Department', 'id', 'department_id');
}
// 4. Cast dates correctly
protected $casts = [
// 'dob' => 'date',

View File

@@ -3,10 +3,23 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Traits\LogsActivity;
class VpnConfig extends Model
{
protected $guarded = ['id'];
//protected $guarded = ['id'];
use LogsActivity;
protected $fillable = [
'partner_name', 'peer_ip', 'local_ip',
'local_device', 'peer_device',
'encryption_domain_local', 'encryption_domain_remote',
'preshared_key', 'status',
'ike_version', 'phase1_encryption', 'phase1_hash', 'phase1_dh_group', 'phase1_lifetime',
'phase2_encryption', 'phase2_hash', 'phase2_dh_group', 'phase2_lifetime', 'pfs_enabled'
];
protected $casts = [
'preshared_key' => 'encrypted',
];
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
@@ -15,6 +28,6 @@ class VpnConfig extends Model
return $this->hasOne('App\Models\NetworkOps', 'id', 'mno_id');
}
public function userInfo(){
return $this->hasOne('App\Models\SystemUser', 'id', 'user_id');
return $this->hasOne('App\Models\StaffMember', 'id', 'user_id');
}
}