<?php

namespace Webkul\WooCommerceBundle\Extension\MassAction\Handler\Akeneo4;

use Doctrine\ORM\EntityManager;
use Webkul\WooCommerceBundle\Repository\CredentialConfigRepository;
use Webkul\WooCommerceBundle\Entity\CredentialConfig;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;


class MassDeleteController
{
    /** @var CredentialConfigRepository */
    protected $credentialConfigRepository;

    /** @var EntityManager */
    protected $em;

    /**
     * @param CategoryRepositoryInterface $repository
     * @param NormalizerInterface         $normalizer
     * @param ObjectFilterInterface       $objectFilter
     */
    public function __construct(
        CredentialConfigRepository $credentialConfigRepository,
        EntityManager $em
    ) {
        $this->credentialConfigRepository = $credentialConfigRepository;
        $this->em = $em;
    }

    public function massDeleteAction(Request $request)
    {
        $data = json_decode($request->getContent(), true);
        $values = explode(",",$data['values']);

        if(count($values) == $data['itemsCount']) {
            try {
                $results = $this->credentialConfigRepository->createQueryBuilder('e')
                            ->delete()
                            ->Where('e.id IN (:ids)')
                            ->setParameters(['ids' => $values])
                            ->getQuery()
                            ->getResult();                
            } catch(\Exception $e) {
                return new Response('false', Response::HTTP_BAD_REQUEST);
            }
        } else {            
            try {
                $results = $this->credentialConfigRepository->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);
            }
        }

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

}
