You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.5 KiB
PHP

<?php
namespace CubiStore\Web\Service;
use ApkParser\Manifest;
use ApkParser\Parser;
use CubiStore\Web\Model\App;
use CubiStore\Web\Model\Release;
use CubiStore\Web\Utils\Apk;
use Doctrine\ORM\EntityManager;
class AppService
{
/**
* @var EntityManager
*/
private $entityManager;
/**
* AppService constructor.
* @param EntityManager $entityManager
*/
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
public function hasApprovedApp(string $name): bool
{
/** @var App|null $app */
$app = $this->entityManager
->getRepository(App::class)
->findOneBy(['name' => $name, 'status' => App::STATUS_APPROVED]);
return $app !== null;
}
public function createApp(Apk $apk): App
{
$app = new App();
$app->setName($apk->getPackageName());
$app->setLabel($apk->getLabel());
return $app;
}
public function createRelease(Apk $apk, App $app, string $file): Release
{
$release = new Release();
$release->setApp($app);
$release->setVersionCode($apk->getVersionCode());
$release->setVersionName($apk->getVersionName());
$release->setApk($file);
return $release;
}
public function getStorePath(App $app, Apk $apk): string
{
return __DIR__ . '/../../var/storage/apk/' . $app->getName() . '/' . $app->getId() . '/' . $apk->getVersionCode();
}
}