<?php
namespace App\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\SmsPackages;
use App\Repository\SmsPackagesRepository;
use App\Form\Filters\SmsPackagesFilter;
use App\Form\SmsPackagesForm;
use App\Form\PlanSettingForm;
#[Route('/plan')]
class ManagePlanSettingsController extends AbstractController
{
#[Route('/settings', defaults: ['page' => '1'], methods: ['GET', 'POST'], name: 'manage_plan_index')]
public function index(Request $request,int $page,EntityManagerInterface $entityManager, SmsPackagesRepository $smsPackagesRepository): Response
{
//$params = $request->query->all();
$params = [];
$setting = $entityManager->getRepository(\App\Entity\SiteSettings::class);
$params = array(
'primaryPlanPrice' => $setting->getSetting('plan.primary_plan_price'),
'primaryPlanMember' => $setting->getSetting('plan.primary_plan_member'),
'primaryPlanStorage' => $setting->getSetting('plan.primary_plan_storage'),
'perMemberPrice' => $setting->getSetting('plan.per_member_price'),
'perStoragePrice' => $setting->getSetting('plan.per_storage_price'),
'trialPeriod' => $setting->getSetting('plan.trial_period'),
'crmRevoked' => $setting->getSetting('plan.crm_revoked'),
'smsQuantity' => $setting->getSetting('plan.sms_quantity'),
'smsAmount' => $setting->getSetting('plan.sms_amount')
);
if ($request->isMethod('POST')) {
$primaryPlanMember = $request->request->get('primary_plan_member');
$primaryPlanPrice = $request->request->get('primary_plan_price');
$primaryPlanStorage = $request->request->get('primary_plan_storage');
$perMemberPrice = $request->request->get('per_member_price');
$perBucketPrice = $request->request->get('per_storage_price');
$trialPeriod = $request->request->get('trial_period');
//$crmRevoked = $form->get('crm_revoked')->getData();
$smsQuantity = $request->request->get('sms_quantity');
$smsAmount = $request->request->get('sms_amount');
$setting->setSetting('plan.primary_plan_price', trim($primaryPlanPrice));
$setting->setSetting('plan.primary_plan_member', trim($primaryPlanMember));
$setting->setSetting('plan.primary_plan_storage', trim($primaryPlanStorage));
$setting->setSetting('plan.per_member_price', trim($perMemberPrice));
$setting->setSetting('plan.per_storage_price', trim($perBucketPrice));
$setting->setSetting('plan.trial_period', trim($trialPeriod));
//$setting->setSetting('plan.crm_revoked', trim($crmRevoked));
$setting->setSetting('plan.sms_quantity', trim($smsQuantity));
$setting->setSetting('plan.sms_amount', trim($smsAmount));
$this->addFlash('success', 'Plan Updated');
return $this->redirectToRoute('manage_plan_index', [], Response::HTTP_SEE_OTHER);
}
return $this->render('manage-plan/index.html.twig', [
//'form' => $form,
'params' => $params
]);
}
#[Route('/manage-sms', defaults: ['page' => '1'], methods: ['GET'], name: 'manage_sms_index')]
#[Route('/page/{page<[1-9]\d*>}', methods: ['GET'], name: 'manage_sms_index_paginated')]
#[Cache(smaxage: 10)]
public function smsPackages(Request $request,int $page,EntityManagerInterface $entityManager, SmsPackagesRepository $smsPackagesRepository): Response
{
$params = $request->query->all();
$filter = [];
$filterForm = $this->createForm(SmsPackagesFilter::class);
if(isset($params['package'])) {
$filterForm['package']->setData($params['package']);
$filter['package'] = $params['package'];
}
$data = $smsPackagesRepository->adminPaginatorFetchAll($page, $filter);
return $this->render('manage-plan/manage-sms.html.twig', [
'paginator' => $data,
'filter' => $params,
'form' => $filterForm->createView(),
]);
}
#[Route('/add', name: 'sms_packages_add', methods: ['GET', 'POST'])]
public function add(Request $request, EntityManagerInterface $entityManager){
$redirectPage ='';
$smsPackages = new SmsPackages();
$form = $this->createForm(SmsPackagesForm::class, $smsPackages);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$smsPackages->setCreatedAt(new \DateTime());
$entityManager->persist($smsPackages);
$entityManager->flush();
$this->addFlash('success', 'Created successfully.');
$redirectPage = $request->request->get('redirect_page');
if($redirectPage){
return $this->redirectToRoute('manage_sms_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
}
return $this->redirectToRoute('manage_sms_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('manage-plan/add.html.twig', [
'form' => $form,
'redirect_page' =>$redirectPage
]);
}
#[Route('/edit-sms-package/{id}', name: 'sms_package_edit', methods: ['GET', 'POST'])]
public function editSmsPackage($id, Request $request, SmsPackages $smsPackages, EntityManagerInterface $entityManager){
$redirectPage = $request->query->get('redirect_page');
$form = $this->createForm(SmsPackagesForm::class, $smsPackages);
$form->handleRequest($request);
if ($form->isSubmitted()) {
$entityManager->persist($smsPackages);
$entityManager->flush();
$this->addFlash('success', 'Update successfully.');
$redirectPage = $request->request->get('redirect_page');
if($redirectPage){
return $this->redirectToRoute('manage_sms_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
}
return $this->redirectToRoute('manage_sms_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('manage-plan/_edit_form.html.twig', [
'form' => $form,
'id'=>$id,
'redirect_page' => $redirectPage
]);
}
#[Route('/delete-sms/{id}', name: 'delete_sms', methods: ['POST','GET'])]
public function deleteSms(Request $request, EntityManagerInterface $entityManager, SmsPackages $smsPackages): Response
{
if ($this->isCsrfTokenValid('delete'.$smsPackages->getId(), $request->request->get('_token'))) {
if($request->isMethod('POST')){
$entityManager->remove($smsPackages);
$entityManager->flush();
$this->addFlash('error', 'Delete successfully.');
if($request->request->get('redirect_page')){
return $this->redirectToRoute('manage_sms_index_paginated', ['page'=> $request->request->get('redirect_page')], Response::HTTP_SEE_OTHER);
}
return $this->redirectToRoute('manage_sms_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('manage-plan/_delete_form.html.twig', [
'smsPackages' => $smsPackages,
'redirect_page' => $request->query->get('redirect_page')
]);
}
#[Route('/disable-sms/{id}', name: 'disable_sms', methods: ['POST','GET'])]
public function disableSms($id, Request $request, EntityManagerInterface $entityManager,SmsPackages $smsPackages): Response
{
$query = $entityManager->getRepository(\App\Entity\SmsPackages::class)->find($id);
if($request->isMethod('POST')){
$query->setIsActive(0);
$entityManager->persist($query);
$entityManager->flush();
$this->addFlash('success', 'Enable successfully.');
if($request->request->get('redirect_page')){
return $this->redirectToRoute('manage_sms_index_paginated', ['page'=> $request->request->get('redirect_page')], Response::HTTP_SEE_OTHER);
}
return $this->redirectToRoute('manage_sms_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('manage-plan/_disable_sms_form.html.twig', [
'smsPackages' => $smsPackages,
'redirect_page' => $request->query->get('redirect_page')
]);
}
#[Route('/enable-sms/{id}', name: 'enable_sms', methods: ['POST','GET'])]
public function enableSms($id, Request $request, EntityManagerInterface $entityManager,SmsPackages $smsPackages): Response
{
$query = $entityManager->getRepository(\App\Entity\SmsPackages::class)->find($id);
if($request->isMethod('POST')){
$query->setIsActive(1);
$entityManager->persist($query);
$entityManager->flush();
$this->addFlash('success', 'Disable successfully.');
if($request->request->get('redirect_page')){
return $this->redirectToRoute('manage_sms_index_paginated', ['page'=> $request->request->get('redirect_page')], Response::HTTP_SEE_OTHER);
}
return $this->redirectToRoute('manage_sms_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('manage-plan/_enable_sms_form.html.twig', [
'smsPackages' => $smsPackages,
'redirect_page' => $request->query->get('redirect_page')
]);
}
/* #[Route('/edit/{id}', name: 'testimonial_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, EntityManagerInterface $entityManager, Testimonials $testimonials){
$form = $this->createForm(TestimonialForm::class, $testimonials);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$testimonials->setUpdatedAt(new \DateTime());
$entityManager->persist($testimonials);
$entityManager->flush();
$this->addFlash('success', 'Update successfully.');
return $this->redirectToRoute('manage_testimonial_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('testimonial/edit-page.html.twig', [
'form' => $form,
'testimonials'=>$testimonials
]);
}
#[Route('/delete-testimonial/{id}', name: 'delete_testimonial', methods: ['POST','GET'])]
public function delete(Request $request, EntityManagerInterface $entityManager, Testimonials $testimonials): Response
{
if ($this->isCsrfTokenValid('delete'.$testimonials->getId(), $request->request->get('_token'))) {
if($request->isMethod('POST')){
$entityManager->remove($testimonials);
$entityManager->flush();
$this->addFlash('error', 'Delete successfully.');
if($request->request->get('redirect_page')){
return $this->redirectToRoute('manage_testimonial_index_paginated', ['page'=> $request->request->get('redirect_page')], Response::HTTP_SEE_OTHER);
}
return $this->redirectToRoute('manage_testimonial_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('testimonial/_delete_form.html.twig', [
'testimonials' => $testimonials,
'redirect_page' => $request->query->get('redirect_page')
]);
} */
}