add users online

This commit is contained in:
Hesabix 2024-12-31 14:56:52 +00:00
parent 20c20b3eaf
commit aa07c84fb0
5 changed files with 59 additions and 14 deletions

View file

@ -14,6 +14,7 @@ use App\Entity\Registry;
use App\Entity\Settings;
use App\Entity\StoreroomTicket;
use App\Entity\User;
use App\Entity\UserToken;
use App\Entity\WalletTransaction;
use App\Service\Extractor;
use App\Service\Jdate;
@ -581,6 +582,23 @@ class AdminController extends AbstractController
return $this->json($extractor->operationSuccess(array_reverse($temps)));
}
#[Route('/api/admin/onlineusers/list', name: 'api_admin_online_users_list')]
public function api_admin_online_users_list(Extractor $extractor,Jdate $jdate, EntityManagerInterface $entityManager): JsonResponse
{
$tokens = $entityManager->getRepository(UserToken::class)->getOnlines(120);
$res = [];
foreach($tokens as $token){
$res[] = [
'name' => $token->getUser()->getFullName(),
'email'=>$token->getUser()->getEmail(),
'mobile'=>$token->getUser()->getMobile(),
'lastActive'=>$token->getLastActive() - time(),
];
}
return $this->json($res);
}
/**
* @throws Exception
*/

View file

@ -218,7 +218,7 @@ class BusinessController extends AbstractController
}
}
if (array_key_exists('profitCalcType', $params)) {
if ($params['profitCalcType'] == 'lis' || $params['profitCalcType'] == 'avgis') {
if ($params['profitCalcType'] == 'lis' || $params['profitCalcType'] == 'avgis' || $params['profitCalcType'] == 'simple') {
$business->setProfitCalcType($params['profitCalcType']);
}
} else {

View file

@ -4,6 +4,7 @@ namespace App\Controller;
use App\Entity\Business;
use App\Entity\Notification;
use App\Entity\UserToken;
use App\Service\Access;
use App\Service\Jdate;
use App\Service\Log;
@ -11,13 +12,14 @@ use App\Service\twigFunctions;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class NotificationsController extends AbstractController
{
#[Route('/api/notifications/list/{type}', name: 'api_notification_list')]
public function api_notification_list(twigFunctions $twigFunctions,Access $access, Jdate $jdate, EntityManagerInterface $entityManager,String $type = 'all'): JsonResponse
public function api_notification_list(twigFunctions $twigFunctions,Access $access,Request $request, Jdate $jdate, EntityManagerInterface $entityManager,String $type = 'all'): JsonResponse
{
if(!$this->getUser())
throw $this->createAccessDeniedException('lot loged in');
@ -62,6 +64,15 @@ class NotificationsController extends AbstractController
$temp['id'] = $item->getId();
$temps[] = $temp;
}
$userToken = $entityManager->getRepository(UserToken::class)->findOneBy([
'token'=> $request->headers->get('X-AUTH-TOKEN')
]);
if($userToken){
$userToken->setLastActive(time());
$entityManager->persist($userToken);
$entityManager->flush();
}
return $this->json($temps);
}

View file

@ -23,6 +23,9 @@ class UserToken
#[ORM\Column(length: 255, nullable: true)]
private ?string $tokenID = null;
#[ORM\Column(length: 40, nullable: true)]
private ?string $lastActive = null;
public function getId(): ?int
{
return $this->id;
@ -63,4 +66,16 @@ class UserToken
return $this;
}
public function getLastActive(): ?string
{
return $this->lastActive;
}
public function setLastActive(?string $lastActive): static
{
$this->lastActive = $lastActive;
return $this;
}
}

View file

@ -43,7 +43,7 @@ class UserTokenRepository extends ServiceEntityRepository
/**
* @throws NonUniqueResultException
*/
public function findByApiToken($value): UserToken | null
public function findByApiToken($value): UserToken|null
{
return $this->createQueryBuilder('u')
->andWhere('u.token = :val')
@ -58,7 +58,7 @@ class UserTokenRepository extends ServiceEntityRepository
/**
* @throws NonUniqueResultException
*/
public function findByApiTokenID($value): UserToken | null
public function findByApiTokenID($value): UserToken|null
{
return $this->createQueryBuilder('u')
->andWhere('u.tokenID = :val')
@ -67,13 +67,14 @@ class UserTokenRepository extends ServiceEntityRepository
->getQuery()
->getOneOrNullResult();
}
// public function findOneBySomeField($value): ?UserToken
// {
// return $this->createQueryBuilder('u')
// ->andWhere('u.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
public function getOnlines($maxTime = 120): ?array
{
return $this->createQueryBuilder('u')
->andWhere('u.lastActive > :maxTime')
->setParameter('maxTime', time() - $maxTime)
->getQuery()
->getResult()
;
}
}