<?php
/**
 * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
 *
 * @author Double Bastion LLC
 *
 * @license GNU AGPL version 3 or any later version
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
 *
 * You should have received a copy of the GNU Affero General Public
 * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

declare(strict_types=1);

namespace OCA\SIPTripPhone\Controller;

use OCP\IRequest;
use OCP\AppFramework\Controller;
use OCA\SIPTripPhone\Service\SphoneService;
use OCP\IUserSession;
use OC\URLGenerator;


class SphoneController extends Controller {

    private $service;
    private $userId;
    private $userSession;
    private $urlGenerator;

    public function __construct($appName, IRequest $request, SphoneService $service, $userId, IUserSession $userSession, URLGenerator $urlGenerator) {
        parent::__construct($appName, $request);
        $this->service = $service;
        $this->userId = $userId;
        $this->userSession = $userSession;
        $this->urlGenerator = $urlGenerator;
    }

    /**
     * @NoAdminRequired
     */
    public function getappdirectory() {
        $apprelpath = $this->urlGenerator->linkTo('sip_trip_phone', 'COPYING.txt');
        $apprelpatharr = explode("/", $apprelpath);
        $stpappdir = $apprelpatharr[1];
        return $stpappdir;
    }

    /**
     * @NoAdminRequired
     */
    public function getsettings() {

           return $this->service->getsettings($this->userSession->getUser()->getUID());
    }

    /**
     * @NoAdminRequired
     */
    public function getsippass() {

           return $this->service->getsippass($this->userSession->getUser()->getUID());
    }

   /**
    * @NoAdminRequired
    */
    public function updatesettings(string $pdisplayname, string $sipusername, string $sipuserpassword, string $stphwssurl, string $siprealm, string $stunserver, int $tracesipmsg, string $voicenumbers, string $defaultvoicenumber) {

           return $this->service->updatesettings($this->userSession->getUser()->getUID(), $pdisplayname, $sipusername, $sipuserpassword, $stphwssurl, $siprealm, $stunserver, $tracesipmsg, $voicenumbers, $defaultvoicenumber);

    }

    /**
     * @NoAdminRequired
     */
    public function getcontactsnmbrs() {

           return $this->service->getcontactsnmbrs($this->userSession->getUser()->getUID());
    }
}
