fix: [command:importer] FIxed several bug preventing the save to happen
parent
a211aea267
commit
433d18c176
|
@ -190,7 +190,7 @@ class ImporterCommand extends Command
|
||||||
if (is_null($metaEntity)) {
|
if (is_null($metaEntity)) {
|
||||||
$metaEntity = $this->MetaFields->newEmptyEntity();
|
$metaEntity = $this->MetaFields->newEmptyEntity();
|
||||||
$metaEntity->field = $fieldName;
|
$metaEntity->field = $fieldName;
|
||||||
$metaEntity->scope = $table->metaFields;
|
$metaEntity->scope = $table->getBehavior('MetaFields')->getScope();
|
||||||
$metaEntity->meta_template_id = $metaTemplate->id;
|
$metaEntity->meta_template_id = $metaTemplate->id;
|
||||||
if (isset($metaTemplateFieldsMapping[$fieldName])) { // a meta field template must exists
|
if (isset($metaTemplateFieldsMapping[$fieldName])) { // a meta field template must exists
|
||||||
$metaEntity->meta_template_field_id = $metaTemplateFieldsMapping[$fieldName];
|
$metaEntity->meta_template_field_id = $metaTemplateFieldsMapping[$fieldName];
|
||||||
|
@ -248,6 +248,7 @@ class ImporterCommand extends Command
|
||||||
{
|
{
|
||||||
foreach ($entity->metaFields as $i => $metaEntity) {
|
foreach ($entity->metaFields as $i => $metaEntity) {
|
||||||
$metaEntity->parent_id = $entity->id;
|
$metaEntity->parent_id = $entity->id;
|
||||||
|
$metaEntity->setNew(true);
|
||||||
if ($metaEntity->hasErrors() || is_null($metaEntity->value)) {
|
if ($metaEntity->hasErrors() || is_null($metaEntity->value)) {
|
||||||
$this->io->error(json_encode(['entity' => $metaEntity, 'errors' => $metaEntity->getErrors()], JSON_PRETTY_PRINT));
|
$this->io->error(json_encode(['entity' => $metaEntity, 'errors' => $metaEntity->getErrors()], JSON_PRETTY_PRINT));
|
||||||
unset($entity->metaFields[$i]);
|
unset($entity->metaFields[$i]);
|
||||||
|
@ -289,35 +290,35 @@ class ImporterCommand extends Command
|
||||||
$values = array_map("self::{$fieldConfig['massage']}", $values);
|
$values = array_map("self::{$fieldConfig['massage']}", $values);
|
||||||
}
|
}
|
||||||
if (isset($defaultFields[$key])) {
|
if (isset($defaultFields[$key])) {
|
||||||
$data[$key] = $values;
|
$data[$key] = array_map('trim', $values);
|
||||||
} else {
|
} else {
|
||||||
$data['metaFields'][$key] = $values;
|
$data['metaFields'][$key] = array_map('trim', $values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $this->invertArray($data);
|
return $this->invertArray($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function extractDataFromCSV($defaultFields, $config, $source)
|
private function extractDataFromCSV($defaultFields, $config, $source)
|
||||||
|
{
|
||||||
|
$csvData = $this->csvToAssociativeArray($source);
|
||||||
|
return $this->extractDataFromJSON($defaultFields, $config, $csvData);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function csvToAssociativeArray($source): array
|
||||||
{
|
{
|
||||||
$rows = array_map('str_getcsv', explode(PHP_EOL, $source));
|
$rows = array_map('str_getcsv', explode(PHP_EOL, $source));
|
||||||
if (count($rows[0]) != count($rows[1])) {
|
if (count($rows[0]) != count($rows[1])) {
|
||||||
$this->io->error('Error while parsing source data. CSV doesn\'t have the same number of columns');
|
$this->io->error('Error while parsing source data. CSV doesn\'t have the same number of columns');
|
||||||
die(1);
|
die(1);
|
||||||
}
|
}
|
||||||
$header = array_shift($rows);
|
$csvData = [];
|
||||||
$data = array();
|
$headers = array_shift($rows);
|
||||||
foreach($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
$dataRow = [];
|
if (count($headers) == count($row)) {
|
||||||
foreach ($header as $i => $headerField) {
|
$csvData[] = array_combine($headers, $row);
|
||||||
if (isset($defaultFields[$headerField])) {
|
|
||||||
$dataRow[$headerField] = $row[$i];
|
|
||||||
} else {
|
|
||||||
$dataRow['metaFields'][$headerField] = $row[$i];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$data[] = $dataRow;
|
return $csvData;
|
||||||
}
|
|
||||||
return $data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function lockAccess(&$entity)
|
private function lockAccess(&$entity)
|
||||||
|
@ -477,6 +478,9 @@ class ImporterCommand extends Command
|
||||||
foreach ($entities as $entity) {
|
foreach ($entities as $entity) {
|
||||||
$row = [];
|
$row = [];
|
||||||
foreach ($tableHeader as $key) {
|
foreach ($tableHeader as $key) {
|
||||||
|
if (in_array($key, $entity->getVirtual())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$subKeys = explode('.', $key);
|
$subKeys = explode('.', $key);
|
||||||
if (in_array('metaFields', $subKeys)) {
|
if (in_array('metaFields', $subKeys)) {
|
||||||
$found = false;
|
$found = false;
|
||||||
|
|
Loading…
Reference in New Issue