?? GreyFile — Mystic File Browser

Current path: home/webdevt/cryptoimpot.fr/module/Application/src/Controller/



?? Go up: /home/webdevt/cryptoimpot.fr/module/Application/src

?? Viewing: ImportationController.php

<?php

namespace Application\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use Laminas\Mail\Message;
use Laminas\Mime;
use Laminas\Mail\Transport\Sendmail as SendmailTransport;
use Exception;

class ImportationController extends AbstractActionController {

    const ROUTE_IMPORTATION = 'importation';
    const ROUTE_IMPORTATION_EXCHANGE = 'importation/exchange';
    const ROUTE_IMPORTATION_UPLOAD = 'importation/upload';
    const ROUTE_IMPORTATION_API = 'importation/api';
    const ROUTE_IMPORTATION_DELETE_ALL = 'importation/delete-all';

    /**
     * @var Doctrine\ORM\EntityManager

      protected $em;

      public function setEntityManager(EntityManager $em) {
      $this->em = $em;
      }

      public function getEntityManager() {
      if (null === $this->em) {
      $this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
      }
      return $this->em;
      }

      public function getServiceManager() {
      return $this->serviceManager;
      }

      public function setServiceManager(Laminas\ServiceManager\ServiceManager $serviceManager) {
      $this->serviceManager = $serviceManager;
      return $this;
      }
     * 
     */


//
//    public function getServiceManager() {
//        return $this->serviceManager;
//    }
//
//    public function setServiceManager(Laminas\ServiceManager\ServiceManager $serviceManager) {
//        $this->serviceManager = $serviceManager;
//        return $this;
//    }

    /**
     * Entity manager.
     * @var Doctrine\ORM\EntityManager
     */
    private $entityManager;

    /**
     * Auth manager.
     * @var User\Service\AuthManager
     */
    private $authManager;

    /**
     * User manager.
     * @var User\Service\UserManager
     */
    private $userManager;

    /**
     * config
     * @var array
     */
    private $config;

    public function getEntityManager() {
        return $this->entityManager;
    }

    /**
     * Constructor.
     */
    public function __construct($entityManager, $authManager, $userManager, $config, \SlmQueue\Job\AbstractJob $job, \SlmQueue\Queue\QueueInterface $queue) {
//    public function __construct($entityManager, $authManager, $userManager, $config) {

        $this->entityManager = $entityManager;

        $this->authManager = $authManager;
        $this->userManager = $userManager;
        $this->config = $config;
//        $this->jobManager = $jobManager;
        $this->job = $job;
        $this->queue = $queue;

    }

    public function getConfig() {
        return $this->config;
    }

