/home/ivoiecob/email.hirewise-va.com/modules/CpanelIntegrator/Managers/Aliases.php
<?php
/**
 * This code is licensed under AGPLv3 license or Afterlogic Software License
 * if commercial version of the product was purchased.
 * For full statements of the licenses see LICENSE-AFTERLOGIC and LICENSE-AGPL3 files.
 */

namespace Aurora\Modules\CpanelIntegrator\Managers;

use Aurora\Modules\CpanelIntegrator\Models\Alias;

/**
 * @license https://www.gnu.org/licenses/agpl-3.0.html AGPL-3.0
 * @license https://afterlogic.com/products/common-licensing Afterlogic Software License
 * @copyright Copyright (c) 2023, Afterlogic Corp.
 */
class Aliases extends \Aurora\System\Managers\AbstractManager
{
    /**
     * @param \Aurora\System\Module\AbstractModule $oModule
     */
    public function __construct(\Aurora\System\Module\AbstractModule $oModule = null)
    {
        parent::__construct($oModule);
    }

    /**
     * @param \Aurora\Modules\CpanelIntegrator\Models\Alias $oAlias
     * @return int|bool
     */
    public function createAlias(\Aurora\Modules\CpanelIntegrator\Models\Alias &$oAlias)
    {
        $mResult = false;
        if ($oAlias->validate()) {
            $mResult = $oAlias->save();
            if (!$mResult) {
                throw new \Aurora\System\Exceptions\ManagerException(\Aurora\Modules\CpanelIntegrator\Enums\ErrorCodes::AliasCreateFailed);
            }
        }

        return $mResult;
    }

    /**
     * @param \Aurora\Modules\CpanelIntegrator\Models\Alias $oAlias
     * @return bool
     */
    public function updateAlias(\Aurora\Modules\CpanelIntegrator\Models\Alias $oAlias)
    {
        $bResult = false;
        if ($oAlias->validate()) {
            if (!$oAlias->save()) {
                throw new \Aurora\System\Exceptions\ManagerException(\Aurora\Modules\CpanelIntegrator\Enums\ErrorCodes::AliasUpdateFailed);
            }

            $bResult = true;
        }

        return $bResult;
    }

    /**
     * @param \Aurora\Modules\CpanelIntegrator\Models\Alias $oAlias
     * @return bool
     */
    public function deleteAlias(\Aurora\Modules\CpanelIntegrator\Models\Alias $oAlias)
    {
        $bResult = $oAlias->delete();
        return $bResult;
    }

    /**
     * @param int $iEntityId
     * @return object
     */
    public function getAlias($iEntityId)
    {
        $oResult = Alias::find($iEntityId);

        return $oResult;
    }

    /**
     * @param \Illuminate\Database\Eloquent\Builder $oFilter
     * @return array
     */
    public function getAliases($iCount = 0, $iLimit = 0, \Illuminate\Database\Eloquent\Builder $oFilter = null)
    {
        if ($oFilter === null) {
            $oFilter = Alias::query();
        }
        if ($iCount > 0) {
            $oFilter = $oFilter->offset($iCount);
        }
        if ($iLimit > 0) {
            $oFilter = $oFilter->limit($iLimit);
        }
        return $oFilter->get();
    }

    /**
     * @param int $iUserId UserId.
     * @return array
     */
    public function getAliasesByUserId($iUserId)
    {
        return $this->getAliases(0, 0, Alias::where('IdUser', $iUserId));
    }

    /**
     * @param int $iUserId UserId.
     * @param string $sEmail
     * @return bool|\Aurora\Modules\CpanelIntegrator\Models\Alias
     */
    public function getUserAliasByEmail($iUserId, $sEmail)
    {
        return Alias::where('IdUser', $iUserId)->where('Email', $sEmail)->first();
    }
}