<?php

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

error_reporting(E_ALL);
ini_set('display_errors', '1');



$pathArr = explode("/", __DIR__);
array_pop($pathArr);
$path = join('/', $pathArr);



//including the required files
require_once $path.'/include/DbOperation.php';
require_once $path.'/libs/Slim/vendor/autoload.php';

$app = new \Slim\App;

 
/* *
 * URL: /consorcio/v1/show
 * Parameters: numEtiqueta
 * Method: POST
 * */
 
 
$app->post('/trazabilidad', function(Request $request, Response $response) {
        
    $numEtiqueta = $request->getParsedBody()['codigo'];
    
    $db = new DbOperation();

    $response = array();
    
    if( isset($numEtiqueta) && preg_match('/^([aAeErR])/', $numEtiqueta, $match) ){
		
		// comprovacion de la codificación = letra, numero, numero, letra, numero, numero
		if( preg_match("/([A-Z][0-9][0-9][A-Z][0-9][0-9])/", $numEtiqueta) && strlen($numEtiqueta) <= 6 ||
			preg_match("/([a-z][0-9][0-9][a-z][0-9][0-9])/", $numEtiqueta) && strlen($numEtiqueta) <= 6 ||
			preg_match("/([A-Z][0-9][0-9][a-z][0-9][0-9])/", $numEtiqueta) && strlen($numEtiqueta) <= 6 ||
			preg_match("/([a-z][0-9][0-9][A-Z][0-9][0-9])/", $numEtiqueta) && strlen($numEtiqueta) <= 6 ) {
		
	        switch($match[0]){
	            case "a":
	            case "A":
	                $areaCaptura = "Océano Atlántico sudoccidental";
	                $zonaFAO = "FAO-41";
	                $fechaCaptura = "De septiembre hasta mediados de noviembre";
	                $nombreCientifico = "Engraulis Anchoíta";
	                $metodoPesca = "arrastre";
	                break;
	    
	            case "e":
	            case "E":
	                $areaCaptura = "Mar Cantábrico"; 
	                $zonaFAO = "FAO-27";
	                $fechaCaptura = "De abril a junio";
	                $nombreCientifico = "Engraulis Encrasicolus";
	                $metodoPesca = "cerco";
	                break;
	    
	            case "r":
	            case "R":
	                $areaCaptura = "Zona sureste del océano Pacífico"; 
	                $zonaFAO = "FAO-87";
	                $fechaCaptura = "Durante todo el año";
	                $nombreCientifico = "Engraulis Ringens";
	                $metodoPesca = "cerco";
	                break;
	        }
        
	        $response['isAnchoa'] = ( preg_match('/^([aAeErR])/', $numEtiqueta) ) ? true : false;
	        $response['numEtiqueta'] = $numEtiqueta;
	        $response['areaCaptura'] = $areaCaptura;
	        $response['zonaFAO'] = $zonaFAO;
	        $response['nombreCientifico'] = $nombreCientifico;
	        $response['metodoPesca'] = $metodoPesca;
	        $response['fechaCaptura'] = $fechaCaptura; 

    	} else {
	    	// error por no cumplir la codificacion estandar de la anchoa y/o tener mas de 6 caracteres
	    	$response['error'] = true;
            $response['message'] = "Numero de etiqueta incorrecto";
    	}
    }
    else if (isset($numEtiqueta)) {
                
        $datos = $db->getTrazabilidad($numEtiqueta);
                
        if( !empty($datos[0]['areaCaptura']) && !empty($datos[0]['zonaFAO']) &&
        !empty($datos[0]['nombreCientifico']) && !empty($datos[0]['metodoPesca']) &&
        !empty($datos[0]['fechaCaptura'])) {
                        
            $response['isAnchoa'] = ( preg_match('/^([aAeErR])/', $datos[0]['numEtiqueta']) ) ? true : false;
            $response['numEtiqueta'] = $datos[0]['numEtiqueta'];
            $response['areaCaptura'] = utf8_encode($datos[0]['areaCaptura']);
            $response['zonaFAO'] = utf8_encode($datos[0]['zonaFAO']);
            $response['nombreCientifico'] = utf8_encode($datos[0]['nombreCientifico']);
            $response['metodoPesca'] = utf8_encode($datos[0]['metodoPesca']);
            $response['fechaCaptura'] = $datos[0]['fechaCaptura'];   
            
 
        } else {
            $response['error'] = true;
            $response['message'] = "Numero de etiqueta incorrecto";
        }
    } else {
        $response['error'] = true;
        $response['message'] = "Numero de etiqueta incorrecto";
    }
    
    echoResponse(200, $response);

});
 
 
function echoResponse($status_code, $response)
{
    header("HTTP/1.1 ".$status_code." OK");
    header("Content-Type: application/json");
    echo json_encode($response);
}
 
 

 
$app->run();