Untitled
unknown
php
2 years ago
2.1 kB
8
Indexable
<?php
namespace App\Http\Services;
use App\Models\Player;
use App\Models\Title;
use Illuminate\Support\Facades\Auth;
class PlayerTitleService
{
public function setActiveTitle($title)
{
// Check if the title exists
$titleModel = Title::where('title', $title)->first();
if (!$titleModel) {
throw new \InvalidArgumentException("Title does not exist");
}
$player = Player::find(Auth::id());
// Check if the player has unlocked the title
if (!$player->titles->contains($titleModel)) {
throw new \InvalidArgumentException("Player has not unlocked the title");
}
// Check if the current active title is the same as the incoming title
if ($player->activeTitle && $player->activeTitle->title === $title) {
throw new \InvalidArgumentException("Title is already the active title");
}
// Set the active title ID
$player->active_title_id = $titleModel->id;
$player->save();
return response()->json([
'success' => true,
'message' => 'Active title assigned',
]);
}
public function grantTitle($title)
{
$player = Player::find(Auth::id());
// Check if the title exists in the database
$titleModel = Title::where('title', $title)->first();
if (!$titleModel) {
// Title doesn't exist, throw an exception or handle accordingly
throw new \InvalidArgumentException("Title does not exist");
}
// Check if the player already has the title
if ($player->titles->contains($titleModel)) {
throw new \InvalidArgumentException("The player already owns the title {$title}!!");
}
$player->titles()->syncWithoutDetaching([$titleModel->id]);
}
public function getActiveTitle(Player $player)
{
return [
"titleId" => $player->activeTitle->id,
"activeTitle" => $player->activeTitle->title
];
}
}
Editor is loading...
Leave a Comment