    public function indexAction() {
        //exit;
//        if ($this->zfcUserAuthentication()->hasIdentity()) {
//            $user = $this->zfcUserAuthentication()->getIdentity();
//            //var_dump($user);
//        } else {
//            return $this->redirect()->toRoute('zfcuser', array('action' => 'login'));
//        }
        
        //$servicepaprika = new \Application\Service\APICoinPaprikaService($this->getEntityManager());
        
        
    //$list = $servicepaprika->updateDevise();
    
   
    
    
    

        if ($user = $this->currentUser()) {
            
        } else {
            return $this->redirect()->toRoute(\Application\Controller\UserController::ROUTE_LOGIN);
        }







        //$mapperUserExchangeLinker = new \Application\Mapper\UserExchangeLinkerMapper($this->getEntityManager());
        //$exchange = $mapperUserExchangeLinker->findByUser($user);


        /* Récupération de l'id */
        $mapperExchange = new \Application\Mapper\ExchangeMapper($this->getEntityManager());



        $arrayExchanges = !empty($user->getExchanges()) ? $user->getExchanges() : [];
        
//      
//var_dump($arrayExchanges[0]); exit;
        //var_dump($user->getExchanges()); exit;
        //var_dump($exchange->getExchangesId());
//        if (!empty($exchange && $exchange->getExchangesId())) {
//            $arrayIdExhanges = explode(',', $exchange->getExchangesId());
//
//
//
//
//            foreach ($arrayIdExhanges as $id) {
//                $arrayExhanges[] = $mapperExchange->findById($id);
//            }
//        }
        // error exchange générique @todo debug
foreach($arrayExchanges as $key => $exchange) {
    if ($exchange->getId() === 1) {
        unset ($arrayExchanges[$key]);
    }
    //echo $exchange->getName();
}

        $nameExchange = $this->params()->fromRoute('exchange', null);

        if (empty($nameExchange)) {
            if (!empty($arrayExchanges->offsetGet(0))) {
                $nameExchange = $arrayExchanges->offsetGet(0)->getName();
            } else {
                $nameExchange = 'exchange-generique';
            }

            //var_dump($nameExchange); exit;
            return $this->redirect()->toRoute(self::ROUTE_IMPORTATION_EXCHANGE, ['exchange' => \Application\Tool\TextTool::strToUrl($nameExchange)]);
        }

$arrayExchanges[] = $mapperExchange->findById(1);
        //var_dump($nameExchange); exit;
        //var_dump($nameExchange);
        //         exit;
        if (!empty($nameExchange)) {

            $nameExchange = str_replace('-', ' ', $nameExchange);
            $exchangeSelected = $mapperExchange->findByName($nameExchange);
//            var_dump($exchangeSelected);
//            exit;
//            if (empty($exchangeSelected) || !in_array($exchangeSelected, $arrayExhanges)) {
//            var_dump($exchangeSelected);
//            exit;
            /* @var \Doctrine\ORM\PersistentCollection $arrayExchanges */
            if (empty($exchangeSelected) || !$arrayExchanges->contains($exchangeSelected)) {
                return $this->redirect()->toRoute('accueil/ledgio/importation');
            }
        }


        //var_dump($exchangeSelected); exit;
        if ($exchangeSelected->importTradeAPIIsEnabled()) {
            $formAPI = new \Application\Form\ImportationForm\APIForm($this->getEntityManager()->getRepository(\Application\Entity\API::class), true);
            //exit;
            if ($this->getRequest()->isPost()) {

                // Récupération des données du post
                $data = array_merge_recursive(
                        $this->getRequest()->getPost()->toArray()
                );



                $formAPI->setData($data);


                if ($formAPI->isValid()) {
                    $data = $formAPI->getData();


                    // Chargement service exchange
                    $serviceName = ucfirst($nameExchange);
                    $classNameService = '\Application\Service\ExchangeService\\' . ucfirst($serviceName) . 'APIService';
                    $serviceExchange = new $classNameService($data, $user, $exchangeSelected, $this->getEntityManager());


                    //$API = $serviceExchange->getAPI();
                    // Add in queue
//exit;
//                    $job = $this->jobManager->get('\Application\Job\ImportAPI');
                    $job = $this->job;
                    //var_dump($job->getEntityManager()); exit;
                    //$job = new \Application\Job\ImportAPI;
//                    $job2 = new \Application\Job\TestJob();
//                    $this->queue->push($job2, [
//                        'delay' => 0,
//                        'priority' => 300
//                        ]);
                    //exit;
                    $job->setServiceExchange($serviceExchange);
                    $job->setContent(array(
                        //'user'      => $user,
                        'userId' => $user->getId(),
                        'exchangeId' => $exchangeSelected->getId(),
                        'data' => $data,
                        'classNameService' => $classNameService
//            'message' => 'Hi bob, you just registered for our website! Welcome!'
                    ));
//                    $job->setContent(array(
//                        //'serviceExchange' => $serviceExchange,
//                        
//                        
//                    ));
                    file_put_contents('./data/logjob.txt', 'test', FILE_APPEND | LOCK_EX);

                    //$this->queue->push($job);
                    //var_dump($this->queue); exit;
                    $this->queue->push($job, [
                        'delay' => 0,
                        'priority' => 300
                    ]);
                    /* Récupération de l'id */
                    $mapperMessage = new \Application\Mapper\MessageMapper($this->getEntityManager());

                    $message = new \Application\Entity\Message(
                            array(
                        'user' => $user,
                        'messageHeader' => 'API ' . $exchangeSelected->getName(),
                        'messageBody' => 'Importation des transactions via l\'API ' . $exchangeSelected->getName() . ' en cours',
                        'messageFooter',
                        'messageType' => 'info'
                    ));

                    $mapperMessage->insert($message);

//echo 'queue';
//                    exit;
                    //$serviceExchange->importTradesHistory();
                    //var_dump($data); exit;
                } else {
                    echo 'messages erreur';
                    //var_dump($formAPI->getMessages());
                    //exit;
                }
            }
        }



        /* Delete form */
        $formDelete = new \Application\Form\ImportationForm\DeleteAllFileByExchangeForm();

        $formDelete->setInputFilter(new \Application\InputFilter\ImportationForm\DeleteAllFileByExchangeFormInputFilter());


        $mapperImport = new \Application\Mapper\ImportMapper($this->getEntityManager());


        $importInfos = $mapperImport->findByUser($user);
        $importInfosArray = [];
        foreach ($importInfos as $import) {
            $importInfosArray[$import->getExchange()->getName()][] = $import;
        }
        $this->layout('layout/layout-ledgio');

        return new ViewModel(array(
            'arrayExchanges' => $arrayExchanges,
            'formDelete' => $formDelete,
            'exchangeSelected' => !empty($exchangeSelected) ? $exchangeSelected : null,
            //'countTradeExchangeUser' => $countTradeExchangeUser,
            'importInfosArray' => $importInfosArray,
            'formAPI' => !empty($formAPI) ? $formAPI : null
//            'listeOffresEmploi' => $listeOffresEmploi,
//            'nbIngenieurs' => $config['wdp-front-global']['nbIngenieurs'],
        ));
    }

