1010use Gaming \Common \MessageBroker \MessageHandler ;
1111use Gaming \ConnectFour \Application \Game \Command \JoinCommand ;
1212use Gaming \ConnectFour \Application \Game \Command \MoveCommand ;
13+ use Gaming \ConnectFour \Application \Game \Command \OpenCommand ;
1314use Gaming \ConnectFour \Application \Game \Query \GamesByPlayerQuery ;
1415use Gaming \ConnectFour \Application \Game \Query \Model \Game \Game ;
1516use Gaming \ConnectFour \Application \Game \Query \Model \Game \Move ;
2021use GamingPlatform \Api \ConnectFour \V1 \GetGamesByPlayerResponse ;
2122use GamingPlatform \Api \ConnectFour \V1 \JoinGameResponse ;
2223use GamingPlatform \Api \ConnectFour \V1 \MakeMoveResponse ;
24+ use GamingPlatform \Api \ConnectFour \V1 \OpenGameResponse ;
2325
2426final class GameRequestsMessageHandler implements MessageHandler
2527{
@@ -32,13 +34,36 @@ public function __construct(
3234 public function handle (Message $ message , Context $ context ): void
3335 {
3436 match ($ message ->name ()) {
37+ 'ConnectFour.OpenGame ' => $ this ->handleOpenGame ($ message , $ context ),
3538 'ConnectFour.JoinGame ' => $ this ->handleJoinGame ($ message , $ context ),
3639 'ConnectFour.MakeMove ' => $ this ->handleMakeMove ($ message , $ context ),
3740 'ConnectFour.GetGamesByPlayer ' => $ this ->handleGetGamesByPlayer ($ message , $ context ),
3841 default => true
3942 };
4043 }
4144
45+ private function handleOpenGame (Message $ message , Context $ context ): void
46+ {
47+ $ request = ConnectFourV1Factory::createOpenGame ($ message ->body ());
48+
49+ $ response = $ this ->commandBus ->handle (
50+ new OpenCommand (
51+ $ request ->getPlayerId (),
52+ $ request ->getWidth (),
53+ $ request ->getHeight (),
54+ $ request ->getStone (),
55+ $ request ->getTimer ()
56+ )
57+ );
58+
59+ $ context ->reply (
60+ new Message (
61+ 'ConnectFour.OpenGameResponse ' ,
62+ new OpenGameResponse ()->setGameId ($ response )->serializeToString ()
63+ )
64+ );
65+ }
66+
4267 private function handleJoinGame (Message $ message , Context $ context ): void
4368 {
4469 $ request = ConnectFourV1Factory::createJoinGame ($ message ->body ());
0 commit comments