113 lines
4.1 KiB
PHP
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'=>[]]);
|
|
}
|
|
|
|
|
|
}
|