    public function apiAction() {


        $api = new Binance\API("<api key>", "<secret>");
        $history = $api->history("BNBBTC");
        print_r($history);
    }

    public function uploadAction() {

        if ($user = $this->currentUser()) {
            
        } else {
            return $this->redirect()->toRoute(\Application\Controller\UserController::ROUTE_LOGIN);
        }


        // Vérification utilisateur bien authentifié
//        if ($this->zfcUserAuthentication()->hasIdentity()) {
//            $user = $this->zfcUserAuthentication()->getIdentity();

//        } else {
//            return $this->redirect()->toRoute('zfcuser', array('action' => 'login'));
//        }
//        \Doctrine\Common\Util\Debug::dump($user,3);
//        $userMapper = new \Application\Mapper\UserMapper($this->getEntityManager());
//        $userNew = $userMapper->findById($user->getId());
//        \Doctrine\Common\Util\Debug::dump($userNew,3); 
//        

//        
//        exit;
        /*
         * Service upload
         */

//        $config = $this->getServiceLocator()->get('config');
        $config = $this->getConfig();
        $uploadPath = $config['upload-path'];


        $uploadPath = $uploadPath . DIRECTORY_SEPARATOR . $user->getId() . DIRECTORY_SEPARATOR . 'input' . DIRECTORY_SEPARATOR;

        $exchangeName = '';

        if (!empty($_REQUEST) && !empty($_REQUEST['exchange-name'])) {
            $exchangeName = $_REQUEST['exchange-name'];
        }

        $exchangeMapper = $this->getEntityManager()->getRepository(\Application\Entity\Exchange::class);
        
        if ($exchangeName == 'exchange-generique') {
           
            $exchangeFind = $exchangeMapper->findByName('Exchange Générique');
        } else {
            $exchangeFind = $exchangeMapper->findByName($exchangeName);
        }

        $responseArray['error'] = [];
        $responseArray['error']['messages'] = [];


        
        if (empty($exchangeFind)) {

            $responseArray['error']['messages'][] = array('header' => 'Exchange inconnu', 'body' => 'Veuillez recharger la page', 'footer' => '');
        } else {
            $responseArray['exchange'] = $exchangeName;
        }







        if (count($responseArray['error']['messages']) === 0) {



            $tmpArray = explode('-', $exchangeName);

            if (count($tmpArray) > 1) {
                $serviceName = '';
                foreach ($tmpArray as $strTmp) {
                    $serviceName .= ucfirst($strTmp);
                }
            } else {
                $serviceName = ucfirst($exchangeName);
            }
            $countFile = 0;

            
            
            $classNameService = '\Application\Service\ExchangeService\\' . ucfirst($serviceName) . 'Service';
//var_dump($classNameService); exit;
//var_dump(class_exists($classNameService)); exit;
            if (!class_exists($classNameService)) {
                $responseArray['error']['messages'][] = array('header' => 'Service non disponible', 'body' => 'Service ' . $serviceName . ' non disponible', 'footer' => '');

                goto returnResponse;
            }

            $uploadPath = $uploadPath . strtolower($exchangeName) . DIRECTORY_SEPARATOR;

            $ServiceUpload = new \Application\Service\UploadHandler($user->getId(), array('upload_dir' => $uploadPath));

            $arrayFileUploaded = $ServiceUpload->arrayFileUploaded;

            $responseArray = array_merge($responseArray, $ServiceUpload->get(false));

            // $responseArray['exchange'] = $exchangeName;
            $arrayErrorMessages = $ServiceUpload->arrayErrorMessages;


            $serviceExchange = null;







//            var_dump($arrayErrorMessages);
//            var_dump($arrayErrorMessages);
//        exit;
            if (!empty($arrayErrorMessages)) {
                foreach ($arrayErrorMessages as $errorMessage) {
                    $responseArray['error']['messages'][] = array('header' => $errorMessage['header'], 'body' => $errorMessage['body'], 'footer' => $errorMessage['footer']);
                }
            }
            //var_dump($ServiceUpload->get_response());
//        var_dump($responseArray);
//        exit;
            /* */




            if (!empty($arrayFileUploaded)) {
                $countLineRecorded = 0;
                foreach ($arrayFileUploaded as $fileUploaded) {
                    $entityManager = $this->getEntityManager();


                    $serviceExchange = new $classNameService($fileUploaded, $user, $entityManager);


                    $countLineRecorded = $countLineRecorded + $serviceExchange->getCountLineRecorded();


                    //var_dump($serviceExchange); exit;
//                    } catch (Exception $ex) {
//                        $responseArray['error']['messages'][] = array('header' => 'Service non disponible', 'body' => 'Service ' . $serviceName . ' non disponible', 'footer' => '');
//
//                        goto returnResponse;
//                    }
//var_dump($fileUploaded);

                    if (!$serviceExchange->isValid()) {
                        $responseArray['error']['messages'][] = $serviceExchange->getErrorMessage();
//                    var_dump($responseArray);
//                    exit;
                        foreach ($responseArray['files'] as $index => $file) {
//                   var_dump($file->name);
//                   var_dump($fileUploaded);

                            if (strpos($fileUploaded, $file->name) !== false) {
//                        unset($responseArray['files'][$index]);
                                $obj = $responseArray['files'][$index];
                                $obj->error = $responseArray['error'];

                                //$responseArray['error']['messages'][] = array('header' => $errorMessage['title'], 'body' => $errorMessage['body'], 'footer' => $errorMessage['footer']);
                                $responseArray['files'][$index] = $obj;
                                unlink($fileUploaded);
                            }
                        }


                        continue;
                    } else {
                        $countFile++;
                    }
                }

                // on le fait apres dans l'apercu qd on click sur update
               $ledgioService = new \Application\Service\LedgioService($user, $this->getEntityManager());

//echo 'toto'; exit;
                //$ledgioService->update();



            }
        }

        //var_dump($countFile); exit;
        if (count($responseArray['error']['messages']) === 0 && $countFile) {
            $responseArray['success']['messages'][] = array(
                'header' => 'Importation réussie',
                'body' => $countFile . ' fichier' . ($countFile > 1 ? 's' : '') . ' importé' . ($countFile > 1 ? 's' : '') . ' avec succès, Nombre total d\'enregistrements ' . ucfirst($exchangeName) . ' : ' . $countLineRecorded,
                'footer' => 'Nombre total d\'enregistrements : ' . $ledgioService->countLineRecorded
            );
        }

//        var_dump($responseArray);
//        exit;
        returnResponse:
        $response = $this->getResponse();
        $response->getHeaders()->addHeaderLine('Content-Type', 'application/json');
        $response->setContent(json_encode($responseArray));

        return $response;


        //exit;
//        return new ViewModel(array(
////            'listeActualites' => $listeActualites,
////            'listeOffresEmploi' => $listeOffresEmploi,
////            'nbIngenieurs' => $config['wdp-front-global']['nbIngenieurs'],
//        ));
    }



