/**
  * Permet d'imprimer un tableau associatif $sprinter_data
  * transforme le tableau en csv et l'envoi au sprinter d'ecrit dans $routing_key
  *
  * @param Application $app             Silex application
  * @param string      $letter_title    Le nom du document .docx à générer
  * @param string      $letter_template Le template .docx à générer
  * @param string      $routing_key     Le nom de la routing key
  * @param array       $sprinter_data   Le tableaux associatif contenant les informations à imprimer
  * @param array       $sprinter_opt    Le tableaux d'options optionnelles pour sprinter
  *
  * @return string routing_key
  */
 public static function sendPrint(Application $app, $letter_title, $letter_template, $routing_key, array $sprinter_data, array $sprinter_opt = [])
 {
     if (!is_array($sprinter_data) || empty($sprinter_data)) {
         throw new \Exception("Bad data provided for printing", 400);
     }
     $letter_template_b64 = base64_encode($letter_template);
     $csv = CsvUtils::arrayToCsv($sprinter_data, $sprinter_opt["csv_rows"]);
     $csv_base64 = base64_encode($csv);
     $template = ["Name" => $letter_title, "Content" => $letter_template_b64];
     $data = ["Name" => "data.csv", "Content" => $csv_base64];
     $routing_key = null === $routing_key ? $app["sprinter.options"]["default.routing_key"] : $routing_key;
     $app["sprinter"]->sendPrint($template, $data, true, $routing_key, $sprinter_opt);
     return $routing_key;
 }
 /**
  * @When /^je convertis en csv le tableau contenu dans "([^"]*)"(?: en prefixant avec "([^"]*)"?)?$/
  */
 public function jeConvertisEnCsvLeTableauContenuDans($filename, $prefix = null)
 {
     $filepath = realpath($this->requests_path . "/" . $filename);
     $array_to_convert = file_get_contents($filepath);
     $array_to_convert = json_decode($array_to_convert, true);
     if (null === $array_to_convert) {
         throw new Exception("json_decode error");
     }
     $array_to_convert = array_map(function ($line) use($prefix) {
         return CsvUtils::getTokenFromArray($line, $prefix);
     }, $array_to_convert);
     try {
         $this->result = CsvUtils::arrayToCsv($array_to_convert, $this->csv_lines);
     } catch (\Exception $exception) {
         $this->error = $exception;
     }
 }