/**
  * Export all custom form's answer in a Xlsx file (.rzt).
  *
  * @param Symfony\Component\HttpFoundation\Request $request
  *
  * @return Symfony\Component\HttpFoundation\Response
  */
 public function exportAction(Request $request, $customFormId)
 {
     $customForm = $this->getService("em")->find("RZ\\Roadiz\\Core\\Entities\\CustomForm", $customFormId);
     $answers = $customForm->getCustomFormAnswers();
     foreach ($answers as $key => $answer) {
         $array = [$answer->getIp(), $answer->getSubmittedAt()];
         foreach ($answer->getAnswers() as $obj) {
             $array[] = $obj->getValue();
         }
         $answers[$key] = $array;
     }
     $keys = ["ip", "submittedDate"];
     $fields = $customForm->getFieldsLabels();
     $keys = array_merge($keys, $fields);
     $xlsx = XlsxExporter::exportXlsx($answers, $keys);
     $response = new Response($xlsx, Response::HTTP_OK, []);
     $response->headers->set('Content-Disposition', $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $customForm->getName() . '.xlsx'));
     $response->prepare($request);
     return $response;
 }
 protected function getXlsxResults(NodeType $nodetype, array $entities = [])
 {
     $fields = $nodetype->getFields();
     $keys = [];
     $answers = [];
     $keys[] = "title";
     foreach ($fields as $field) {
         if (!$field->isVirtual()) {
             $keys[] = $field->getName();
         }
     }
     foreach ($entities as $idx => $nodesSource) {
         $array = [];
         foreach ($keys as $key) {
             $getter = 'get' . str_replace('_', '', ucwords($key));
             $tmp = $nodesSource->{$getter}();
             if (is_array($tmp)) {
                 $tmp = implode(',', $tmp);
             }
             $array[] = $tmp;
         }
         $answers[$idx] = $array;
     }
     return XlsxExporter::exportXlsx($answers, $keys);
 }