fix: [internal] Capturing org

pull/8416/head
Jakub Onderka 2022-05-29 16:53:05 +02:00
parent 5c4a126aaa
commit b5b26455f0
1 changed files with 21 additions and 23 deletions

View File

@ -107,32 +107,33 @@ class Organisation extends AppModel
public function beforeValidate($options = array())
{
parent::beforeValidate();
if (empty($this->data['Organisation']['uuid'])) {
$this->data['Organisation']['uuid'] = CakeText::uuid();
$org = &$this->data[$this->alias];
if (empty($org['uuid'])) {
$org['uuid'] = CakeText::uuid();
} else {
$this->data['Organisation']['uuid'] = strtolower(trim($this->data['Organisation']['uuid']));
$org['uuid'] = strtolower(trim($org['uuid']));
}
$date = date('Y-m-d H:i:s');
if (array_key_exists('restricted_to_domain', $this->data['Organisation'])) {
if (!is_array($this->data['Organisation']['restricted_to_domain'])) {
$this->data['Organisation']['restricted_to_domain'] = str_replace("\r", '', $this->data['Organisation']['restricted_to_domain']);
$this->data['Organisation']['restricted_to_domain'] = explode("\n", $this->data['Organisation']['restricted_to_domain']);
if (array_key_exists('restricted_to_domain', $org)) {
if (!is_array($org['restricted_to_domain'])) {
$org['restricted_to_domain'] = str_replace("\r", '', $org['restricted_to_domain']);
$org['restricted_to_domain'] = explode("\n", $org['restricted_to_domain']);
}
$this->data['Organisation']['restricted_to_domain'] = array_values(
$org['restricted_to_domain'] = array_values(
array_filter(
array_map('trim', $this->data['Organisation']['restricted_to_domain'])
array_map('trim', $org['restricted_to_domain'])
)
);
$this->data['Organisation']['restricted_to_domain'] = json_encode($this->data['Organisation']['restricted_to_domain']);
$org['restricted_to_domain'] = json_encode($org['restricted_to_domain']);
}
if (!isset($this->data['Organisation']['id'])) {
$this->data['Organisation']['date_created'] = $date;
if (!isset($org['id'])) {
$org['date_created'] = $date;
}
$this->data['Organisation']['date_modified'] = $date;
if (!isset($this->data['Organisation']['nationality']) || empty($this->data['Organisation']['nationality'])) {
$this->data['Organisation']['nationality'] = '';
$org['date_modified'] = $date;
if (empty($org['nationality'])) {
$org['nationality'] = '';
}
return true;
}
@ -206,13 +207,10 @@ class Organisation extends AppModel
'fields' => $fieldsToFetch,
));
if (empty($existingOrg)) {
$date = date('Y-m-d H:i:s');
$organisation = array(
'name' => $name,
'local' => 0,
'created_by' => $user['id'],
'date_modified' => $date,
'date_created' => $date
);
// If we have the UUID set, then we have only made sure that the org doesn't exist by UUID
// We want to create a new organisation for pushed data, even if the same org name exists
@ -229,17 +227,17 @@ class Organisation extends AppModel
return $this->id;
} else {
$changed = false;
if (isset($org['uuid']) && empty($existingOrg['Organisation']['uuid'])) {
$existingOrg['Organisation']['uuid'] = $org['uuid'];
if (isset($org['uuid']) && empty($existingOrg[$this->alias]['uuid'])) {
$existingOrg[$this->alias]['uuid'] = $org['uuid'];
$changed = true;
}
if ($force) {
$fields = array('type', 'date_created', 'date_modified', 'nationality', 'sector', 'contacts');
foreach ($fields as $field) {
if (isset($org[$field])) {
if ($existingOrg['Organisation'][$field] != $org[$field]) {
$existingOrg['Organisation'][$field] = $org[$field];
if ($field != 'date_modified') {
if ($existingOrg[$this->alias][$field] != $org[$field]) {
$existingOrg[$this->alias][$field] = $org[$field];
if ($field !== 'date_modified') {
$changed = true;
}
}