<?php
namespace App\Controller;
use App\Entity\AppointmentSchedule;
use App\Entity\EdgeSales;
use App\Entity\EducationUserHistory;
use App\Manager\InvitationCodeManager;
use App\Repository\BrandRepository;
use App\Repository\EdgeSalesRepository;
use App\Repository\EducationQuizResultRepository;
use App\Repository\EducationUserHistoryRepository;
use App\Repository\RewardRepository;
use App\Repository\SubmissionRepository;
use App\Service\Edge\EdgeAPI;
use App\Service\EmailService;
use App\Service\PageService;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordToken;
use Vich\UploaderBundle\Templating\Helper\UploaderHelper;
class DefaultController extends AbstractController
{
/**
* @Route("/", name="homepage")
*/
public function index(PageService $pageService): Response
{
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
'page' => $pageService->getHomepageHeroPage(),
]);
}
/**
* @Route("/empty", name="empty")
*/
public function empty(): Response
{
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
/**
* @Route("/testemail", name="testemail")
*/
public function testEmail(
EmailService $emailService,
SubmissionRepository $submissionRepository,
RewardRepository $rewardRepository,
): Response {
$user = $this->getUser();
$resetToken = (new ResetPasswordToken('test', new \DateTime(), 1));
// $emailService->resetPasswordEmail($user, $resetToken);
//
// $emailService->registrationConfirmation($user);
//
//
// $appointment = (new AppointmentSchedule())
// ->setCompanyName('Name')
// ->setContactPersonName('Name')
// ->setCompanyWebsite('Name')
// ->setContactEmail('admin@studioxmedia.com')
// ->setContactPhone('Name')
// ->setAbout('Name')
// ->setComment('Name');
// $emailService->sendAppointmentScheduleNotification($appointment);
$rewards = $rewardRepository->findAll();
$emailService->rewardPaid($rewards[0]);
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
/**
* @Route("/test/code", name="testcdde")
*/
public function testCode(InvitationCodeManager $invitationCodeManager, BrandRepository $brandRepository): Response
{
foreach ($brandRepository->findAll() as $brand) {
dump($invitationCodeManager->generateCode($brand));
}
exit;
}
/**
* @Route("/test/edge", name="testedge")
*/
public function testEdge(
EdgeAPI $edgeAPI,
EdgeSalesRepository $edgeSalesRepository,
EntityManagerInterface $entityManager,
): Response {
$operationKey = $edgeAPI->requestSalesForVendorClients();
dump($operationKey);
$requestCompleted = false;
$attempts = 1;
while (false === $requestCompleted && $attempts <= 25) {
$requestCompleted = $edgeAPI->isSalesForVendorClientsComplete($operationKey);
dump(sprintf('%s - %s', $attempts, $requestCompleted ? 'Completed' : ' Not Completed'));
++$attempts;
sleep(1);
}
if ($requestCompleted) {
dump('get sales');
$sales = $edgeAPI->getSalesForVendorClientsResults($operationKey);
foreach ($sales->APIVendorSale as $sale) {
dump($sale->SaleID);
$edgeSale = $edgeSalesRepository->findOneBy(['externalId' => $sale->SaleID]);
if (!$edgeSale) {
$edgeSale = (new EdgeSales())
->setExternalId($sale->SaleID)
->setData((array) $sale);
$this->addFlash('success', sprintf('Added sale %s', $sale->SaleID));
$entityManager->persist($edgeSale);
}
$entityManager->flush();
}
}
exit;
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
/**
* @Route("/test/checkeducationquizandhistory", name="checkeducationquizandhistory")
*/
public function checkeducationquizandhistory(
EducationQuizResultRepository $educationQuizResultRepository,
EducationUserHistoryRepository $educationUserHistoryRepository,
EntityManagerInterface $entityManager,
UploaderHelper $uploaderHelper,
): Response {
$quizResults = $educationQuizResultRepository->findAll();
foreach ($quizResults as $quizResult) {
$educationUserHistory = $educationUserHistoryRepository->findOneBy([
'user' => $quizResult->getUser(),
'education' => $quizResult->getEducation(),
]);
if (!$educationUserHistory) {
$educationUserHistory = new EducationUserHistory();
$educationUserHistory
->setUser($quizResult->getUser())
->setEducation($quizResult->getEducation())
->setDuration(0)
->setPlayedDuration(0);
$entityManager->persist($educationUserHistory);
$this->addFlash('success', sprintf(
'Added watch history to %s for video %s',
$quizResult->getUser()->getFullName(),
$quizResult->getEducation()->getName(),
));
}
}
$entityManager->flush();
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
}