    public function uploadOkAction() {

        // Vérification utilisateur bien authentifié
        if ($this->zfcUserAuthentication()->hasIdentity()) {
            $user = $this->zfcUserAuthentication()->getIdentity();
            //var_dump($user);
        } else {
            return $this->redirect()->toRoute('zfcuser', array('action' => 'login'));
        }

        /*
         * Service upload
         */

//        $config = $this->getServiceLocator()->get('config');
//        $configDoc = $config['wdp-admin']['document'];
//        $uploadPath = $configDoc['upload-path'];

        $config = $this->getConfig();
        $uploadPath = $config['upload-path'];
        $uploadPath = $uploadPath . DIRECTORY_SEPARATOR . $user->getId() . DIRECTORY_SEPARATOR . 'input' . DIRECTORY_SEPARATOR;

        $exchangeName = '';
        //var_dump($_REQUEST);
        if (!empty($_REQUEST) && !empty($_REQUEST['exchange-name'])) {
            $exchangeName = $_REQUEST['exchange-name'];
        }

        $responseArray['exchange'] = \Application\Tool\TextTool::strToUrl($exchangeName);

        $responseArray['error'] = [];
        $responseArray['error']['messages'] = [];



        if (empty($exchangeName)) {
            //var_dump($exchangeName);
            $responseArray['error']['messages'][] = array('header' => 'Exchange inconnu', 'body' => 'Veuillez recharger la page', 'footer' => '');
        }
//echo 'titi';
//var_dump(count($responseArray['error']['messages']));
        if (count($responseArray['error']['messages']) === 0) {

            $uploadPath = $uploadPath . strtolower($exchangeName) . DIRECTORY_SEPARATOR;

            $ServiceUpload = new \Application\Service\UploadHandler($user->getId(), array('upload_dir' => $uploadPath));

            $arrayFileUploaded = $ServiceUpload->arrayFileUploaded;

            $responseArray = array_merge($responseArray, $ServiceUpload->get(false));

            $arrayErrorMessages = $ServiceUpload->arrayErrorMessages;

//            var_dump($arrayErrorMessages);
//            echo 'toto';
//        exit;
            if (!empty($arrayErrorMessages)) {
                foreach ($arrayErrorMessages as $errorMessage) {
                    $responseArray['error']['messages'][] = array('header' => $errorMessage['header'], 'body' => $errorMessage['body'], 'footer' => $errorMessage['footer']);
                }
            }
            //var_dump($ServiceUpload->get_response());
//        var_dump($responseArray);
//        exit;
            /* */
            //var_dump($ServiceUpload->exchangeName);
            $tmpArray = explode('-', $exchangeName);

            if (count($tmpArray) > 1) {
                $serviceName = '';
                foreach ($tmpArray as $strTmp) {
                    $serviceName .= ucfirst($strTmp);
                }
            } else {
                $serviceName = ucfirst($exchangeName);
            }
            $classNameService = '\Application\Service\\' . ucfirst($serviceName) . 'Service';
//var_dump(count($tmpArray));

            $countFile = 0;
            foreach ($arrayFileUploaded as $fileUploaded) {
                $serviceExchange = new $classNameService($fileUploaded, $user, $this->getEntityManager());
//var_dump($fileUploaded);

                if (!$serviceExchange->isValid()) {
                    $responseArray['error']['messages'][] = $serviceExchange->getErrorMessage();
//                    var_dump($responseArray);
//                    exit;
                    foreach ($responseArray['files'] as $index => $file) {
//                   var_dump($file->name);
//                   var_dump($fileUploaded);

                        if (strpos($fileUploaded, $file->name) !== false) {
//                        unset($responseArray['files'][$index]);
                            $obj = $responseArray['files'][$index];
                            $obj->error = $responseArray['error'];

                            //$responseArray['error']['messages'][] = array('header' => $errorMessage['title'], 'body' => $errorMessage['body'], 'footer' => $errorMessage['footer']);
                            $responseArray['files'][$index] = $obj;
                            unlink($fileUploaded);
                        }
                    }


                    continue;
                } else {
                    $countFile++;
                }
                $ledgioService = new \Application\Service\LedgioService($user, $this->getEntityManager());
                $ledgioService->update();
            }
        }



        if (count($responseArray['error']['messages']) === 0) {
            $responseArray['success']['messages'][] = array(
                'header' => 'Importation réussie',
                'body' => $countFile . ' fichier' . ($countFile > 1 ? 's' : '') . ' importé' . ($countFile > 1 ? 's' : '') . ' avec succès'
            );
            //$responseArray['success']['message'] = ;
        }

//        var_dump($responseArray);
//        exit;

        $response = $this->getResponse();
        $response->getHeaders()->addHeaderLine('Content-Type', 'application/json');
        $response->setContent(json_encode($responseArray));
        return $response;

        //exit;
//        return new ViewModel(array(
////            'listeActualites' => $listeActualites,
////            'listeOffresEmploi' => $listeOffresEmploi,
////            'nbIngenieurs' => $config['wdp-front-global']['nbIngenieurs'],
//        ));
    }

