Current path: home/webdevt/cryptoimpot.fr/module/Application/src/Controller/
?? Go up: /home/webdevt/cryptoimpot.fr/module/Application/src
<?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,
// ));
}
}