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

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


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

class Application extends App {

	public function __construct(array $urlParams=array()) {
		  parent::__construct('pax_fax', $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() {

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

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

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