andriiosmak/laravel-layer-sdk

View on GitHub
src/Services/Subservices/UserService.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Aosmak\Laravel\Layer\Sdk\Services\Subservices;

use Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface;
use Aosmak\Laravel\Layer\Sdk\Services\Subservices\Interfaces\UserServiceInterface;

/**
 * Class UserService
 * @package namespace Aosmak\Laravel\Layer\Sdk\Services\Subservices
 */
class UserService extends BaseService implements UserServiceInterface
{
    /**
     * Create a user
     *
     * @param array $data user data
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function create(array $data, string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makePostRequest($this->getRouter()->getShortUrl('users', $userId, 'identity'), $data);
    }

    /**
     * Update user details
     *
     * @param array $data user data
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function update(array $data, string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makePatchRequest($this->getRouter()->getShortUrl('users', $userId, 'identity'), $data);
    }

    /**
     * Replace a user
     *
     * @param array $data user data
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function replace(array $data, string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makePutRequest($this->getRouter()->getShortUrl('users', $userId, 'identity'), $data);
    }

    /**
     * Get user details
     *
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function get(string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makeGetRequest($this->getRouter()->getShortUrl('users', $userId, 'identity'));
    }

    /**
     * Delete a user
     *
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function delete(string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makeDeleteRequest($this->getRouter()->getShortUrl('users', $userId, 'identity'));
    }

    /**
     * Create a badge
     *
     * @param array $data badge data
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function createBadge(array $data, string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makePutRequest($this->getRouter()->getShortUrl('users', $userId, 'badge'), $data);
    }

    /**
     * Get user`s badges
     *
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function getBadges(string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makeGetRequest($this->getRouter()->getShortUrl('users', $userId, 'badge'));
    }

    /**
     * Update block list
     *
     * @param array $data user data
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function updateBlockList(array $data, string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makePatchRequest($this->getRouter()->getShortUrl('users', $userId), $data);
    }

    /**
     * Get block list
     *
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function getBlockList(string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makeGetRequest($this->getRouter()->getShortUrl('users', $userId, 'blocks'));
    }

    /**
     * Set suspended property
     *
     * @param string $userId user ID
     * @param bool $value user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function suspend(string $userId, bool $value): ResponseInterface
    {
        $data = [
            [
                'operation' => 'set',
                'property'  => 'suspended',
                'value'     => $value
            ]
        ];

        return $this->getRequestService()
            ->makePatchRequest($this->getRouter()->getShortUrl('users', $userId), $data);
    }

    /**
     * Set TTL in seconds
     *
     * @param bool $value user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function setTtl(int $value): ResponseInterface
    {
        $data = [
            [
                'operation' => 'set',
                'property'  => 'session_ttl_in_seconds',
                'value'     => $value
            ]
        ];

        return $this->getRequestService()
            ->makePatchRequest($this->getRouter()->genereteURL('', []), $data);
    }

    /**
     * Get user status
     *
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function getUserStatus(string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makeGetRequest($this->getRouter()->getShortUrl('users', $userId));
    }

    /**
     * Delete user sessions
     *
     * @param string $userId user ID
     *
     * @return \Aosmak\Laravel\Layer\Sdk\Models\ResponseInterface
     */
    public function deleteSessions(string $userId): ResponseInterface
    {
        return $this->getRequestService()
            ->makeDeleteRequest($this->getRouter()->getShortUrl('users', $userId, 'sessions'));
    }
}