?? GreyFile — Mystic File Browser

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



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

?? Viewing: DeclarationCompteEtrangerController.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;

class DeclarationCompteEtrangerController extends AbstractActionController {

    /*
     * Nom exchange
     * Adresse postale de l'exchange
     * numéro de compte ???
     * radio à cocher Compte utiliser à titre personnel Compte utiliser à titre professionel Compte utiliser à titre personnel et professionnel
     * 
     * Le compte a t il été ouvert en 2019 oui ou non radio
     * si non => fin
     * si oui date d'ouverture en 2019 bloquer date en 2019
     * 
     * Le compte a t il été fermé en 2019 ? oui ou non radio
     * si non => fin
     * si oui date de fermeture en 2019 bloquer date en 2019
     * 
     * 
     * 
     * Le compte est ouvert au nom d'un particulier ou d'une société (radio)
     * 
     * 
     * Si Particulier :
     * 
     * votre nom 
     * vos prénoms
     * votre date de naissance
     * votre lieu de naissance
     * adresse
     * 
     * 
     * Utilisez-vous ce compte notamment pour le compte de quelqu'un d'autre ? oui ou non
     * non => rien
     * oui => ouvre champ :
     * 
     * Si agit pour le compte d'une société ou d'un particulier ou les deux ou plus
     * 
     * nom entreprise ou société
     * adresse
     * numéro siret
     * 
     * nom personne pour laquelle vous agissez
     * prenom personne
     * date naissance
     * lieu de naissance
     * adresse
     * 
    
     * 
     *
     * 
     * 
     * 
     * 
     * si le compte appartient à une société :
     * raison sociale
     * forme juridique (sas, sarl, ...)
     * numéro siret
     * adresse
     * 
     * idem que l'autre : Utilisez-vous ce compte notamment pour le compte de quelqu'un d'autre ? oui ou non ...
     * 
     * 
     */
    
    
    const ROUTE_APERCU = 'rapport/apercu';
    const ROUTE_DOWNLOAD = 'rapport/download';
    const ROUTE_GENERATE = 'rapport/generate';

    /**
     * @var \TCPDF
     */
    protected $tcpdf;

    /**
     * @var RendererInterface
     */
    protected $renderer;

    /**
     * @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;
//    }

    /**
     * Constructor.
     */
    public function __construct($entityManager, $authManager, $userManager, $config, $tcpdfRapport, $tcpdfBrouillon, $renderer) {

        $this->entityManager = $entityManager;
        $this->authManager = $authManager;
        $this->userManager = $userManager;
        $this->config = $config;
        $this->tcpdf = $tcpdfRapport;
        $this->tcpdfBrouillon = $tcpdfBrouillon;
        $this->renderer = $renderer;
    }

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

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

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

    public function rapportAction() {

//        if ($this->zfcUserAuthentication()->hasIdentity()) {
//            $user = $this->zfcUserAuthentication()->getIdentity();
//            //var_dump($user);
//        } else {
//            return $this->redirect()->toRoute('zfcuser', array('action' => 'login'));
//        }
        if ($user = $this->currentUser()) {
            
        } else {
            return $this->redirect()->toRoute(\Application\Controller\UserController::ROUTE_LOGIN);
        }

        //$mapperUserExchangeLinker = new \Application\Mapper\UserExchangeLinkerMapper($this->getEntityManager());
        // calcul plus value
        $ledgioService = new \Application\Service\LedgioService($user, $this->getEntityManager(), $this->config);

        $ledgioService->report();




//        $exchange = $mapperUserExchangeLinker->findByUser($user);
//        $arrayExhanges = array();
//        //var_dump($exchange->getExchangesId());
//        if (!empty($exchange && $exchange->getExchangesId())) {
//            $arrayIdExhanges = explode(',', $exchange->getExchangesId());
//            $mapperExchange = new \Application\Mapper\ExchangeMapper($this->getEntityManager());
//
//            foreach ($arrayIdExhanges as $id) {
//                $arrayExhanges[] = $mapperExchange->findById($id);
//            }
//        }





        $this->layout('layout/layout-ledgio');

        $view = new ViewModel(
                ['array' => $ledgioService->getArrayRapportAnnexePrincipale()
        ]);
//$view->setTemplate('rapport-pdf');


        $renderer = $this->renderer;
        $view->setTemplate('layout/rapport');
        $html = $renderer->render($view);

        $pdf = $this->tcpdf;



        //$pdf->SetFont('arialnarrow', '', 12, '', false);
        $pdf->AddPage();
        $pdf->writeHTML($html, true, false, true, false, '');

        //$pdf->Output();

        $pdf->Output('kuitti' . $ordernumber . '.pdf', 'F');



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

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

        $entityManager = $this->getEntityManager();
        /* @var $entityManager \Doctrine\ORM\EntityManager */
        $ledgioMapper = new \Application\Mapper\LedgioMapper($entityManager);

        $countTrade = $ledgioMapper->countTradeByUser($user);
        
        
        $countInvestFiatByUserAndYear = $ledgioMapper->countInvestFiatByUserAndYear($user, '2017');
        $countSessionFiatByUserAndYear = $ledgioMapper->countSessionFiatByUserAndYear($user, '2017');
        //$countTradeOut = $ledgioMapper->countTradeOutByUser($user);

        //var_dump($countTrade); exit;

        return new ViewModel(array(
            //'arrayExhanges' => $arrayExhanges,
            'countInvestFiatByUserAndYear' => $countInvestFiatByUserAndYear,
            'countSessionFiatByUserAndYear' => $countSessionFiatByUserAndYear,
            'countTrade' => $countTrade,
        ));
    }