    public function deleteAction() {


        if ($user = $this->currentUser()) {
            
        } else {
            return $this->redirect()->toRoute(\Application\Controller\UserController::ROUTE_LOGIN);
        }
        if ($this->getRequest()->isPost()) {
            // Récupération des données du post
            $data = array_merge_recursive(
                    $this->getRequest()->getPost()->toArray()
            );


            if (empty($data['importId'])) {
                $responseArray['error']['messages'][] = array(
                    'header' => 'Formulaire non valide',
                    'body' => 'Veuillez renseigner un fichier à supprimer',
                    'footer' => '');

                goto returnResponse;
            }


            // find source import
            $mapperImport = new \Application\Mapper\ImportMapper($this->getEntityManager());


            $importInfos = $mapperImport->findById($data['importId']);
            if (empty($importInfos) || $importInfos->getUser() != $user) {
                $responseArray['error']['messages'][] = array(
                    'header' => 'Source inconnue',
                    'body' => 'Cette ressource n\'existe plus',
                    'footer' => '');

                goto returnResponse;
            }



            $query = $this->getEntityManager()->createQuery("DELETE FROM Application\Entity\Ledgio l WHERE l.user = " . $user->getId() . ' AND l.import = ' . $importInfos->getId());
            $query2 = $this->getEntityManager()->createQuery("DELETE FROM Application\Entity\Import i WHERE i.user = " . $user->getId() . ' AND i.id = ' . $importInfos->getId());


//var_dump($query);
            /* @var $query \Doctrine\ORM\Query */
            //if ($query->execute()) {
            $query->execute();
            $query2->execute();

            if ($importInfos->getSourceType() === 'csv') {
                $config = $this->getConfig();
                //$configDoc = $config['wdp-admin']['document'];

                $importInfos->getName();
                $uploadPath = $config['upload-path'];

                $uploadPath = $uploadPath . DIRECTORY_SEPARATOR . $user->getId() . DIRECTORY_SEPARATOR . 'input' . DIRECTORY_SEPARATOR;


                if (\Application\Tool\TextTool::strToUrl($importInfos->getExchange()->getName()) == 'inconnu') {
                    $uploadPath = $uploadPath . 'exchange-generique' . DIRECTORY_SEPARATOR;

                } else {
                    $uploadPath = $uploadPath . \Application\Tool\TextTool::strToUrl($importInfos->getExchange()->getName()) . DIRECTORY_SEPARATOR;

                }

                $uploadPath = $uploadPath . $importInfos->getName();

                $unlinkResponse = unlink($uploadPath);
            }

//            if (is_file($uploadPath)) {
//                $rmdirResponse = rmdir($uploadPath);
//            }
            
            $mapperImport->delete($importInfos);


            $responseArray['id'] = $data['importId'];
            $responseArray['success']['messages'][] = array(
                'header' => 'Succès',
                'body' => 'Les données provenant de ' . $importInfos->getName() . ' ont été supprimées.');
            goto returnResponse;
        } else {
            //$messages = $formDelete->getMessages();
            exit;
            foreach ($messages as $message) {
                $responseArray['error']['messages'][] = array(
                    'header' => 'Formulaire non valide',
                    'body' => 'Une erreur est survenue.',
                    'footer' => '');
            }
            goto returnResponse;
        }

        returnResponse:
        $response = $this->getResponse();
        $response->getHeaders()->addHeaderLine('Content-Type', 'application/json');
        $response->setContent(json_encode($responseArray));
        return $response;
    }

