Package system sms

This commit is contained in:
Simon Pocrnjič
2025-10-26 12:57:09 +01:00
parent 266af6595e
commit 369af34ad4
29 changed files with 2639 additions and 330 deletions
+48
View File
@@ -0,0 +1,48 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Package extends Model
{
use HasFactory;
protected $fillable = [
'uuid', 'type', 'status', 'name', 'description', 'meta',
'total_items', 'processing_count', 'sent_count', 'failed_count',
'created_by', 'finished_at',
];
protected function casts(): array
{
return [
'meta' => 'array',
'finished_at' => 'datetime',
'total_items' => 'integer',
'processing_count' => 'integer',
'sent_count' => 'integer',
'failed_count' => 'integer',
];
}
public function items()
{
return $this->hasMany(PackageItem::class);
}
public const TYPE_SMS = 'sms';
public const STATUS_DRAFT = 'draft';
public const STATUS_QUEUED = 'queued';
public const STATUS_RUNNING = 'running';
public const STATUS_COMPLETED = 'completed';
public const STATUS_FAILED = 'failed';
public const STATUS_CANCELED = 'canceled';
}
+31
View File
@@ -0,0 +1,31 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class PackageItem extends Model
{
use HasFactory;
protected $fillable = [
'package_id', 'status', 'target_json', 'payload_json', 'attempts', 'last_error', 'result_json', 'provider_message_id', 'cost', 'currency', 'idempotency_key',
];
protected function casts(): array
{
return [
'target_json' => 'array',
'payload_json' => 'array',
'result_json' => 'array',
'attempts' => 'integer',
'cost' => 'decimal:4',
];
}
public function package()
{
return $this->belongsTo(Package::class);
}
}
+18 -6
View File
@@ -2,7 +2,7 @@
namespace App\Models\Person;
use Blade;
use App\Enums\PersonPhoneType;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -13,6 +13,7 @@ class PersonPhone extends Model
{
/** @use HasFactory<\Database\Factories\Person/PersonPhoneFactory> */
use HasFactory;
use Searchable;
use SoftDeletes;
@@ -22,25 +23,28 @@ class PersonPhone extends Model
'type_id',
'description',
'person_id',
'user_id'
'user_id',
'validated',
'phone_type',
];
protected $hidden = [
'user_id',
'person_id',
'deleted'
'deleted',
];
public function toSearchableArray(): array
{
return [
'nu' => $this->nu
'nu' => $this->nu,
];
}
protected static function booted(){
protected static function booted()
{
static::creating(function (PersonPhone $personPhone) {
if(!isset($personPhone->user_id)){
if (! isset($personPhone->user_id)) {
$personPhone->user_id = auth()->id();
}
});
@@ -55,4 +59,12 @@ public function type(): BelongsTo
{
return $this->belongsTo(\App\Models\Person\PhoneType::class, 'type_id');
}
protected function casts(): array
{
return [
'validated' => 'boolean',
'phone_type' => PersonPhoneType::class,
];
}
}