<?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\SMSRelentless\AppInfo;

use OCP\AppFramework\App;
use OCP\IServerContainer;
use OCA\SMSRelentless\Controller\PageController;
use OCA\SMSRelentless\Notification\Notifier;
use OCP\Notification\IManager;


if ((@include_once __DIR__ . '/../../providers/Telnyx/vendor/autoload.php')===false) {
             throw new Exception('Cannot include autoload. Did you run install dependencies using composer?');
}

if ((@include_once __DIR__ . '/../../providers/Plivo/vendor/autoload.php')===false) {
             throw new Exception('Cannot include autoload. Did you run install dependencies using composer?');
}

$gettimezone = \OC::$server->getConfig()->getSystemValue('logtimezone', 'UTC');
date_default_timezone_set($gettimezone);

class Application extends App {

	public function __construct(array $urlParams=array()) {
		parent::__construct('sms_relentless', $urlParams);

            $container = $this->getContainer();

            // Controllers
            $container->registerService('PageController', function($c) {
                return new PageController(
                  $c->query('AppName'),
                  $c->query('Request')
                );
            });

            $manager = $container->get(IManager::class);
            $manager->registerNotifierService(Notifier::class); 
	}

	public function register() {

		$server = $this->getContainer()->getServer();

		$app = new \OCA\SMSRelentless\AppInfo\Application();
		$app->register();
        }
}

