<?php

header("Access-Control-Allow-Origin: *");

require_once __DIR__.'/vendor/autoload.php';
require_once __DIR__.'/config.php';
require_once __DIR__.'/Application.php';
require_once __DIR__.'/Rewiter.php';
require_once __DIR__.'/Request.php';

require_once __DIR__.'/exceptions/ApiException.php';
require_once __DIR__.'/exceptions/ApiExpiredException.php';
require_once __DIR__.'/exceptions/ApiForbiddenException.php';
require_once __DIR__.'/exceptions/ApiNotFoundException.php';
require_once __DIR__.'/exceptions/ApiRuntimeException.php';
require_once __DIR__.'/exceptions/ApiUnprocessableException.php';


require_once __DIR__.'/adapters/MysqlAwareTrait.php';
require_once __DIR__.'/adapters/MysqlAdapter.php';

require_once __DIR__.'/models/AbstractModel.php';
require_once __DIR__.'/models/AbstractModel.php';
require_once __DIR__.'/models/ProjectModel.php';
require_once __DIR__.'/models/EventModel.php';
require_once __DIR__.'/models/Notification.php';
require_once __DIR__.'/models/UserModel.php';
require_once __DIR__.'/models/events/AbstractEvent.php';
require_once __DIR__.'/models/events/S3Event.php';
require_once __DIR__.'/models/events/PictureEvent.php';
require_once __DIR__.'/models/events/FileEvent.php';
require_once __DIR__.'/models/PlanModel.php';
require_once __DIR__.'/models/ProfessionModel.php';
require_once __DIR__.'/models/ContractorModel.php';
require_once __DIR__.'/models/EventHashModel.php';
require_once __DIR__.'/models/EventHistoryModel.php';
require_once __DIR__.'/models/ConfigModel.php';
require_once __DIR__.'/models/PaymentModel.php';

require_once __DIR__.'/services/security/ProviderInterface.php';
require_once __DIR__.'/services/security/SecurityProvider.php';
require_once __DIR__.'/services/security/BasicAuth.php';
require_once __DIR__.'/services/security/Jwt.php';
require_once __DIR__.'/services/security/JwtInUrl.php';
require_once __DIR__.'/services/Sms.php';
require_once __DIR__.'/services/MobilePush.php';
require_once __DIR__.'/services/Utils.php';
require_once __DIR__.'/services/DateUtils.php';
require_once __DIR__.'/services/TextUtils.php';
require_once __DIR__.'/services/SendgridParse.php';
require_once __DIR__.'/services/BillderApi.php';
require_once __DIR__.'/services/Sendinblue.php';

require_once __DIR__.'/mails/MailTemplate.php';


require_once __DIR__.'/controllers/AbstractController.php';
require_once __DIR__.'/controllers/Index.php';
require_once __DIR__.'/controllers/RestController.php';

require_once __DIR__.'/controllers/Project.php';
require_once __DIR__.'/controllers/Event.php';
require_once __DIR__.'/controllers/Category.php';
require_once __DIR__.'/controllers/User.php';
require_once __DIR__.'/controllers/Plan.php';
require_once __DIR__.'/controllers/Oauth.php';
require_once __DIR__.'/controllers/Contractor.php';
require_once __DIR__.'/controllers/Settings.php';
require_once __DIR__.'/controllers/Calendar.php';
require_once __DIR__.'/controllers/Payment.php';


require_once __DIR__.'/lang/lang.php';




function error_handler($errno, $errstr, $errfile, $errline)  {

    if (!(error_reporting() & $errno)) {
      return false;
    }
    $php_error_types = [
      E_WARNING => 'E_WARNING',
      E_NOTICE => 'E_NOTICE',
      E_USER_ERROR => 'E_USER_ERROR',
      E_USER_WARNING => 'E_USER_WARNING',
      E_USER_NOTICE => 'E_USER_NOTICE',
      E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
      E_DEPRECATED => 'E_DEPRECATED',
      E_USER_DEPRECATED => 'E_USER_DEPRECATED',
      E_ALL => 'E_ALL'
    ];
    error_log(sprintf("%s> %s - %tline %4d%t : %s",$php_error_types["$errno"], $errfile,$errline,$errstr));
    return true;
  }
  



$app = new Application();
$app->run();
