<?php

namespace Webkul\WebkulCsvImportBundle\MassAction;

use Doctrine\ORM\EntityManager;
use Oro\Bundle\SecurityBundle\Annotation\AclAncestor;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Webkul\WebkulCsvImportBundle\Repository\TemplateConfigurationRepository;

class MassDeleteController
{
    /**
     * @param CategoryRepositoryInterface $repository
     * @param NormalizerInterface         $normalizer
     * @param ObjectFilterInterface       $objectFilter
     */
    public function __construct(
        public TemplateConfigurationRepository $templateRepository,
        public EntityManager $em
    ) {
    }

    /**
     * Mass delete template
     *
     * @AclAncestor("webkul_csv_import_connector_configuration")
     * 
     * @return JsonResponse
     */
    public function massTemplateDeleteAction(Request $request)
    {
        $data = json_decode($request->getContent(), true);
        $values = explode(",", $data['values']);

        if (!$data['inset']) {
            try {
                $results = $this->templateRepository->createQueryBuilder('e')
                    ->delete()
                    ->Where('e.id NOT IN (:ids)')
                    ->setParameters(['ids' => $values])
                    ->getQuery()
                    ->getResult();
            } catch (\Exception $e) {
                return new Response('false', Response::HTTP_BAD_REQUEST);
            }
        }

        $this->templateRepository->clear();
        $id = $data['values'];
    
        foreach ($values as $value) {
            $asset = $this->templateRepository->findOneBy(['id' => $value]);

            if ($asset) {
                $this->em->remove($asset);
                $this->em->flush();
            }
        }

        return new Response('true', Response::HTTP_OK);
    }
}
