66
77use App \Domain \Dto \BeDeck ;
88use App \Domain \Dto \FeDeck ;
9+ use App \Domain \Dto \FeDeckView ;
10+ use App \Models \Deck ;
911use Illuminate \Http \RedirectResponse ;
1012use Illuminate \Http \Request ;
13+ use Illuminate \Support \Facades \DB ;
1114use Inertia \Inertia ;
1215use Inertia \Response ;
1316use Redirect ;
@@ -19,41 +22,65 @@ public function list(Request $req): Response
1922 $ user = $ req ->user ();
2023
2124 return Inertia::render ('Decks/DeckList ' , [
22- 'decks ' => FeDeck::collect ($ user ->decks ()->get ()),
25+ 'decks ' => fn () => FeDeck::collect ($ user ->decks ()->get ()),
26+ ]);
27+ }
28+
29+ public function show (Deck $ deck ): Response
30+ {
31+ return Inertia::render ('Decks/Show ' , [
32+
2333 ]);
2434 }
2535
2636 public function create (Request $ req ): RedirectResponse
2737 {
2838 $ user = $ req ->user ();
2939
30- $ deck = $ user ->decks ()
31- ->create (BeDeck::from ($ req )->all ());
40+ $ deck = DB ::transaction (function () use (&$ user , &$ req ) {
41+ $ deck = $ user ->decks ()
42+ ->create (BeDeck::from ($ req )->all ());
3243
33- return Redirect::route ('deck.edit ' , [
34- 'id ' => $ deck ->id ,
44+ // create a default deck view
45+ $ view = $ deck ->views ()->create ([
46+ 'name ' => 'Default ' ,
47+ ]);
48+
49+ // create some default categories
50+ $ view ->categories ()->createMany ([
51+ ['name ' => 'Creatures ' ],
52+ ['name ' => 'Instants ' ],
53+ ['name ' => 'Sorceries ' ],
54+ ['name ' => 'Enchantments ' ],
55+ ['name ' => 'Artifacts ' ],
56+ ['name ' => 'Planeswalkers ' ],
57+ ['name ' => 'Lands ' ],
58+ ['name ' => 'Sideboard ' ],
59+ ['name ' => 'Other ' ],
60+ ]);
61+
62+ return $ deck ;
63+ });
64+
65+ return Redirect::route ('decks.edit ' , [
66+ 'deck ' => $ deck ->id ,
3567 ]);
3668 }
3769
38- public function edit (Request $ req , int $ id ): Response
70+ public function edit (Deck $ deck ): Response
3971 {
40- $ deck = $ req ->user ()->decks ()->find ($ id );
41-
4272 return Inertia::render ('Decks/EditDeck ' , [
43- 'deck ' => FeDeck::from ($ deck ),
73+ 'deck ' => fn () => FeDeck::from ($ deck ),
74+ 'views ' => fn () => FeDeckView::collect (
75+ $ deck ->views ()->get ()
76+ ),
4477 ]);
4578 }
4679
47- public function update (Request $ req , int $ id ): RedirectResponse
80+ public function update (Deck $ deck , Request $ req ): RedirectResponse
4881 {
49- /**
50- * @var \App\Models\Deck
51- */
52- $ deck = $ req ->user ()->decks ()
53- ->find ($ id );
54-
5582 $ deck ->update (BeDeck::from ($ req )->all ());
5683
57- return Redirect::route ('deck .list ' );
84+ return Redirect::route ('decks .list ' );
5885 }
5986}
0 commit comments