    public function generateAction() {
        if ($user = $this->currentUser()) {
            
        } else {
            return $this->redirect()->toRoute(\Application\Controller\UserController::ROUTE_LOGIN);
        }
        //$mapperUserExchangeLinker = new \Application\Mapper\UserExchangeLinkerMapper($this->getEntityManager());

        $entityManager = $this->getEntityManager();
        /* @var $entityManager \Doctrine\ORM\EntityManager */
        $reportMapper = new \Application\Mapper\ReportMapper($entityManager);
        $year = $this->params()->fromRoute('year', null);

//      

        $reportFind = $reportMapper->findByYearAndUser($year, $user);

        //var_dump($reportFind); exit;


        if (!$reportFind || $reportFind->isNotValidated()) {
            goto generate;
        } else {
            echo 'second exit'; exit;
            goto display;
        }

        generate:
        // calcul plus value
        $ledgioService = new \Application\Service\LedgioService($user, $this->getEntityManager(), $this->config);

        $ledgioService->report();




        //$exchange = $mapperUserExchangeLinker->findByUser($user);
        //$arrayExhanges = $user->getExchanges();
        //var_dump($exchange->getExchangesId());
//        if (!empty($exchange && $exchange->getExchangesId())) {
//            $arrayIdExhanges = explode(',', $exchange->getExchangesId());
//            $mapperExchange = new \Application\Mapper\ExchangeMapper($this->getEntityManager());
//
//            foreach ($arrayIdExhanges as $id) {
//                $arrayExhanges[] = $mapperExchange->findById($id);
//            }
//        }
        // @todo if is already paied lock file génération return echo true;

        $filePath = $ledgioService->outputDir . 'rapport-' . $year . '.pdf';
        $filePathBrouillon = $ledgioService->outputDir . 'brouillon-2019' . '.pdf';

        @unlink($filePathBrouillon);
        @unlink($filePath);
        if (empty($ledgioService->getBrouillonArrayRapportAnnexePrincipale())) {
            echo 'false'; exit;
        }

        $this->layout('layout/layout-ledgio');

        $view = new ViewModel(
                ['lignesRapport' => $ledgioService->getArrayRapportAnnexePrincipale()
        ]);

        $viewBrouillon = new ViewModel(
                ['lignesRapport' => $ledgioService->getBrouillonArrayRapportAnnexePrincipale()
        ]);
//$view->setTemplate('rapport-pdf');


        $renderer = $this->renderer;
        $view->setTemplate('layout/rapport');
        $viewBrouillon->setTemplate('layout/brouillon-rapport');

        $html = $renderer->render($view);
        $htmlBrouillon = $renderer->render($viewBrouillon);

        $pdf = $this->tcpdf;
        $pdf->titlePDFCustom = 'Rapport Fiscal ' . $year;
        $pdfBrouillon = $this->tcpdfBrouillon;
        $pdfBrouillon->titlePDFCustom = '!!!! Apercu Rapport Fiscal ' . $year;



//echo 'toto';


        // set document information
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('Ledgio');
        $pdf->SetTitle('Rapport Fiscal' . $year);
        $pdf->SetSubject('Calcul des plus values');
//$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
        //$pdf->SetFont('arialnarrow', '', 12, '', false);
        $pdf->AddPage();
        $pdf->SetFont('Helvetica', '', 8, '', 'false');

        $pdfBrouillon->AddPage();
        $pdfBrouillon->SetFont('Helvetica', '', 8, '', 'false');




        // get the current page break margin
        $bMargin = $pdf->getBreakMargin();
        // get current auto-page-break mode
        $auto_page_break = $pdf->getAutoPageBreak();
        // disable auto-page-break
        $pdf->SetAutoPageBreak(false, 0);

        //$image_file = $this->config['path-app'] . '/public/img/pdf/filigrane-brouillon.png';
        //$pdfBrouillon->Image($image_file, 0, 0, $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = 2, $dpi = 300, $palign = 'C', $ismask = false, $imgmask = false, $border = 0, $fitbox = 'CM', $hidden = false, $fitonpage = true, $alt = false, $altimgs = array());
        // set bacground image
        // restore auto-page-break status
        $pdf->SetAutoPageBreak($auto_page_break, $bMargin);
// set the starting point for the page content
        $pdf->setPageMark();

        $pdf->writeHTML($html, true, false, true, false, '');
        $pdfBrouillon->writeHTML($htmlBrouillon, true, false, true, false, '');







        //$pdf->Output();
        $config = $this->getConfig();
//touch('./data/io/data/io/rapport-2019.pdf');
        $pdf->Output($filePath, 'F');
        $pdfBrouillon->Output($filePathBrouillon, 'F');

        if (is_file($filePath)) {
            if ($reportFind) {
                $reportFind->setPath($filePath);
                $reportFind->setPathBrouillon($filePathBrouillon);
                $reportFind->setCreatedDate(new \DateTime());

                $reportMapper->update($reportFind);
            } else {
                $report = new \Application\Entity\Report();
                $report->setStatus(0);
                $report->setYear($year);
                $report->setUser($user);
                $report->setPath($filePath);
                $report->setPathBrouillon($filePathBrouillon);
                $report->setCreatedDate(new \DateTime());



                $reportMapper->insert($report);
            }

            echo 'true'; exit;
        } else {
            echo 'false'; exit;
        }

        display:
        if (is_file($reportFind->getPath())) {
            echo 'true'; exit;
        } else {
            echo 'false'; exit;
        }
    }

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


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




