From a895986183f88393410c3963400fc7261447a367 Mon Sep 17 00:00:00 2001 From: Kayn Ty Date: Wed, 18 Apr 2018 15:19:00 +0200 Subject: [PATCH] make csv ongoing --- app/Resources/views/base.html.twig | 3 + .../views/default/login-choices.html.twig | 7 ++ app/Resources/views/logged/history.html.twig | 53 +++++++- .../Controller/DefaultController.php | 115 +++++++++++++++++- ...cipherbliss_tykayn_2018-04-18_15-14-39.csv | 1 + ...cipherbliss_tykayn_2018-04-18_15-15-16.csv | 1 + ...cipherbliss_tykayn_2018-04-18_15-15-59.csv | 7 ++ ...cipherbliss_tykayn_2018-04-18_15-16-22.csv | 22 ++++ ...cipherbliss_tykayn_2018-04-18_15-17-17.csv | 22 ++++ ...cipherbliss_tykayn_2018-04-18_15-17-38.csv | 22 ++++ ...cipherbliss_tykayn_2018-04-18_15-17-40.csv | 22 ++++ ...cipherbliss_tykayn_2018-04-18_15-18-43.csv | 1 + ...cipherbliss_tykayn_2018-04-18_15-18-44.csv | 1 + 13 files changed, 268 insertions(+), 9 deletions(-) create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-14-39.csv create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-15-16.csv create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-15-59.csv create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-16-22.csv create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-17.csv create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-38.csv create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-40.csv create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-18-43.csv create mode 100644 web/export_caisse-cipherbliss_tykayn_2018-04-18_15-18-44.csv diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig index 28ec5bab..c1c8cef1 100755 --- a/app/Resources/views/base.html.twig +++ b/app/Resources/views/base.html.twig @@ -17,6 +17,9 @@ {% block navigation %} {% endblock %}
+
+ {% include 'default/header.html.twig' %} +
{% block body %} {% endblock %}
diff --git a/app/Resources/views/default/login-choices.html.twig b/app/Resources/views/default/login-choices.html.twig index 5256e3c0..31969c21 100755 --- a/app/Resources/views/default/login-choices.html.twig +++ b/app/Resources/views/default/login-choices.html.twig @@ -38,6 +38,13 @@ Festivals +
  • + + + Historique + +
  • diff --git a/app/Resources/views/logged/history.html.twig b/app/Resources/views/logged/history.html.twig index 476dd29c..8e49bf61 100644 --- a/app/Resources/views/logged/history.html.twig +++ b/app/Resources/views/logged/history.html.twig @@ -1,6 +1,47 @@ -
    - - Exporter vos données - - -
    +{% extends 'base.html.twig' %} +{% trans_default_domain 'FOSUserBundle' %} +{% block body %} +
    +
    + +
    +

    Historique

    +
    +
    +
    +
    +

    +
    + {{ recentSells |length }} +
    + Clients +

    +

    + Chiffre d'affaires +
    + {{ chiffreAffaires }} € +
    +

    +

    + panier moyen +
    + {{ chiffreAffaires / (recentSells |length) }} € +
    +

    +
    + +
    +
    +
    + +
    + + +
    +
    +{% endblock %} diff --git a/src/AppBundle/Controller/DefaultController.php b/src/AppBundle/Controller/DefaultController.php index 758e9ef6..4447d733 100755 --- a/src/AppBundle/Controller/DefaultController.php +++ b/src/AppBundle/Controller/DefaultController.php @@ -9,6 +9,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; class DefaultController extends Controller { @@ -52,7 +53,6 @@ class DefaultController extends Controller { $categories = $categRepo->findAll(); $recentSells = $sellingRepo->findBy( [], [ 'id' => 'desc' ], 0, 5 ); - // replace this example code with whatever you need return $this->render( 'logged/dashboard.html.twig', [ 'lastFestival' => $lastFestival, @@ -199,7 +199,6 @@ class DefaultController extends Controller { $newSellRecord->setDate( new \DateTime() ); $newSellRecord->setUser( $currentUser ); $newSellRecord->setPaidByClient( $json[ 'paidByClient' ] ); -// $newSellRecord->setUser( $currentUser ); $newSellRecord->setComment( $json[ 'sellingComment' ] ); $currentUser->addSellRecords( $newSellRecord ); @@ -214,11 +213,121 @@ class DefaultController extends Controller { $sellingRepo = $m->getRepository( 'AppBundle:SellRecord' ); $lastSellings = $sellingRepo->findBy( [ 'user' => $currentUser->getId() ], [ 'id' => 'desc' ], 0, 3 ); -// return var_dump( $request->getContent() ); return new JsonResponse( [ "message" => "ok", "recent_sellings" => json_encode( $lastSellings ), "dump" => $json, ], 200 ); } + + + /** + * get the history of user's sellings + * @Route("/history", name="history") + */ + public function historyAction() { + $currentUser = $this->getUser(); + $m = $this->getDoctrine()->getManager(); + $sellingRepo = $m->getRepository( 'AppBundle:SellRecord' ); + $mySellings = $sellingRepo->findByUser( $currentUser->getId() ); + $chiffreAffaires = 0; + foreach ( $mySellings as $client ) { + foreach ( $client->getProductsSold() as $product ) { + $chiffreAffaires += $product->getPrice(); + } + } + + return $this->render( 'logged/history.html.twig', + [ + 'chiffreAffaires' => $chiffreAffaires, + 'recentSells' => $mySellings, + 'base_dir' => realpath( $this->getParameter( 'kernel.project_dir' ) ) . DIRECTORY_SEPARATOR, + ] ); + } + + /** + * export all clients + * @Route("/export-all", name="export_all") + */ + public function exportAllAction() { + // TODO + $currentUser = $this->getUser(); + $m = $this->getDoctrine()->getManager(); + $sellingRepo = $m->getRepository( 'AppBundle:SellRecord' ); + $mySellings = $sellingRepo->findByUser( $currentUser->getId() ); + + $fileName = "export_caisse-cipherbliss_" . $currentUser->getUsername() . '_' . date( 'Y-m-d_H-i-s' ); + $file = fopen( $fileName . '.csv', 'w' ); + +// save the column headers + fputcsv( $file, + [ + 'product sold id', + 'date', + 'hour', + 'min', + 'sec', + 'client comment', + 'client paid', + 'product name', + 'product image', + 'product category id', + 'product category name', + 'product price', + 'festival id', + 'festival name', + 'festival creation date', + 'caisse before', + 'caisse after', + 'festival ca', + 'festival comment', + ] ); + + + $response = new StreamedResponse(); + $response->setCallback( function () { + + $chiffreAffaires = 0; + foreach ( $mySellings as $sellRecord ) { + foreach ( $sellRecord->getProductsSold() as $productSold ) { + $chiffreAffaires += $productSold->getPrice(); + // add a line to the csv file + fputcsv( $file, + [ + $productSold->getId(), + $sellRecord->getDate()->format( 'c' ), + $sellRecord->getDate()->format( 'H' ), + $sellRecord->getDate()->format( 'i' ), + $sellRecord->getDate()->format( 's' ), + $sellRecord->getComment(), + $sellRecord->getPaidByClient(), + $productSold->getName(), + $productSold->getImage(), + $productSold->getProduct()->getCategory()->getId(), + $productSold->getProduct()->getCategory()->getName(), + $productSold->getPrice(), + ] ); + if ( $sellRecord->getFestival() ) { + fputcsv( $file, + [ + $sellRecord->getFestival()->getId(), + $sellRecord->getFestival()->getName(), + $sellRecord->getFestival()->getDateCreation()->format( 'c' ), + $sellRecord->getFestival()->getFondDeCaisseAvant(), + $sellRecord->getFestival()->getFondDeCaisseApres(), + $sellRecord->getFestival()->getChiffreAffaire(), + $sellRecord->getFestival()->getComment(), + ] ); + } + + } + } + fclose( $file ); + } ); + $response->setStatusCode( 200 ); + $response->headers->set( 'Content-Type', 'text/csv; charset=utf-8' ); + $response->headers->set( 'Content-Disposition', 'attachment; filename="' . $fileName . '"' ); + + return $response; + } } diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-14-39.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-14-39.csv new file mode 100644 index 00000000..48be6026 --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-14-39.csv @@ -0,0 +1 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment" diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-15-16.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-15-16.csv new file mode 100644 index 00000000..48be6026 --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-15-16.csv @@ -0,0 +1 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment" diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-15-59.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-15-59.csv new file mode 100644 index 00000000..032acdab --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-15-59.csv @@ -0,0 +1,7 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment" +5,2018-04-17T14:33:51+02:00,14,33,51,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +6,2018-04-17T14:36:15+02:00,14,36,15,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +7,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +8,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +9,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +10,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-16-22.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-16-22.csv new file mode 100644 index 00000000..1b10e523 --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-16-22.csv @@ -0,0 +1,22 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment" +5,2018-04-17T14:33:51+02:00,14,33,51,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +6,2018-04-17T14:36:15+02:00,14,36,15,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +7,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +8,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +9,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +10,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +11,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +12,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +13,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +14,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +15,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +16,2018-04-18T15:14:32+02:00,15,14,32,,0.00,bbbb,"image mock",2,badges,10.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +17,2018-04-18T15:14:32+02:00,15,14,32,,0.00,bbbb,"image mock",2,badges,10.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-17.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-17.csv new file mode 100644 index 00000000..1b10e523 --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-17.csv @@ -0,0 +1,22 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment" +5,2018-04-17T14:33:51+02:00,14,33,51,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +6,2018-04-17T14:36:15+02:00,14,36,15,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +7,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +8,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +9,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +10,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +11,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +12,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +13,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +14,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +15,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +16,2018-04-18T15:14:32+02:00,15,14,32,,0.00,bbbb,"image mock",2,badges,10.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +17,2018-04-18T15:14:32+02:00,15,14,32,,0.00,bbbb,"image mock",2,badges,10.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-38.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-38.csv new file mode 100644 index 00000000..1b10e523 --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-38.csv @@ -0,0 +1,22 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment" +5,2018-04-17T14:33:51+02:00,14,33,51,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +6,2018-04-17T14:36:15+02:00,14,36,15,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +7,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +8,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +9,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +10,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +11,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +12,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +13,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +14,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +15,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +16,2018-04-18T15:14:32+02:00,15,14,32,,0.00,bbbb,"image mock",2,badges,10.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +17,2018-04-18T15:14:32+02:00,15,14,32,,0.00,bbbb,"image mock",2,badges,10.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-40.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-40.csv new file mode 100644 index 00000000..1b10e523 --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-17-40.csv @@ -0,0 +1,22 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment" +5,2018-04-17T14:33:51+02:00,14,33,51,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +6,2018-04-17T14:36:15+02:00,14,36,15,sellingComment,20.00,aaaaaa,"image mock",1,fanzine,1.00 +7,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +8,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +9,2018-04-17T15:07:53+02:00,15,07,53,,0.00,aaaaaa,"image mock",1,fanzine,3.00 +10,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +11,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +12,2018-04-18T15:14:32+02:00,15,14,32,,0.00,"un truc","image mock",1,fanzine,2.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +13,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +14,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +15,2018-04-18T15:14:32+02:00,15,14,32,,0.00,aaaaaa,"image mock",1,fanzine,1.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +16,2018-04-18T15:14:32+02:00,15,14,32,,0.00,bbbb,"image mock",2,badges,10.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, +17,2018-04-18T15:14:32+02:00,15,14,32,,0.00,bbbb,"image mock",2,badges,10.00 +4,"japan expo",2018-04-17T15:37:15+02:00,0,0,0, diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-18-43.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-18-43.csv new file mode 100644 index 00000000..48be6026 --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-18-43.csv @@ -0,0 +1 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment" diff --git a/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-18-44.csv b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-18-44.csv new file mode 100644 index 00000000..48be6026 --- /dev/null +++ b/web/export_caisse-cipherbliss_tykayn_2018-04-18_15-18-44.csv @@ -0,0 +1 @@ +"product sold id",date,hour,min,sec,"client comment","client paid","product name","product image","product category id","product category name","product price","festival id","festival name","festival creation date","caisse before","caisse after","festival ca","festival comment"