refactor: Use ActivityService to create system messages in seeder
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Dynamic;
|
||||
use App\Models\PredefinedMutation;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Illuminate\Http\Request;
|
||||
use Inertia\Inertia;
|
||||
|
||||
class PredefinedMutationController extends Controller
|
||||
{
|
||||
use AuthorizesRequests;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index(Dynamic $dynamic)
|
||||
{
|
||||
$this->authorize('update', $dynamic);
|
||||
|
||||
return Inertia::render('Dynamics/PredefinedMutations/Index', [
|
||||
'dynamic' => $dynamic,
|
||||
'predefined_mutations' => $dynamic->predefinedMutations()->latest()->get(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
public function store(Request $request, Dynamic $dynamic)
|
||||
{
|
||||
$this->authorize('update', $dynamic);
|
||||
|
||||
$request->validate([
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'description' => ['nullable', 'string'],
|
||||
'amount' => ['required', 'integer'],
|
||||
'type' => ['required', 'string', 'in:reward,penalty'],
|
||||
]);
|
||||
|
||||
$dynamic->predefinedMutations()->create($request->all());
|
||||
|
||||
return redirect()->route('dynamics.predefined-mutations.index', $dynamic);
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ class Mutation extends Model
|
||||
'amount',
|
||||
'description',
|
||||
'status',
|
||||
'predefined_mutation_id',
|
||||
];
|
||||
|
||||
public function ledger(): BelongsTo
|
||||
@@ -32,6 +33,11 @@ class Mutation extends Model
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
public function predefinedMutation(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(PredefinedMutation::class);
|
||||
}
|
||||
|
||||
public function chat(): MorphOne
|
||||
{
|
||||
return $this->morphOne(Chat::class, 'chatable');
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class PredefinedMutation extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'dynamic_id',
|
||||
'name',
|
||||
'description',
|
||||
'amount',
|
||||
'type',
|
||||
];
|
||||
|
||||
public function dynamic(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Dynamic::class);
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,31 @@ class ActivityService
|
||||
return $cursor ? $cursor->read_at : Carbon::parse('1970-01-01');
|
||||
}
|
||||
|
||||
public function createMessage($chat, $user, $content, $subject = null)
|
||||
{
|
||||
$message = $chat->messages()->create([
|
||||
'user_id' => $user ? $user->id : null,
|
||||
'content' => $content,
|
||||
'subject_id' => $subject ? $subject->id : null,
|
||||
'subject_type' => $subject ? get_class($subject) : null,
|
||||
]);
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
public function createMutation($ledger, $user, $type, $amount, $description, $status)
|
||||
{
|
||||
$mutation = $ledger->mutations()->create([
|
||||
'user_id' => $user->id,
|
||||
'type' => $type,
|
||||
'amount' => $amount,
|
||||
'description' => $description,
|
||||
'status' => $status,
|
||||
]);
|
||||
|
||||
return $mutation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve all activities for a given entity.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user