Files
PowerPME_Web/src/Controller/Frontend/SoftwareController.php
2025-10-27 13:12:25 +01:00

113 lines
4.1 KiB
PHP

<?php
namespace App\Controller\Frontend;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
use Doctrine\ORM\EntityManagerInterface;
use App\Service\CryptoService;
use App\Repository\UserRepository;
use App\Repository\SoftwareActivationRepository;
#[Route('/software')]
final class SoftwareController extends AbstractController
{
/**
* @param SoftwareActivationRepository $softwareActivationRepository
* @param UserRepository $userRepository
* @param EntityManagerInterface $em
* @return $this
*/
public function __construct(
private UserRepository $userRepository,
private SoftwareActivationRepository $softwareActivationRepository,
private CryptoService $cryptoService,
private EntityManagerInterface $em
){
$this->em = $em;
$this->userRepository = $userRepository;
$this->cryptoService = $cryptoService;
$this->softwareActivationRepository = $softwareActivationRepository;
}
#[Route('/activation', name: 'software_activation')]
public function activation(Request $request): JsonResponse
{
$id = $request->get('id');
$companyName = $request->get('CompanyName');
$companyMF = $request->get('CompanyMF');
$pcName = $request->get('PCName');
$partnerEmail = $request->get('Partner');
$disqueNom = $request->get('DisqueNom');
$disqueModel = $request->get('DisqueModel');
$disqueSerial = $request->get('DisqueSerial');
$user = null;
$statu = 0;
/*
pour le code
0 | null --> n'ai pas encore activer
1 --> activer
2 --> La demande a été bien envoyer pour activé le logiciel
n --> erreur
*/
if($id){
$softwareActivation = $this->softwareActivationRepository->find($id);
}else{
$softwareActivation = $this->softwareActivationRepository->findOneBy(['disqueNom'=>$disqueNom, 'disqueModel'=>$disqueModel, 'disqueSerial'=>$disqueSerial]);
}
if($partnerEmail)
{
$user = $this->userRepository->findOneBy(['email'=>$partnerEmail]);
if(!$user){
return new JsonResponse(['code'=>404, 'message'=>'partenaire inconnu', 'body'=>[]]);
}else{
$partner = $user->getPartner();
if($partner){
if(!$partner->isActive()){
return new JsonResponse(['code'=>403, 'message'=>'Accès refusé au partner', 'body'=>[]]);
}
}
}
}
if($softwareActivation)
{
if($softwareActivation->getStatu() == 1)
{
return new JsonResponse(['code'=>1, 'message'=>'true', 'body'=>[
'Id'=>$softwareActivation->getId(),
'Date'=>$softwareActivation->getDateAddFormat('Y-m-d H:i:s'),
'DisqueNom'=>$this->cryptoService->chiffrer($disqueNom),
'DisqueModel'=>$this->cryptoService->chiffrer($disqueModel),
'DisqueSerial'=>$this->cryptoService->chiffrer($disqueSerial),
]]);
}else{
return new JsonResponse(['code'=>0, 'message'=>"n'ai pas encore activer", 'body'=>[
'Id'=>$softwareActivation->getId(),
]]);
}
}else{
$softwareActivation = $this->softwareActivationRepository->addSoftwareActivation($companyName, $companyMF, $pcName, $user, $disqueNom, $disqueModel, $disqueSerial, $statu);
return new JsonResponse(['code'=>2, 'message'=>'La demande a été bien envoyer pour activé le logiciel', 'body'=>[
'Id'=>$softwareActivation->getId(),
]]);
}
return new JsonResponse(['code'=>500, 'message'=>"erreur lors d'activation du logiciel", 'body'=>[]]);
}
}