src/Controller/Customer/CustomerCampaignDataset.php line 47

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Customer;
  4. use Symfony\Component\HttpFoundation\{
  5.     Request,
  6.     Response
  7. };
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  11. use App\Common\Controllers\CrmCrudAbstractController;
  12. use App\Entity\{
  13.     Campaign,
  14.     CampaignContact
  15. };
  16. use App\Services\{
  17.     Customer\CustomerCampaignService,
  18.     Campaign\DatasetService
  19. };
  20. class CustomerCampaignDataset extends CrmCrudAbstractController
  21. {
  22.     private const TEMPLATE_FOLDER 'customer/dataset/';
  23.     /**
  24.      * @see CrmAbstractController
  25.      */
  26.     protected function initModuleDetails(): array
  27.     {
  28.         return [
  29.             'entityClassName' => CampaignContact::class,
  30.             'moduleService' => CustomerCampaignService::class,
  31.             'modulePrefix' => 'customer_dataset',
  32.             'moduleTemplate' => self::TEMPLATE_FOLDER,
  33.             'hasPagin' => false,
  34.             'defaultSort' => ['field' => 'cs.rank''op' => 'DESC'],
  35.             'hasFilter' => true,
  36.             //'useIndexMode' => true,
  37.         ];
  38.     }
  39.     #[IsGranted("ROLE_CUSTOMER")]
  40.     #[Route('/customer/campaign/{id}/dataset'name'customer_campaign_dataset')]
  41.     public function index(
  42.         Request $request,
  43.         CustomerCampaignService $customerCampaignService,
  44.         Campaign $campaign
  45.     ): Response {
  46.         $filters parent::setKeyword($request$campaign);
  47.         $filters array_merge($filtersparent::setSort($request$campaign));
  48.         $contacts $customerCampaignService->getCampaignDataset(
  49.             $campaign,
  50.             ...$filters
  51.         );
  52.         $template $request->isXmlHttpRequest() ? '_listing.html.twig' 'index.html.twig';
  53.         
  54.         return $this->render(
  55.             $this->moduleTemplate $template, [
  56.                 'contacts' => $contacts,
  57.                 'campaign' => $campaign,
  58.             ]
  59.         );
  60.     }
  61.     #[IsGranted("ROLE_CUSTOMER")]
  62.     #[Route('/customer/contact/{campaignContactId}/customer-comment'name'customer_campaign_dataset_comment')]
  63.     #[ParamConverter('campaignContact', class: CampaignContact::class, options: ['mapping' => ['campaignContactId' => 'id']])]
  64.     public function getCustomerComment(
  65.         DatasetService $datasetService,
  66.         CampaignContact $campaignContact
  67.     ): Response {
  68.         return $this->render(
  69.             self::TEMPLATE_FOLDER 'customer_comments.html.twig', [
  70.                 'campaignContact' => $campaignContact,
  71.                 'calls' => $datasetService->getCustomerComments($campaignContact),
  72.             ]
  73.         );
  74.     }
  75. }