Attempt to insert games
This commit is contained in:
parent
0f801b98bb
commit
b189ed7456
3 changed files with 1220 additions and 19 deletions
|
@ -43,20 +43,66 @@ class ScoreControllerProvider implements ControllerProviderInterface
|
|||
return $app['serializer']->serialize($user, 'json');
|
||||
});
|
||||
|
||||
/**
|
||||
* Expects a full game + hits in the request
|
||||
*/
|
||||
$controllers->post('/me/games', function (Request $request, Application $app) {
|
||||
var_dump($request->getContent());
|
||||
$data = json_decode($request->getContent(), true);
|
||||
$token = $app['security.token_storage']->getToken();
|
||||
$user = $token->getUser();
|
||||
|
||||
$a = date("Y-m-d H:i:s")."\n";
|
||||
$a .= print_r($request->attributes->all(), true);
|
||||
$a .= print_r($request->query->all(), true);
|
||||
$a .= print_r($request->request->all(), true);
|
||||
$a .= "\n\n";
|
||||
$a .= $request->getContent();
|
||||
if($data == null || !isSet($data['lvl_id'])) {
|
||||
return new JsonResponse(['success' => false, 'message' => "Invalid JSON body"], 400);
|
||||
}
|
||||
|
||||
file_put_contents(__DIR__.'/../../cache/me_games', $a);
|
||||
// $vars = json_decode($request->getContent(), true);
|
||||
// var_dump($vars);
|
||||
return $app['serializer']->serialize($levels, 'json');
|
||||
|
||||
$level = $this->_eh->getEm()->getRepository(Models\Level::class)->find($data['lvl_id']);
|
||||
if(empty($level)) {
|
||||
return new JsonResponse(['success' => false, 'message' => "Invalid level"], 400);
|
||||
}
|
||||
|
||||
$game = new Game();
|
||||
$game->setUser($user);
|
||||
$game->setLevel($level);
|
||||
$game->setOriginalGameAt(new DateTime($data['time']));
|
||||
|
||||
foreach($data['hits'] as $data_hit) {
|
||||
$hit = new Hit;
|
||||
$target = $this->_eh->getEm()->getRepository(Models\Target::class)->findOneBy(['position' => $hit['target_index'], 'level' => $level]);
|
||||
if(empty($target)){
|
||||
return new JsonResponse(['success' => false, 'message' => "Invalid target for hit"], 400);
|
||||
}
|
||||
|
||||
// set game appends hit to game
|
||||
$hit->setGame($game);
|
||||
|
||||
// attributes
|
||||
$hit->setGlasses($data_hit['glasses']);
|
||||
foreach(Models\Hit::$ATTRIBUTES as $attribute) {
|
||||
$hit->setAttribute($data_hit[$attribute]);
|
||||
}
|
||||
// emotions
|
||||
foreach(Models\Hit::$EMOTIONS as $emotion) {
|
||||
$hit->setEmotion($data_hit['emotions'][$emotion]);
|
||||
}
|
||||
|
||||
//expressions
|
||||
foreach(Models\Hit::$EXPRESSIONS as $expression) {
|
||||
$hit->setExpression($data_hit['expressions'][$expression]);
|
||||
}
|
||||
|
||||
//points
|
||||
foreach(range(0, 33) as $i) {
|
||||
$hit->setPoint($i, $data_hit['points']["$i"]['x'], $data_hit['points']["$i"]['y']);
|
||||
}
|
||||
}
|
||||
|
||||
$this->_eh->getEm()->persist($game);
|
||||
$this->_eh->getEm()->flush();
|
||||
|
||||
|
||||
// return $app['serializer']->serialize($levels, 'json');
|
||||
return new JsonResponse(['success' => true, 'remoteId' => $game->getId()], 200);
|
||||
});
|
||||
|
||||
return $controllers;
|
||||
|
|
|
@ -38,7 +38,7 @@ class Game
|
|||
private $level;
|
||||
|
||||
/**
|
||||
* @ORM\OneToMany(targetEntity="Hit", mappedBy="game", fetch="EXTRA_LAZY")
|
||||
* @ORM\OneToMany(targetEntity="Hit", mappedBy="game", fetch="EXTRA_LAZY", cascade={"persist"})
|
||||
*/
|
||||
private $hits;
|
||||
|
||||
|
@ -48,6 +48,13 @@ class Game
|
|||
*/
|
||||
private $score;
|
||||
|
||||
/**
|
||||
* @var \DateTime $originalGameAt
|
||||
*
|
||||
* @ORM\Column(type="datetime")
|
||||
*/
|
||||
private $originalGameAt;
|
||||
|
||||
/**
|
||||
* @var \DateTime $created
|
||||
*
|
||||
|
@ -135,4 +142,46 @@ class Game
|
|||
public function getPosition() {
|
||||
return Application::getInstance()->getEm()->getRepository(static::class)->getPositionForGame($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of user.
|
||||
*
|
||||
* @param mixed $user the user
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setUser(User $user)
|
||||
{
|
||||
$this->user = $user;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of level.
|
||||
*
|
||||
* @param mixed $level the level
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setLevel(Level $level)
|
||||
{
|
||||
$this->level = $level;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of originalGameAt.
|
||||
*
|
||||
* @param \DateTime $date Set the time the original game was played on the device.
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setOriginalGameAt(\DateTime $date)
|
||||
{
|
||||
$this->originalGameAt = $date;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
1120
src/Models/Hit.php
1120
src/Models/Hit.php
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue