Check hit hasImage
This commit is contained in:
parent
3bc73d412f
commit
59f141ea9b
4 changed files with 41 additions and 11 deletions
|
@ -152,7 +152,7 @@ class ScoreControllerProvider implements ControllerProviderInterface
|
|||
return new JsonResponse(['success' => false, 'message' => "no files given"], 400);
|
||||
}
|
||||
|
||||
$valid_parts = ['brows','mouth_left','mouth_right','nose'];
|
||||
$valid_parts = Models\Hit::$FEATURES;
|
||||
foreach($valid_parts as $part) {
|
||||
$path = $app['file.path'] . "/hits/$part";
|
||||
if(!is_dir($path)) {
|
||||
|
@ -178,16 +178,25 @@ class ScoreControllerProvider implements ControllerProviderInterface
|
|||
return new JsonResponse(['success' => false, 'message' => "unknown face part '$part'"], 400);
|
||||
}
|
||||
|
||||
/* @var $em \Doctrine\ORM\EntityManager */
|
||||
$em = $app['entity.manager'];
|
||||
/* @var $hitRepo Models\HitRepository */
|
||||
$hitRepo = $em->getRepository(Models\Hit::class);
|
||||
|
||||
/* @var $hit Models\Hit */
|
||||
$hit = $app['entity.manager']->getRepository(Models\Hit::class)->find($hit_id);
|
||||
$hit = $hitRepo->find($hit_id);
|
||||
if(empty($hit) || $hit->getGame()->getUser()->getId() != $user->getId()) {
|
||||
return new JsonResponse(['success' => false, 'message' => "Hit not found."], 400);
|
||||
}
|
||||
$targetFilename = $hit->getFeatureFilename($part);
|
||||
|
||||
$file->move($app['file.path'] . "/hits/{$part}/", "{$hit->getId()}.jpg" );
|
||||
|
||||
$file->move($targetFilename);
|
||||
$hit->setHasImage(true);
|
||||
$em->persist($hit);
|
||||
}
|
||||
|
||||
$em->flush()
|
||||
|
||||
return new JsonResponse(['success' => true, 'message' => "images saved."], 200);
|
||||
});
|
||||
|
||||
|
|
|
@ -44,6 +44,12 @@ class Hit
|
|||
*/
|
||||
private $score;
|
||||
|
||||
/**
|
||||
* @var boolean Is set to true when an image is saved to disk
|
||||
* @ORM\Column(type="boolean")
|
||||
*/
|
||||
private $hasImage = false;
|
||||
|
||||
|
||||
/** @ORM\Embedded(class="Attributes", columnPrefix=false) */
|
||||
private $attributes;
|
||||
|
@ -57,9 +63,6 @@ class Hit
|
|||
/** @ORM\Embedded(class = "Points", columnPrefix=false) */
|
||||
private $points;
|
||||
|
||||
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->hits = new ArrayCollection();
|
||||
|
@ -111,7 +114,7 @@ class Hit
|
|||
/**
|
||||
* Gets the value of emotions.
|
||||
*
|
||||
* @return mixed
|
||||
* @return Emotions
|
||||
*/
|
||||
public function getEmotions()
|
||||
{
|
||||
|
@ -173,6 +176,22 @@ class Hit
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return boolean
|
||||
*/
|
||||
public function hasImage() {
|
||||
return (bool) $this->hasImage;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $hasImage
|
||||
* @return self
|
||||
*/
|
||||
public function setHasImage(bool $hasImage) {
|
||||
$this->hasImage = $hasImage;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public static $FEATURES = ['brows','nose','mouth_left','mouth_right'];
|
||||
|
||||
/**
|
||||
|
@ -205,6 +224,7 @@ class Hit
|
|||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -33,15 +33,16 @@ class HitRepository extends EntityRepository
|
|||
* @return Hit
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getClosestHit(string $emotionField, float $score) {
|
||||
public function getClosestHitWithImage(string $emotionField, float $score) {
|
||||
if(!in_array($emotionField, Emotions::$EMOTIONS))
|
||||
throw new \Exception("Invalid emotion!");
|
||||
|
||||
$query = $this->_em->createQuery(
|
||||
"SELECT h, ABS(:score - h.emotions.$emotionField) as HIDDEN distance FROM ".Hit::class." h ORDER BY distance ASC "
|
||||
"SELECT h, ABS(:score - h.emotions.$emotionField) as HIDDEN distance FROM ".Hit::class." h WHERE h.hasImage = :has ORDER BY distance ASC "
|
||||
)
|
||||
->setParameters([
|
||||
'score' => $score,
|
||||
'has' => true,
|
||||
])
|
||||
->setMaxResults(1);
|
||||
return $query->getSingleResult();
|
||||
|
|
|
@ -27,7 +27,7 @@ font-weight:bold;
|
|||
foreach(range(0, 100, 10) as $i) {
|
||||
/* @var $hitRepo EmotionHero\Models\HitRepository */
|
||||
$hitRepo = $em->getRepository(EmotionHero\Models\Hit::class);
|
||||
$hit = $hitRepo->getClosestHit("anger", $i);
|
||||
$hit = $hitRepo->getClosestHitWithImage("anger", $i);
|
||||
$img = $hit->getFeatureImgAsString("brows");
|
||||
$score = $hit->getEmotions()->getEmotionScore("anger");
|
||||
|
||||
|
|
Loading…
Reference in a new issue