        return new ViewModel(array(
            'year' => $year
        ));
    }

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

        //$token = $this->params()->fromRoute('token', null);
        $year = $this->params()->fromRoute('year', null);
        $mode = $this->params()->fromRoute('mode', null);



//        if (empty($token)) {
//            $this->flashMessenger()->addErrorMessage('Aucun rapport n\'est disponible');
//                    $this->redirect()->toRoute(self::ROUTE_DOWNLOAD);
//        }

        if (empty($year)) {
            $this->flashMessenger()->addErrorMessage('Aucun rapport n\'est disponible');
            $this->redirect()->toRoute(self::ROUTE_DOWNLOAD);
        }


        /*
         * 
         */

        $entityManager = $this->getEntityManager();
        /* @var $entityManager \Doctrine\ORM\EntityManager */
        $reportMapper = new \Application\Mapper\ReportMapper($entityManager);

        $reportFind = $reportMapper->findByYearAndUser($year, $user);
        if ($mode != 'brouillon' && $reportFind->isNotValidated()) {
//            echo 'not validate';
//            exit;
        }

        if ($mode == 'brouillon') {
            $filePath = $reportFind->getPathBrouillon();
        } else {
            $filePath = $reportFind->getPath();
        }
        $explodeFilePath = explode('/', $filePath);
        $fileName = end($explodeFilePath);

        if (!is_readable($filePath)) {
            // Set 404 Not Found status code
            $this->getResponse()->setStatusCode(404);
            return;
        }

        // Get file size in bytes
        $fileSize = filesize($filePath);

        // Write HTTP headers
        $response = $this->getResponse();
        $headers = $response->getHeaders();




        if ($mode == 'brouillon') {
            $headers->addHeaderLine("Content-Disposition: inline; filename=\"" . $fileName . ".pdf");
            $headers->addHeaderLine("Content-type: application/pdf");
        } else {
            $headers->addHeaderLine(
                    "Content-type: application/octet-stream");
            $headers->addHeaderLine(
                    "Content-Disposition: attachment; filename=\"" .
                    $fileName . "\"");
            $headers->addHeaderLine("Content-length: $fileSize");
            $headers->addHeaderLine("Cache-control: private");
        }

        // Write file content        
        $fileContent = file_get_contents($filePath);
        if ($fileContent != false) {
            $response->setContent($fileContent);
        } else {
            // Set 500 Server Error status code
            $this->getResponse()->setStatusCode(500);
            return;
        }

        // Return Response to avoid default view rendering
        return $this->getResponse();

//        var_dump($reportFind);
//        exit;
//        $countTrade = $ledgioMapper->countTradeByIdUser($user->getId());
//        $countTradeIn = $ledgioMapper->countTradeInByIdUser($user->getId());
//        $countTradeOut = $ledgioMapper->countTradeOutByIdUser($user->getId());
        //var_dump($countTrade); exit;
//        return new ViewModel(array(
//            //'arrayExhanges' => $arrayExhanges,
//            'countTrade' => $countTrade,
//            'countTradeIn' => $countTradeIn,
//            'countTradeOut' => $countTradeOut,
//        ));
    }

}


??

??