Define get/set methods for related model resources (provider, secretary, admin users)

This commit is contained in:
Alex Tselegidis 2024-05-11 17:03:54 +02:00
parent ea276bd649
commit 1fbe17aade
3 changed files with 125 additions and 141 deletions

View file

@ -211,10 +211,7 @@ class Admins_model extends EA_Model
foreach ($admins as &$admin) { foreach ($admins as &$admin) {
$this->cast($admin); $this->cast($admin);
$admin['settings'] = $this->get_settings($admin['id']);
$admin['settings'] = $this->db->get_where('user_settings', ['id_users' => $admin['id']])->row_array();
unset($admin['settings']['id_users'], $admin['settings']['password'], $admin['settings']['salt']);
} }
return $admins; return $admins;
@ -264,7 +261,7 @@ class Admins_model extends EA_Model
$settings['salt'] = generate_salt(); $settings['salt'] = generate_salt();
$settings['password'] = hash_password($settings['salt'], $settings['password']); $settings['password'] = hash_password($settings['salt'], $settings['password']);
$this->save_settings($admin['id'], $settings); $this->set_settings($admin['id'], $settings);
return $admin['id']; return $admin['id'];
} }
@ -277,7 +274,7 @@ class Admins_model extends EA_Model
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
protected function save_settings(int $admin_id, array $settings): void public function set_settings(int $admin_id, array $settings): void
{ {
if (empty($settings)) { if (empty($settings)) {
throw new InvalidArgumentException('The settings argument cannot be empty.'); throw new InvalidArgumentException('The settings argument cannot be empty.');
@ -295,6 +292,22 @@ class Admins_model extends EA_Model
} }
} }
/**
* Get the admin settings.
*
* @param int $admin_id Admin ID.
*
* @throws InvalidArgumentException
*/
public function get_settings(int $admin_id): array
{
$settings = $this->db->get_where('user_settings', ['id_users' => $admin_id])->row_array();
unset($settings['id_users'], $settings['password'], $settings['salt']);
return $settings;
}
/** /**
* Set the value of an admin setting. * Set the value of an admin setting.
* *
@ -347,7 +360,7 @@ class Admins_model extends EA_Model
throw new RuntimeException('Could not update admin.'); throw new RuntimeException('Could not update admin.');
} }
$this->save_settings($admin['id'], $settings); $this->set_settings($admin['id'], $settings);
return $admin['id']; return $admin['id'];
} }
@ -390,10 +403,7 @@ class Admins_model extends EA_Model
} }
$this->cast($admin); $this->cast($admin);
$admin['settings'] = $this->get_settings($admin['id']);
$admin['settings'] = $this->db->get_where('user_settings', ['id_users' => $admin_id])->row_array();
unset($admin['settings']['id_users'], $admin['settings']['password'], $admin['settings']['salt']);
return $admin; return $admin;
} }
@ -507,10 +517,7 @@ class Admins_model extends EA_Model
foreach ($admins as &$admin) { foreach ($admins as &$admin) {
$this->cast($admin); $this->cast($admin);
$admin['settings'] = $this->get_settings($admin['id']);
$admin['settings'] = $this->db->get_where('user_settings', ['id_users' => $admin['id']])->row_array();
unset($admin['settings']['id_users'], $admin['settings']['password'], $admin['settings']['salt']);
} }
return $admins; return $admins;

View file

@ -225,20 +225,8 @@ class Providers_model extends EA_Model
foreach ($providers as &$provider) { foreach ($providers as &$provider) {
$this->cast($provider); $this->cast($provider);
$provider['settings'] = $this->get_settings($provider['id']);
$provider['settings'] = $this->db->get_where('user_settings', ['id_users' => $provider['id']])->row_array(); $provider['services'] = $this->get_service_ids($provider['id']);
unset($provider['settings']['id_users'], $provider['settings']['password'], $provider['settings']['salt']);
$provider['services'] = [];
$service_provider_connections = $this->db
->get_where('services_providers', ['id_users' => $provider['id']])
->result_array();
foreach ($service_provider_connections as $service_provider_connection) {
$provider['services'][] = (int) $service_provider_connection['id_services'];
}
} }
return $providers; return $providers;
@ -289,8 +277,8 @@ class Providers_model extends EA_Model
$settings['salt'] = generate_salt(); $settings['salt'] = generate_salt();
$settings['password'] = hash_password($settings['salt'], $settings['password']); $settings['password'] = hash_password($settings['salt'], $settings['password']);
$this->save_settings($provider['id'], $settings); $this->set_settings($provider['id'], $settings);
$this->save_service_ids($provider['id'], $service_ids); $this->set_service_ids($provider['id'], $service_ids);
return $provider['id']; return $provider['id'];
} }
@ -303,7 +291,7 @@ class Providers_model extends EA_Model
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
protected function save_settings(int $provider_id, array $settings): void public function set_settings(int $provider_id, array $settings): void
{ {
if (empty($settings)) { if (empty($settings)) {
throw new InvalidArgumentException('The settings argument cannot be empty.'); throw new InvalidArgumentException('The settings argument cannot be empty.');
@ -334,6 +322,22 @@ class Providers_model extends EA_Model
} }
} }
/**
* Get the provider settings.
*
* @param int $provider_id Provider ID.
*
* @throws InvalidArgumentException
*/
public function get_settings(int $provider_id): array
{
$settings = $this->db->get_where('user_settings', ['id_users' => $provider_id])->row_array();
unset($settings['id_users'], $settings['password'], $settings['salt']);
return $settings;
}
/** /**
* Set the value of a provider setting. * Set the value of a provider setting.
* *
@ -385,8 +389,8 @@ class Providers_model extends EA_Model
throw new RuntimeException('Could not update provider.'); throw new RuntimeException('Could not update provider.');
} }
$this->save_settings($provider['id'], $settings); $this->set_settings($provider['id'], $settings);
$this->save_service_ids($provider['id'], $service_ids); $this->set_service_ids($provider['id'], $service_ids);
return $provider['id']; return $provider['id'];
} }
@ -397,7 +401,7 @@ class Providers_model extends EA_Model
* @param int $provider_id Provider ID. * @param int $provider_id Provider ID.
* @param array $service_ids Service IDs. * @param array $service_ids Service IDs.
*/ */
protected function save_service_ids(int $provider_id, array $service_ids): void public function set_service_ids(int $provider_id, array $service_ids): void
{ {
// Re-insert the provider-service connections. // Re-insert the provider-service connections.
$this->db->delete('services_providers', ['id_users' => $provider_id]); $this->db->delete('services_providers', ['id_users' => $provider_id]);
@ -412,6 +416,26 @@ class Providers_model extends EA_Model
} }
} }
/**
* Get the provider service IDs.
*
* @param int $provider_id Provider ID.
*/
public function get_service_ids(int $provider_id): array
{
$service_provider_connections = $this->db
->get_where('services_providers', ['id_users' => $provider_id])
->result_array();
$service_ids = [];
foreach ($service_provider_connections as $service_provider_connection) {
$service_ids[] = (int) $service_provider_connection['id_services'];
}
return $service_ids;
}
/** /**
* Remove an existing provider from the database. * Remove an existing provider from the database.
* *
@ -553,20 +577,8 @@ class Providers_model extends EA_Model
} }
$this->cast($provider); $this->cast($provider);
$provider['settings'] = $this->get_settings($provider['id']);
$provider['settings'] = $this->db->get_where('user_settings', ['id_users' => $provider_id])->row_array(); $provider['services'] = $this->get_service_ids($provider['id']);
unset($provider['settings']['id_users'], $provider['settings']['password'], $provider['settings']['salt']);
$service_provider_connections = $this->db
->get_where('services_providers', ['id_users' => $provider_id])
->result_array();
$provider['services'] = [];
foreach ($service_provider_connections as $service_provider_connection) {
$provider['services'][] = (int) $service_provider_connection['id_services'];
}
return $provider; return $provider;
} }
@ -622,25 +634,8 @@ class Providers_model extends EA_Model
foreach ($providers as &$provider) { foreach ($providers as &$provider) {
$this->cast($provider); $this->cast($provider);
$provider['settings'] = $this->get_settings($provider['id']);
$provider['settings'] = $this->db->get_where('user_settings', ['id_users' => $provider['id']])->row_array(); $provider['services'] = $this->get_service_ids($provider['id']);
unset(
$provider['settings']['id_users'],
$provider['settings']['username'],
$provider['settings']['password'],
$provider['settings']['salt'],
);
$provider['services'] = [];
$service_provider_connections = $this->db
->get_where('services_providers', ['id_users' => $provider['id']])
->result_array();
foreach ($service_provider_connections as $service_provider_connection) {
$provider['services'][] = (int) $service_provider_connection['id_services'];
}
} }
return $providers; return $providers;
@ -697,20 +692,8 @@ class Providers_model extends EA_Model
foreach ($providers as &$provider) { foreach ($providers as &$provider) {
$this->cast($provider); $this->cast($provider);
$provider['settings'] = $this->get_settings($provider['id']);
$provider['settings'] = $this->db->get_where('user_settings', ['id_users' => $provider['id']])->row_array(); $provider['services'] = $this->get_service_ids($provider['id']);
unset($provider['settings']['id_users'], $provider['settings']['password'], $provider['settings']['salt']);
$provider['services'] = [];
$service_provider_connections = $this->db
->get_where('services_providers', ['id_users' => $provider['id']])
->result_array();
foreach ($service_provider_connections as $service_provider_connection) {
$provider['services'][] = (int) $service_provider_connection['id_services'];
}
} }
return $providers; return $providers;

View file

@ -222,25 +222,9 @@ class Secretaries_model extends EA_Model
$secretaries = $this->db->get_where('users', ['id_roles' => $role_id], $limit, $offset)->result_array(); $secretaries = $this->db->get_where('users', ['id_roles' => $role_id], $limit, $offset)->result_array();
foreach ($secretaries as &$secretary) { foreach ($secretaries as &$secretary) {
$secretary['settings'] = $this->db $this->cast($secretary);
->get_where('user_settings', ['id_users' => $secretary['id']]) $secretary['settings'] = $this->get_settings($secretary['id']);
->row_array(); $secretary['providers'] = $this->get_provider_ids($secretary['id']);
unset(
$secretary['settings']['id_users'],
$secretary['settings']['password'],
$secretary['settings']['salt'],
);
$secretary_provider_connections = $this->db
->get_where('secretaries_providers', ['id_users_secretary' => $secretary['id']])
->result_array();
$secretary['providers'] = [];
foreach ($secretary_provider_connections as $secretary_provider_connection) {
$secretary['providers'][] = (int) $secretary_provider_connection['id_users_provider'];
}
} }
return $secretaries; return $secretaries;
@ -292,21 +276,21 @@ class Secretaries_model extends EA_Model
$settings['salt'] = generate_salt(); $settings['salt'] = generate_salt();
$settings['password'] = hash_password($settings['salt'], $settings['password']); $settings['password'] = hash_password($settings['salt'], $settings['password']);
$this->save_settings($secretary['id'], $settings); $this->set_settings($secretary['id'], $settings);
$this->save_provider_ids($secretary['id'], $provider_ids); $this->set_provider_ids($secretary['id'], $provider_ids);
return $secretary['id']; return $secretary['id'];
} }
/** /**
* Save the secretary settings. * Set the secretary settings.
* *
* @param int $secretary_id Secretary ID. * @param int $secretary_id Secretary ID.
* @param array $settings Associative array with the settings data. * @param array $settings Associative array with the settings data.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
protected function save_settings(int $secretary_id, array $settings): void public function set_settings(int $secretary_id, array $settings): void
{ {
if (empty($settings)) { if (empty($settings)) {
throw new InvalidArgumentException('The settings argument cannot be empty.'); throw new InvalidArgumentException('The settings argument cannot be empty.');
@ -324,6 +308,22 @@ class Secretaries_model extends EA_Model
} }
} }
/**
* Get the secretary settings.
*
* @param int $secretary_id Secretary ID.
*
* @throws InvalidArgumentException
*/
public function get_settings(int $secretary_id): array
{
$settings = $this->db->get_where('user_settings', ['id_users' => $secretary_id])->row_array();
unset($settings['id_users'], $settings['password'], $settings['salt']);
return $settings;
}
/** /**
* Set the value of a secretary setting. * Set the value of a secretary setting.
* *
@ -375,19 +375,19 @@ class Secretaries_model extends EA_Model
throw new RuntimeException('Could not update secretary.'); throw new RuntimeException('Could not update secretary.');
} }
$this->save_settings($secretary['id'], $settings); $this->set_settings($secretary['id'], $settings);
$this->save_provider_ids($secretary['id'], $provider_ids); $this->set_provider_ids($secretary['id'], $provider_ids);
return (int) $secretary['id']; return (int) $secretary['id'];
} }
/** /**
* Save the secretary provider IDs. * Set the secretary provider IDs.
* *
* @param int $secretary_id Secretary ID. * @param int $secretary_id Secretary ID.
* @param array $provider_ids Provider IDs. * @param array $provider_ids Provider IDs.
*/ */
protected function save_provider_ids(int $secretary_id, array $provider_ids): void public function set_provider_ids(int $secretary_id, array $provider_ids): void
{ {
// Re-insert the secretary-provider connections. // Re-insert the secretary-provider connections.
$this->db->delete('secretaries_providers', ['id_users_secretary' => $secretary_id]); $this->db->delete('secretaries_providers', ['id_users_secretary' => $secretary_id]);
@ -402,6 +402,26 @@ class Secretaries_model extends EA_Model
} }
} }
/**
* Get the secretary provider IDs.
*
* @param int $secretary_id Secretary ID.
*/
public function get_provider_ids(int $secretary_id): array
{
$secretary_provider_connections = $this->db
->get_where('secretaries_providers', ['id_users_secretary' => $secretary_id])
->result_array();
$provider_ids = [];
foreach ($secretary_provider_connections as $secretary_provider_connection) {
$provider_ids[] = (int) $secretary_provider_connection['id_users_provider'];
}
return $provider_ids;
}
/** /**
* Remove an existing secretary from the database. * Remove an existing secretary from the database.
* *
@ -522,25 +542,9 @@ class Secretaries_model extends EA_Model
->result_array(); ->result_array();
foreach ($secretaries as &$secretary) { foreach ($secretaries as &$secretary) {
$secretary['settings'] = $this->db $this->cast($secretary);
->get_where('user_settings', ['id_users' => $secretary['id']]) $secretary['settings'] = $this->get_settings($secretary['id']);
->row_array(); $secretary['providers'] = $this->get_provider_ids($secretary['id']);
unset(
$secretary['settings']['id_users'],
$secretary['settings']['password'],
$secretary['settings']['salt'],
);
$secretary_provider_connections = $this->db
->get_where('secretaries_providers', ['id_users_secretary' => $secretary['id']])
->result_array();
$secretary['providers'] = [];
foreach ($secretary_provider_connections as $secretary_provider_connection) {
$secretary['providers'][] = (int) $secretary_provider_connection['id_users_provider'];
}
} }
return $secretaries; return $secretaries;
@ -731,19 +735,9 @@ class Secretaries_model extends EA_Model
); );
} }
$secretary['settings'] = $this->db->get_where('user_settings', ['id_users' => $secretary_id])->row_array(); $this->cast($secretary);
$secretary['settings'] = $this->get_settings($secretary['id']);
unset($secretary['settings']['id_users'], $secretary['settings']['password'], $secretary['settings']['salt']); $secretary['providers'] = $this->get_provider_ids($secretary['id']);
$secretary_provider_connections = $this->db
->get_where('secretaries_providers', ['id_users_secretary' => $secretary_id])
->result_array();
$secretary['providers'] = [];
foreach ($secretary_provider_connections as $secretary_provider_connection) {
$secretary['providers'][] = (int) $secretary_provider_connection['id_users_provider'];
}
return $secretary; return $secretary;
} }