Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
6 / 6
CRAP
100.00% covered (success)
100.00%
44 / 44
Services\Users
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
6 / 6
16
100.00% covered (success)
100.00%
44 / 44
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 validateData
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
7 / 7
 createUser
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
10 / 10
 readUser
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
8 / 8
 updateUser
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
8 / 8
 deleteUser
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
9 / 9
<?php
namespace Services;
class Users
{
    // Users model
    private $usersModel = false;
    private $defaultResult = [
        'type' => 'error',
        'message' => 'Unknown result, probably script error!'
    ];
    public function __construct(\Users $usersModel)
    {
        $this->usersModel = $usersModel;
    }
    /**
     * @param array $data
     * @param array $requiredKeys
     * @return bool
     */
    public function validateData(array $data, array $requiredKeys): bool
    {
        $result = false;
        foreach ($requiredKeys as $key) {
            if (isset($data[$key]) && !empty($key)) {
                $result = true;
            } else {
                $result = false;
                break;
            }
        }
        return $result;
    }
    /**
     * @param array $formData
     * @return array
     */
    public function createUser(array $formData): array
    {
        $result = $this->defaultResult;
        // checking if the email exists in our database
        $existingUser = $this->usersModel->getUserByEmail($formData['email']);
        if ($existingUser) {
            // error, there is existing user with this email
            $result['message'] = "There is existing user with the same email address!";
        } else {
            // saving the user
            $userId = $this->usersModel->createUser($formData);
            if ($userId > 0) {
                $result['type'] = "success";
                $result['message'] = "Created new user with ID: " . $userId;
            } else {
                $result['message'] = "Database error, cannot save the user!";
            }
        }
        return $result;
    }
    /**
     * @param string $userEmail
     * @return array
     */
    public function readUser(string $userEmail): array
    {
        $result = $this->defaultResult;
        // trying to find the user
        $userData = $this->usersModel->getUserByEmail($userEmail);
        if ($userData) {
            // we have the user, generating the response
            $result = [
                'type' => 'success',
                'message' => 'User found!',
                'data' => (is_array($userData) ? $userData : $userData->toArray())
            ];
        } else {
            $result['message'] = "User with email '" . $userEmail . "' don't exists in the database!";
        }
        return $result;
    }
    /**
     * @param array $formData
     * @return array
     */
    public function updateUser(array $formData): array
    {
        $result = $this->defaultResult;
        // we have all of the data
        // checking if the user exists in our database
        $userId = filter_var($formData['id'], FILTER_SANITIZE_NUMBER_INT);
        $existingUser = $this->usersModel->getUserById($userId);
        if ($existingUser) {
            // updating the user
            //$this->usersModel->updateUser($existingUser, $formData);
            $result['type'] = "success";
            $result['message'] = "Updated existing user with ID: " . $userId;
        } else {
            // error, there is no user with this id
            $result['message'] = "There is NO existing user with ID: " . $userId . "!";
        }
        return $result;
    }
    public function deleteUser(int $userId): array
    {
        $result = $this->defaultResult;
        // checking if the user exists
        $existingUser = $this->usersModel->getUserById($userId);
        if ($existingUser) {
            // we can delete it
            if ($this->usersModel->deleteUser($userId)) {
                $result['type'] = "success";
                $result['message'] = "Deleted existing user with ID: " . $userId;
            } else {
                $result['message'] = "Database error, cannot delete the user!";;
            }
        } else {
            $result['message'] = "There is NO existing user with ID: " . $userId . "!";
        }
        return $result;
    }
}