Archived
1
0
Fork 0

app/Jobs/ImportProfession.php: make $character variable optional and require $user.

This commit is contained in:
Henrik Hautakoski 2021-08-28 17:42:29 +02:00
parent f82f7c3571
commit 8eda7a315c
6 changed files with 174 additions and 34 deletions

View file

@ -41,7 +41,7 @@ class CharacterProfessionController extends Controller
$data = json_decode($request->input('data'));
try {
ImportProfession::dispatch($character, $data);
ImportProfession::dispatch($data, $request->user(), $character);
} catch(\App\ProfessionImport\Exception $e) {
return redirect()->back()->with('error', $e->getMessage());
}

View file

@ -2,6 +2,7 @@
namespace App\Jobs;
use App\Models\User;
use App\Models\Character;
use App\Models\Profession;
use App\Models\CharacterProfession;
@ -40,12 +41,22 @@ class ImportProfession implements ShouldQueue
*
* @return void
*/
public function __construct(Character $character, $data)
public function __construct($data, User $user, ?Character $character = null)
{
// Validate character name first.
if ($character->name !== $data->player) {
$message = sprintf('Wrong character: %s expected %s', $data->player, $character->name);
throw new InvalidCharacterException($message);
if ($character) {
if ($character->name !== $data->player) {
$message = sprintf('Wrong character: %s expected %s', $data->player, $character->name);
throw new InvalidCharacterException($message);
}
} else {
$character = Character::where('name', $data->player)
->where('user_id', $user->id)->first();
if (!$character) {
$message = sprintf('Could not find character "%s"', $data->player);
throw new InvalidCharacterException($message);
}
}
// Validate profession