Unverified Commit 885b0fdf authored by Sebastian Castro's avatar Sebastian Castro
Browse files

Element import: prevent import if mapping is not filled

prevent auto match if latitude and longitude is empty
parent 02dc33b9
......@@ -15,7 +15,9 @@ class ImportAdminController extends Controller
$result = $this->get('biopen.element_import')->collectData($object);
$showUrl = $this->admin->generateUrl('showData', ['id' => $object->getId()]);
if (count($result) > 0)
if (!in_array("name",array_values($object->getOntologyMapping())))
$this->addFlash('sonata_flash_error', "Avant de lire les données, vous devez d'abords remplir le tableau de correspondance des champs. Renseignez au moins le Titre de la fiche");
else if (count($result) > 0)
$this->addFlash('sonata_flash_success', "Les données ont été chargées avec succès.</br>Voici le résultat obtenu pour le premier élément à importer :<pre>" . print_r($result[0], true) . '</pre>' . "<a href='$showUrl'>Voir toutes les données</a>");
else
$this->addFlash('sonata_flash_error', "Erreur pendant le chargement des données, le résultat est vide");
......@@ -41,6 +43,12 @@ class ImportAdminController extends Controller
{
$object = $this->admin->getSubject();
if (!in_array("name",array_values($object->getOntologyMapping()))) {
$this->addFlash('sonata_flash_error', "Avant d'importer les données, vous devez d'abords remplir le tableau de correspondance des champs. Renseignez au moins le Titre de la fiche");
$url = $this->admin->generateUrl('edit', ['id' => $object->getId()]);
return $this->redirect($url);
}
$object->setCurrState(ImportState::Started);
$object->setCurrMessage("En attente...");
$em = $this->get('doctrine_mongodb')->getManager();
......
......@@ -56,9 +56,11 @@ class ElementImportOneService
// adds missings fields instead of checking if each field is set before accessing
$missingFields = array_diff($this->coreFields, array_keys($row));
foreach ($missingFields as $missingField) {
$row[$missingField] = "";
$row[$missingField] = ($missingField == 'categories') ? [] : "";
}
$element = null;
if ($row['id'])
{
if (in_array($row['id'], $import->getIdsToIgnore())) return;
......@@ -66,7 +68,7 @@ class ElementImportOneService
$qb->field('source')->references($import);
$qb->field('oldId')->equals("" . $row['id']);
$element = $qb->getQuery()->getSingleResult();
} else {
} else if (strlen($row['name']) > 0 && strlen($row['latitude']) > 0 && strlen($row['longitude']) > 0) {
$qb = $this->em->createQueryBuilder('BiopenGeoDirectoryBundle:Element');
$qb->field('source')->references($import);
$qb->field('name')->equals($row['name']);
......@@ -75,7 +77,7 @@ class ElementImportOneService
$element = $qb->getQuery()->getSingleResult();
}
if ($element) // if element with this Id already exists
if ($element) // if the element already exists, we update it
{
$updatedAtField = $import->getFieldToCheckElementHaveBeenUpdated();
// if updated date hasn't change, nothing to do
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment