<?php
    require_once 'secrets.php';
    require_once 'tools.php';
    //require_once 'vendor/autoload.php';
    //require_once 'models/InvoiceHelper.php';
    //require_once 'netsuite/seach.php';
    //require_once 'netsuite/crud.php';

$url_base = "https://auna.nationbuilder.com";
$access_token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImFsZyI6IkhTNTEyIiwia2lkIjoidlJ4QUtFZ0JqOU5aRUdPTXRwZDhzdUxqbS1Dd3ZTeWE3dE91LXRNR2tIVSJ9.eyJpc3MiOiJuYnVpbGQiLCJpYXQiOjE2OTU4MzI4MzIsImp0aSI6ImFjODYzOTMzLTI3MjgtNDcwNy1iYzBhLTc1ODU2NjIzZmYyMiIsInBybiI6IjQ1Nzd8YXVuYSIsInVzZXIiOnsiaWQiOjQ1NzcsImVtYWlsIjoicGdjcnVyb21AZ21haWwuY29tIn0sIm5hdGlvbiI6eyJpZCI6IjYxODQ0YmMxMDZkZWUzODA2MjE5OTkwMyIsInNsdWciOiJhdW5hIn19.VvbN0JTiVvuq_T2ppWJ9ovIonfEy4DVPDTb0oPSG0d4Ovx0jHrNfysXqmLLpEs3jbtRIv9sVkF7m6QFUHwN9TQ";
    


$categories = array(
    -1 => "- Nuevo -",
    25 => "CN01 - Nómina",
    24 => "CP01 - Pagos",
    12 => "D01 - Honorarios Médicos, Dentales y Gastos Hospitalarios",
    13 => "D02 - Gastos Médicos por Incapacidad o Discapacidad",
    14 => "D03 - Gastos Funerales",
    15 => "D04 - Donativos",
    16 => "D05 - Intereses Reales Efectivamente Pagados por Créditos Hipotecarios (Casa Habitación)",
    17 => "D06 - Aportaciones Voluntarias al SAR",
    18 => "D07 - Primas por Seguros de Gastos Médicos",
    19 => "D08 - Gastos de Transportación Escolar Obligatoria",
    20 => "D09 - Depósitos en Cuentas para el Ahorro, Primas que Tengan como Base Planes de Pensiones",
    21 => "D10 - Pagos por Servicios Educativos (Colegiaturas)",
    1 => "G01 - Adquisición de Mercancías",
    2 => "G02 - Devoluciones, Descuentos o Bonificaciones",
    3 => "G03 - Gastos en General",
    4 => "I01 - Construcciones",
    5 => "I02 - Mobiliario y Equipo de Oficina por Inversiones",
    6 => "I03 - Equipo de Transporte",
    7 => "I04 - Equipo de Cómputo y Accesorios",
    8 => "I05 - Dados, Troqueles, Moldes, Matrices y Herramental",
    9 => "I06 - Comunicaciones Telefónicas",
    10 => "I07 - Comunicaciones Satelitales",
    11 => "I08 - Otra Maquinaria y Equipo",
    22 => "P01 - Por Definir",
    23 => "S01 - Sin efectos fiscales"
);

    try{
        $argumentos = $argv[1];
        $date = date('Y/m/d H:i:s');

        
    $session = json_decode($argumentos);

    
    /*$jsonData = $session->metadata;

        $firstName = $jsonData["firstName"];
        $lastName = $jsonData["lastName"];
        $amount = $jsonData["amount"];
        $email = $jsonData["email"];
        $phone = $jsonData["phone"];
        $country = $jsonData["country"];
        $address = $jsonData["address"];
        $address2 = $jsonData["address2"];
        $zip = $jsonData["zip"];
        $rfc = $jsonData["rfc"];
        $city = $jsonData["city"];
        $state = $jsonData["state"];

        $taxAddress = $jsonData["taxAddress"];
        $taxRegime = $jsonData["taxRegime"];
        $cfdiUse = $jsonData["cfdiUse"];
        $currentDate = date("Y-m-d H:i:s");
        $isTest = $jsonData["isTest"];
        */

        $metadata = $session->metadata;

        $firstName = $metadata->firstName;
        $lastName = $metadata->lastName;
        $amount = $metadata->amount;
        $email = $metadata->email;
        $phone = $metadata->phone;
        $country = $metadata->country;
        $address = $metadata->address;
        $address2 = $metadata->address2;
        $zip = $metadata->zip;
        $rfc = isset($metadata->rfc) ? $metadata->rfc : "";
        $city = $metadata->city;
        $state = $metadata->state;
        $pageSlug = $metadata->pageSlug;
        

        $isMembership = 0;
        if(isset($metadata->isMembership)){
            if($metadata->isMembership){
                $isMembership = 1;
            }
            
        }

        $taxAddress = isset($metadata->taxAddress) ? $metadata->taxAddress : null;
        $taxRegime = isset($metadata->taxRegime) ? $metadata->taxRegime : null;
        $cfdiUse = isset($metadata->cfdiUse) ? $metadata->cfdiUse : null;
        $currentDate = date("Y-m-d H:i:s");
        $isTest = $metadata->isTest;

        $conn = new mysqli($servername, $username, $password, $dbname,  $port);

        if ($conn->connect_error) {
            die("La conexión a la base de datos ha fallado: " . $conn->connect_error);
            
        }


        
        

        $statusDonation = 20; //NB
        
        

        try{
            $urlBuscar = $url_base.'/api/v1/people/push'.'?access_token='.$tokenNB;

            $dataPerson = array(
                'person' => array(
                    'email' => $email,
                    'first_name' => $firstName,
                    'last_name' => $lastName,
                    'phone' => $phone,
                    'billing_address' => array(
                        'address1' => $address,
                        'address2' => $address2,
                        'city' => $city,
                        'state' => $state,
                        'country_code' => $country,
                        'zip' => $zip
                    )
                    
                )
            );
    
            $personJson = json_encode($dataPerson);
            
            $ch = curl_init($urlBuscar);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $personJson);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json'
            ));
    
            $resultado = curl_exec($ch);
    
            if ($resultado === false) {
                error_log("[".$date."] Error al ejecutar la solicitud /api/v1/people/push: " . curl_error($ch));
            } else {
                $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            
                if ($httpCode == 200 || $httpCode == 201) {
                    $respuesta = json_decode($resultado, true);
    
                    if(isset($respuesta["person"]["id"])){
                        $idPerson = $respuesta["person"]["id"];
                        error_log("id person encontrado: ".$idPerson );

                        $hasTag = false;
                        $tags = $respuesta["person"]["tags"];

                                
                        foreach ($tags as $elemento) {
                            if ($tags == "MembresiaNueva24") {
                                $hasTag = true;
                                error_log("Tag encontrado");
                                break;
                            }
                        }

                        if($hasTag == false){
                            $urlTags = $url_base.'/api/v1/people/'.$idPerson.'/taggings'.'?access_token='.$tokenNB;
                                                    
                            $tagData = array(
                                'tagging' => array(
                                    'tag' => 'MembresiaNueva24'
                                )
                            );
        
                            
                            $tagJson = json_encode($tagData);
        
                            $ch = curl_init($urlTags);
                            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
                            curl_setopt($ch, CURLOPT_POSTFIELDS, $tagJson);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                                'Content-Type: application/json'
                            ));
        
                            $resultado = curl_exec($ch);
        
                            if ($resultado === false) {
                                error_log("[".$date."] Error al ejecutar la solicitud people/'.$idPerson.'/taggings: " . curl_error($ch));
                            } else {
                                $codigoRespuesta = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                                echo "Código de Respuesta: $codigoRespuesta\n";
                                echo "Cuerpo de la Respuesta: $resultado\n";
                            }
                        }

                            $urlDonacion = $url_base.'/api/v1/donations'.'?access_token='.$tokenNB;
                            $zona_horaria = date_default_timezone_get();
        
                            $fecha_actual = date('Y-m-d\TH:i:s', time()) . date('P');
        
                            $donacionData = array(
                                'donation' => array(
                                    'donor_id' => $idPerson,
                                    'amount_in_cents' => $amount*100,
                                    'payment_type_name' => 'Credit Card',
                                    'succeeded_at' => $fecha_actual,
                                    'page_slug' => $pageSlug,
                                    'custom_values' => array(
                                        'rfc' => $rfc,
                                        'direccion_fiscal' => isset($taxAddress) ? $taxAddress : null,
                                        'r_gimen_fiscal' => isset($taxRegime) ? $taxRegime : null,
                                        'uso_cfdi' => isset($cfdiUse) ? $cfdiUse : null
                                    )
                                )
                            );
        
                            
                            $donacionJson = json_encode($donacionData);
        
                            $ch = curl_init($urlDonacion);
                            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                            curl_setopt($ch, CURLOPT_POSTFIELDS, $donacionJson);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                                'Content-Type: application/json'
                            ));
        
                            $resultado = curl_exec($ch);
        
                            if ($resultado === false) {
                                error_log("[".$date."] Error al ejecutar la solicitud /donations: " . curl_error($ch));
                            } else {
                                $codigoRespuesta = curl_getinfo($ch, CURLINFO_HTTP_CODE);

                                echo "Código de Respuesta: $codigoRespuesta\n";
                                echo "Cuerpo de la Respuesta: $resultado\n";
                            }

                        if($isMembership == 1){
                            $urlMembresia = $url_base.'/api/v1/people/'.$idPerson.'/memberships?access_token='.$tokenNB;
                            $zona_horaria = date_default_timezone_get();
        
                            $fecha_actual = date('Y-m-d\TH:i:s', time()) . date('P');

                            $fechaExpiracion = new DateTime();

                            
                            $fechaExpiracion->modify('+1 year');


                            $fechaExpiracion = $fechaExpiracion->format('Y-m-d\TH:i:sP');

        
                            $membershipData = array(
                                'membership' => array(
                                    'name' => 'Aúna',
                                    'status' => 'active',
                                    'status_reason' => 'paid',
                                    'started_at' => $fecha_actual,
                                    'expires_on' => $fechaExpiracion
                                )
                            );
        
                            
                            $membresiaJson = json_encode($membershipData);
        
                            $ch = curl_init($urlMembresia);
                            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                            curl_setopt($ch, CURLOPT_POSTFIELDS, $membresiaJson);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                                'Content-Type: application/json'
                            ));
        
                            $resultado = curl_exec($ch);
        
                            if ($resultado === false) {
                                error_log("[".$date."] Error al ejecutar la solicitud: " . curl_error($ch));
                            } else {
                                $codigoRespuesta = curl_getinfo($ch, CURLINFO_HTTP_CODE);

                                echo "Código de Respuesta: $codigoRespuesta\n";
                                echo "Cuerpo de la Respuesta: $resultado\n";
                            }
                        }
    
                        
    
                    }else{
                        error_log("Hubo un erro al crear al usuario. Datos capturados: ".json_encode($dataPerson));
                    }
                } else {
                    // Hubo un error en la solicitud
                    error_log("[".$date."] Error en la solicitud. Código de respuesta HTTP: " . $httpCode);
                }
            }
            curl_close($ch);
        }catch(Exception $err){
            echo $err->getMessage();;
            error_log(print_r('error: '.$err->getMessage(), TRUE));
        }
        
        
        // Cierra la sentencia y la conexión
        
        $conn->close();
    }catch(Exception $error){
        echo $error->getMessage();
        error_log(print_r('[".$date."] error: '.$error->getMessage(), TRUE));
    }

?>