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 f1abeee560
commit 08998f3a4a
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) {
$this->cast($admin);
$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']);
$admin['settings'] = $this->get_settings($admin['id']);
}
return $admins;
@ -264,7 +261,7 @@ class Admins_model extends EA_Model
$settings['salt'] = generate_salt();
$settings['password'] = hash_password($settings['salt'], $settings['password']);
$this->save_settings($admin['id'], $settings);
$this->set_settings($admin['id'], $settings);
return $admin['id'];
}
@ -277,7 +274,7 @@ class Admins_model extends EA_Model
*
* @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)) {
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.
*
@ -347,7 +360,7 @@ class Admins_model extends EA_Model
throw new RuntimeException('Could not update admin.');
}
$this->save_settings($admin['id'], $settings);
$this->set_settings($admin['id'], $settings);
return $admin['id'];
}
@ -390,10 +403,7 @@ class Admins_model extends EA_Model
}
$this->cast($admin);
$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']);
$admin['settings'] = $this->get_settings($admin['id']);
return $admin;
}
@ -507,10 +517,7 @@ class Admins_model extends EA_Model
foreach ($admins as &$admin) {
$this->cast($admin);
$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']);
$admin['settings'] = $this->get_settings($admin['id']);
}
return $admins;

View file

@ -225,20 +225,8 @@ class Providers_model extends EA_Model
foreach ($providers as &$provider) {
$this->cast($provider);
$provider['settings'] = $this->db->get_where('user_settings', ['id_users' => $provider['id']])->row_array();
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'];
}
$provider['settings'] = $this->get_settings($provider['id']);
$provider['services'] = $this->get_service_ids($provider['id']);
}
return $providers;
@ -289,8 +277,8 @@ class Providers_model extends EA_Model
$settings['salt'] = generate_salt();
$settings['password'] = hash_password($settings['salt'], $settings['password']);
$this->save_settings($provider['id'], $settings);
$this->save_service_ids($provider['id'], $service_ids);
$this->set_settings($provider['id'], $settings);
$this->set_service_ids($provider['id'], $service_ids);
return $provider['id'];
}
@ -303,7 +291,7 @@ class Providers_model extends EA_Model
*
* @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)) {
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.
*
@ -385,8 +389,8 @@ class Providers_model extends EA_Model
throw new RuntimeException('Could not update provider.');
}
$this->save_settings($provider['id'], $settings);
$this->save_service_ids($provider['id'], $service_ids);
$this->set_settings($provider['id'], $settings);
$this->set_service_ids($provider['id'], $service_ids);
return $provider['id'];
}
@ -397,7 +401,7 @@ class Providers_model extends EA_Model
* @param int $provider_id Provider ID.
* @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.
$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.
*
@ -553,20 +577,8 @@ class Providers_model extends EA_Model
}
$this->cast($provider);
$provider['settings'] = $this->db->get_where('user_settings', ['id_users' => $provider_id])->row_array();
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'];
}
$provider['settings'] = $this->get_settings($provider['id']);
$provider['services'] = $this->get_service_ids($provider['id']);
return $provider;
}
@ -622,25 +634,8 @@ class Providers_model extends EA_Model
foreach ($providers as &$provider) {
$this->cast($provider);
$provider['settings'] = $this->db->get_where('user_settings', ['id_users' => $provider['id']])->row_array();
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'];
}
$provider['settings'] = $this->get_settings($provider['id']);
$provider['services'] = $this->get_service_ids($provider['id']);
}
return $providers;
@ -697,20 +692,8 @@ class Providers_model extends EA_Model
foreach ($providers as &$provider) {
$this->cast($provider);
$provider['settings'] = $this->db->get_where('user_settings', ['id_users' => $provider['id']])->row_array();
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'];
}
$provider['settings'] = $this->get_settings($provider['id']);
$provider['services'] = $this->get_service_ids($provider['id']);
}
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();
foreach ($secretaries as &$secretary) {
$secretary['settings'] = $this->db
->get_where('user_settings', ['id_users' => $secretary['id']])
->row_array();
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'];
}
$this->cast($secretary);
$secretary['settings'] = $this->get_settings($secretary['id']);
$secretary['providers'] = $this->get_provider_ids($secretary['id']);
}
return $secretaries;
@ -292,21 +276,21 @@ class Secretaries_model extends EA_Model
$settings['salt'] = generate_salt();
$settings['password'] = hash_password($settings['salt'], $settings['password']);
$this->save_settings($secretary['id'], $settings);
$this->save_provider_ids($secretary['id'], $provider_ids);
$this->set_settings($secretary['id'], $settings);
$this->set_provider_ids($secretary['id'], $provider_ids);
return $secretary['id'];
}
/**
* Save the secretary settings.
* Set the secretary settings.
*
* @param int $secretary_id Secretary ID.
* @param array $settings Associative array with the settings data.
*
* @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)) {
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.
*
@ -375,19 +375,19 @@ class Secretaries_model extends EA_Model
throw new RuntimeException('Could not update secretary.');
}
$this->save_settings($secretary['id'], $settings);
$this->save_provider_ids($secretary['id'], $provider_ids);
$this->set_settings($secretary['id'], $settings);
$this->set_provider_ids($secretary['id'], $provider_ids);
return (int) $secretary['id'];
}
/**
* Save the secretary provider IDs.
* Set the secretary provider IDs.
*
* @param int $secretary_id Secretary ID.
* @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.
$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.
*
@ -522,25 +542,9 @@ class Secretaries_model extends EA_Model
->result_array();
foreach ($secretaries as &$secretary) {
$secretary['settings'] = $this->db
->get_where('user_settings', ['id_users' => $secretary['id']])
->row_array();
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'];
}
$this->cast($secretary);
$secretary['settings'] = $this->get_settings($secretary['id']);
$secretary['providers'] = $this->get_provider_ids($secretary['id']);
}
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();
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'];
}
$this->cast($secretary);
$secretary['settings'] = $this->get_settings($secretary['id']);
$secretary['providers'] = $this->get_provider_ids($secretary['id']);
return $secretary;
}