<?php

/*
 * Copyright 2017-08-31  Cámara de Comercio de Santa Marta para el Magdalena.
 * Autor: Luis Montoya <lmontoya@ccsm.org.co at www.ccsm.org.co>.
 * Archivo: index.
 *
 * Licenciado bajo la Licencia Apache, Versión 2.0;
 * Usted no puede usar este archivo excepto en conformidad con la Licencia.
 * Usted puede obtener una copia de la Licencia en
 *
 *   	http://www.apache.org/licenses/LICENSE-2.0
 *
 * A menos que sea requerido por la ley aplicable o acordado por escrito, el software
 * Distribuido bajo la licencia se distribuye en una "AS IS" o  "COMO ESTA" BASE,
 * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.
 * Consulte la Licencia para los permisos y Limitaciones bajo la Licencia.
 */

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require_once './config.php';
//$app = new \Slim\App;

$app = new \Slim\App([
    'settings' => [
        'displayErrorDetails' => true,
        'debug' => true
        ]
    ]);

$app->add(function ($req, $res, $next) {
    $response = $next($req, $res);
    return $response
                    ->withHeader('Access-Control-Allow-Origin', '*')
                    ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
                    ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
});


$app->add(function ($request, $response, $next) {
    $method = $request->getMethod();
    $uri = $request->getUri();
    if( $uri->getPath() === '/' ){
        $response = $next($request, $response);
        $response = $response->withHeader('Content-type', 'text/html');
    }else{
        $response = $next($request, $response);
        $response = $response->withHeader('Content-type', 'application/json');
    }
    //Log de API
    return $response;
});


$base = str_replace( 'api/', '', $_SERVER['REQUEST_URI'] );
if($base != '/'){
        $app->add(
            new \Slim\Middleware\HttpBasicAuthentication([
                "secure" => false,
                'realm' => 'Protected',
                "authenticator" => new Autenticacion(),
                "error" => function ($request, $response, $arguments) {
                    $data = [];
                    $data["status"] = "error";
                    $data["message"] = $arguments["message"];
                    return $response->write(json_encode($data));
                }
            ])
        );
}


$checkProxyHeaders = true;
$trustedProxies = ['10.0.0.1', '10.0.0.2'];
$app->add(new RKA\Middleware\IpAddress($checkProxyHeaders, $trustedProxies));


$app->get('/',function ($request, $response, $args) {
    require_once DIR_LIBRERIA . '/clases/Autoload.php';
    require_once DIR_API.'plantilla/index.html.php';
    //return $response->write("Bienvenido al Api REST de la Cámara de Comercio de Santa Marta");
});

$app->map(['GET', 'POST', 'PUT', 'DELETE'], '/{componente}/{controlador}/{operacion}[/{params:.*}]', function ($request, $response, $args) {
    require_once DIR_LIBRERIA.'vendor/autoload.php';
    require_once DIR_LIBRERIA.'clases/Autoload.php';
    require_once DIR_LIBRERIA.'Main.php';
    if($request->getMethod()=='GET'):
        $params = explode('/', $request->getAttribute('params'));
    else:
        $params = $request->getParsedBody();
    endif;
    
    $_POST['controlador'] = $request->getAttribute('controlador');
    $_POST['componente'] = $request->getAttribute('componente');
    $_POST['operacion'] = $request->getAttribute('operacion');
    
    
    Cliente::abrirSesion(getUsuario($request));
    Cliente::registroIP($request->getAttribute('ip_address'));

    require_once DIR_SICAM32 . 'api.php';
    return $response;
});

$app->get('/probar/{operacion}',
        function ($request, $response, $args) {

    require_once DIR_LIBRERIA.'vendor/autoload.php';
    require_once DIR_LIBRERIA.'clases/Autoload.php';
    require_once DIR_LIBRERIA.'Main.php';

    $operacion = $args['operacion'];
    switch ($operacion) {
        case 'correo':
            $htmlMensaje = PlantillasCorreos::procesar( 
                "afiliados/msj-afiliados", 
                array('%%INFORPRUEBA%%'), 
                array("Lorem Ipsum es simplemente el texto de relleno de las imprentas y a.")
            );
            $mensaje = PlantillasCorreos::mensaje( $htmlMensaje , "pruebas@ccsm.org.co", "probando");
            $envio = Correos::enviarContacto(
                            array("pruebas@ccsm.org.co", "probando"), "pruebas",
                            $mensaje,
                            array("pruebas@ccsm.org.co", "probando")
            );
            $response->write("probadno envio " . $envio);
            break;

        default:
            break;
    }
    return $response;
});

//$app->get('/{componente}/{operacion}',
//        function ($request, $response, $args) {
//    require_once DIR_LIBRERIA . '/clases/Autoload.php';
//    
//    $response->write(procesarPeticion($args));
//    return $response;
//});


//$app->get('/{componente}/{operacion}/{dato1}', function ($request, $response, $args) {
//
//    $response->getBody()->write(procesarPeticion($args));
//
//    return $response;
//});


function getUsuario($request) {
    $credencialUsuario = explode(':', $request->getUri()->getUserInfo());
    $usuario = Usuarios::datosCompletosApiporNombre($credencialUsuario[0]);
    return $usuario;
}

$app->run();

