#!/usr/bin/env php
<?php

/**
 * BLS SDK for PHP.
 *
 * @author Luke Carrier <luke.carrier@avadolearning.com>
 * @copyright 2017 AVADO Learning
 */

require_once dirname(__DIR__) . '/vendor/autoload.php';
require_once dirname(__DIR__) . '/etc/config.php';

use Monolog\Logger;
use Wsdl2PhpGenerator\Config;
use Wsdl2PhpGenerator\Generator;

ini_set('soap.wsdl_cache_enabled', 0);

$logger = new Logger('generate_entities');

$services = array(
    'SalesLogix',
);

foreach ($services as $service) {
    $descriptor = sprintf('%s/%s.svc', BLS_URL, $service);
    $outputdir  = dirname(__DIR__) . "/generatedlib/{$service}Service";
    $namespace  = "AvadoLearning\\BusinessLogicServices\\{$service}Service";

    $logger->info("Generating model for {$service}");
    $logger->debug("Using WSDL descriptor {$descriptor}");
    $logger->debug("Placing files in {$outputdir}");
    $logger->debug("Corresponding namespace is {$namespace}");

    if (is_dir($outputdir)) {
        $logger->emerg("output directory {$outputdir} already exists");
        exit;
    }

    $generatorConfig = new Config(array(
        'inputFile'       => $descriptor,
        'outputDir'       => $outputdir,
        'namespaceName'   => $namespace,
        'soapClientClass' => '\AvadoLearning\BusinessLogicServices\SoapClient',
    ));

    $generator = new Generator();
    $generator->generate($generatorConfig);
}