    public function deleteAllAction() {

//        if ($this->zfcUserAuthentication()->hasIdentity()) {
//            $user = $this->zfcUserAuthentication()->getIdentity();
//        } else {
//            return $this->redirect()->toRoute('zfcuser', array('action' => 'login'));
//        }

        if ($user = $this->currentUser()) {
            
        } else {
            return $this->redirect()->toRoute(\Application\Controller\UserController::ROUTE_LOGIN);
        }

        //$config = $this->getServiceLocator()->get('config');
        $config = $this->getConfig();
        //$configDoc = $config['wdp-admin']['document'];
        $uploadPath = $config['upload-path'];

        $uploadPath = $uploadPath . DIRECTORY_SEPARATOR . $user->getId() . DIRECTORY_SEPARATOR . 'input' . DIRECTORY_SEPARATOR;

//var_dump($_POST); exit;
        if ($this->getRequest()->isPost()) {

            // Récupération des données du post
            $data = array_merge_recursive(
                    $this->getRequest()->getPost()->toArray()
            );

            //$newExchangeLinker = new \Application\Entity\UserExchangeLinker();

            $formDelete = new \Application\Form\ImportationForm\DeleteAllFileByExchangeForm();
            $formDelete->setInputFilter(new \Application\InputFilter\ImportationForm\DeleteAllFileByExchangeFormInputFilter());

//            $form->setHydrator(new \DoctrineModule\Stdlib\Hydrator\DoctrineObject($entityManager, false))
//                    ->setObject(new \Application\Entity\UserExchangeLinker())
//                    ->setInputFilter(new \Application\InputFilter\ExchangeLinkerInputFilter());
            //$testEntity->themes;
            //var_dump($data);
            //$data['statut'] = '1';
            //new DoctrineEntity($serviceLocator->get('Doctrine\ORM\EntityManager'))
            //$form->bind($newExchangeLinker);
            $formDelete->setData($data);
//var_dump($data);
//exit;
            $responseArray['error']['messages'] = array();
            $responseArray['success']['messages'] = array();
            if ($formDelete->isValid()) {

                $dataForm = $formDelete->getData();
                $exchangeId = (int) $dataForm['exchange'];

//var_dump($exchangeId);

//                if (empty($exchangeId)) {
//                    throw new Exception('Exchange inconnu');
//                }

                if ($exchangeId >= 0) {
                    $mapperExchange = new \Application\Mapper\ExchangeMapper($this->getEntityManager());
                    $findExchange = $mapperExchange->findById($exchangeId);
//                    var_dump($findExchange); exit;
                    if (empty($findExchange)) {
                        $responseArray['error']['messages'][] = array(
                            'header' => 'Données non reconnues',
                            'body' => 'Impossible de supprimer ces données',
                            'footer' => ''
                        );
                    }

                    $responseArray['exchange'] = \Application\Tool\TextTool::strToUrl($findExchange->getName());

                    $uploadPath = $uploadPath . \Application\Tool\TextTool::strToUrl($findExchange->getName()) . DIRECTORY_SEPARATOR;
//                    var_dump($uploadPath); exit;
                }

//                else {
//                    $uploadPath = $uploadPath . 'exchange-generique' . DIRECTORY_SEPARATOR;
//                }

                $ledgioMapper = new \Application\Mapper\LedgioMapper($this->getEntityManager());



                $listTrade = $ledgioMapper->findByExchangeAndUser($findExchange, $user);

                $importMapper = new \Application\Mapper\ImportMapper($this->getEntityManager());

                $importList = $importMapper->findByExchangeAndUser($findExchange, $user);
               // var_dump(is_dir($uploadPath)); exit;
                if (is_dir($uploadPath) || !empty($listTrade) || !empty($importList)) {
                    if (is_dir($uploadPath)) {
                        $objects = scandir($uploadPath);
                        foreach ($objects as $object) {
                            if ($object != "." && $object != "..") {
                                if (!is_dir($uploadPath . "/" . $object)) {
                                    unlink($uploadPath . "/" . $object);

                                }
                            }
                        }
                    }
                    if (is_dir($uploadPath)){
                    $rmdirResponse = rmdir($uploadPath);
                }
//                    var_dump($listTrade); exit;

                    if (!empty($listTrade) || !empty($importList)) {
                        try {

foreach($importList as $importEntity) {
//    $query3 = $this->getEntityManager()->createQuery("DELETE FROM Application\Entity\Ledgio l WHERE l.user = " . $user->getId() . ' AND l.import = IS NULL');
//    //echo "DELETE FROM ledgio l WHERE l.user = " . $user->getId() . ' AND l.import = IS NULL'; exit;
//    $query3->execute();
    $query = $this->getEntityManager()->createQuery("DELETE FROM Application\Entity\Ledgio l WHERE l.user = " . $user->getId() . ' AND l.import = ' . $importEntity->getId());



                            /* @var $query \Doctrine\ORM\Query */
                            //if ($query->execute()) {
                            $query->execute();
}

                            $query2 = $this->getEntityManager()->createQuery("DELETE FROM Application\Entity\Import l WHERE l.user = " . $user->getId() . ' AND l.exchange = ' . $findExchange->getId());
//echo "DELETE FROM Application\Entity\Import l WHERE l.user = " . $user->getId() . ' AND l.exchange = ' . $findExchange->getId(); exit;

//var_dump($query);
            /* @var $query \Doctrine\ORM\Query */
            //if ($query->execute()) {
            $query2->execute();

                            $responseArray['success']['messages'][] = array(
                                'header' => 'Succès',
                                'body' => 'Les données de trade de ' . $findExchange->getName() . ' ont été supprimées.');

                            //}
                            //var_dump($responseArray);
                            //exit;
                        } catch (Exception $e) {
                            $responseArray['error']['messages'][] = array(
                                'header' => 'Impossible de supprimer les données',
                                'body' => 'Impossible de supprimer les données, les données ont peut être déjà été supprimées, recharger la page.');
                        }
                    } else {
                        $responseArray['error']['messages'][] = array(
                            'header' => 'Impossible de supprimer les données',
                            'body' => 'Impossible de supprimer les données, les données ont peut être déjà été supprimées, recharger la page.');
                        //$responseArray['success']['exchange'] = \Application\Tool\TextTool::strToUrl($findExchange->getName());
                    }
                }
            } else {
                $messages = $formDelete->getMessages();

                foreach ($messages as $message) {
                    $responseArray['error']['messages'][] = array(
                        'header' => 'Formulaire non valide',
                        'body' => $message,
                        'footer' => '');
                }
            }
        }

        $response = $this->getResponse();
        $response->getHeaders()->addHeaderLine('Content-Type', 'application/json');
        $response->setContent(json_encode($responseArray));
        return $response;




        //exit;
    }

}


??

??