<?php
include '../comunes_php/Log.class.php'; 
$log = new Log("app_trace", "./");
require 'utilities.php';
require 'phpword_lib.php';
require '../comunes_php/cors.php';
require '../comunes_php/dbconfig.php';

$rc = array();
require '../comunes_php/sendmail.php';



// Conectar la BD
$link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME) or die('Error de conexion con base de datos: ' . mysqli_connect_errno());
mysqli_set_charset($link,'utf8');


date_default_timezone_set('UTC');
error_reporting(E_ALL);

// Template processor instance creation
$template=TEMPLATE_DIR.DIRECTORY_SEPARATOR.pathinfo(__FILE__, PATHINFO_FILENAME).'.docx';
    $log->insert("Template usado:".$template, false, false, false);

$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($template);
    
// Arrays para guardar los productos y adicionales que luego se volcaran al template
$registro = array();
$data = array();

//mail para cliente
$i = 0;
$id = isset($_REQUEST['rs_id']) ? $_REQUEST['rs_id']: -1;
$log->insert("Contrato Nro = ".$id, false, false, false);
    
  
if ($id==-1) {
    $result = array(
                   "msg" => "No se selecciono contrato",
                   "estado" => false
            );
    echo json_encode($result);
    return;
            
}

// Busco el contrato
$sql= "SELECT * FROM `vw_contratos` where id= ".$id ; 

$resultado = mysqli_query($link, $sql);



while ($row= mysqli_fetch_array($resultado)) {

	$cliente = $row["cliente"];
	$para = $row["email"];
    $fecha_iniciado = date("d-m-Y", strtotime($row["fecha_iniciado"]));   ;
    $id = $row["id"];
    $total = $row["total"];
    $vendedor = $row["vendedor"];
    $tipo_envio = $row["tipo_envio"];
    $telefono_1 = $row["telefono_1"];
    $telefono_2 = $row["telefono_2"];
    $direccion = $row["direccion"];
    $email = $row["email"];
    $tarjeta = $row["tarjeta"];
    $subtotal = $row["subtotal"];
    $envio = $row["envio"];
    $armado = $row["armado"];
    $escalera = $row["escalera"];
    $demora = $row["demora"];
    $zona = $row["zona"];
    $total_pagos = $row["total_pagos"];
    $saldo = $row["saldo"];
    $alto = 2;
    $ancho = 1.2;
    $contacto = $row["contacto"];
    
    

    $horarios_en_sabado = $row["horarios_en_sabado"];
    $horarios_en_semana = $row["horarios_en_semana"];
    $forma_de_pago = ($tarjeta=='on'?'Pago con Tarjeta':'Pago Contado');
    $reclamo = "";

    
    // Pago con tarjeta
    if ($tarjeta == 'on') {
        $sql  = "select concat(cd.renglon_id,'.',p.id) id, p.nombre, 0 precio , format(cd.precio, 2,'de_DE') tarjeta, 0 cantidad, 0 subtotal, renglon_id, contrato_id  ";
        $sql .= "from contratos_detalle cd, productos p  ";
        $sql .= "where cd.producto_id = p.id  ";
        $sql .= "and cd.contrato_id = $id ";
        $sql .= "order by cd.renglon_id ";
        
    }
    else
    {
        // Pago al contado
        $sql  = "select concat(cd.renglon_id,'.',p.id) id, p.nombre, format(cd.precio, 2,'de_DE') precio, 0 tarjeta, 0 cantidad, 0 subtotal, renglon_id, contrato_id ";
        $sql .= "from contratos_detalle cd, productos p  ";
        $sql .= "where cd.producto_id = p.id  ";
        $sql .= "and cd.contrato_id = $id ";
        $sql .= "order by cd.renglon_id ";
        
        
    }
    
    $rs = mysqli_query($link, $sql);

    $item = array();
    
    // Bucle para recorrer el recordset de productos
    while($row = mysqli_fetch_object($rs)) {
      
        /* Agregado para armar la tabla de productos y adicionales */
        $registro['id'] = $row->id;
        $registro['adicional'] = '';
        $registro['producto'] = $row->nombre;
        
        $children = array();
        $item['id'] = $row->id;
        $item['nombre'] = $row->nombre;

        $item['preciounitario'] = $row->precio;
        $item['precio_tarjeta'] = $row->tarjeta;
        
        // Determina el precio a utilizar dependiendo del tipo de pago
        if($item['preciounitario'] <> '0') {
            $precio=' $'.$item['preciounitario'].'';
            $registro['importe'] = $item['preciounitario'];
        }

        if($item['precio_tarjeta'] <> '0') {
            $precio=' $'.$item['precio_tarjeta'].'';
            $registro['importe'] = $item['precio_tarjeta'];
        }
            
        $item['cantidad'] = 0;
        $item['subtotal'] = 0;
    
        // Guardo el registro con los productos recuperados
        array_push($data, $registro);

        // Busco los adicionales para el producto recuperado
        $sql2 = "select concat(cd.renglon_id,'.',cda.producto_id,'.',ap.id) id, ap.nombre  , format(cda.precio, 2,'de_DE') preciounitario , 0 cantidad, 0 subtotal from ";
        $sql2 .= "contratos_detalle cd,contrato_detalle_adicionales cda, adicionales ap ";
        $sql2 .= "where ";
        $sql2 .= "cd.contrato_id = cda.contrato_id AND ";
        $sql2 .= "cd.renglon_id = cda.renglon_id AND ";
        $sql2 .= "cd.producto_id = cda.producto_id AND ";
        $sql2 .= "cda.adicional_id = ap.id and  ";
        $sql2 .= "cd.contrato_id = $row->contrato_id and ";
        $sql2 .= "cd.renglon_id = $row->renglon_id ";
        $sql2 .= "order by id        ";
        
        $rs2 = mysqli_query($link, $sql2);
        
        if (mysqli_num_rows($rs2) > 0) {

            // Bucle para recuperar los adicionales
            while($row2 = mysqli_fetch_object($rs2)){

                /* Agregado para armar la tabla de productos y adicionales */
                $registro['id'] = $row2->id;
                $registro['adicional'] = $row2->nombre;
                $registro['importe'] = $row2->preciounitario;
                $registro['producto'] = "";

                array_push($data, $registro);
            }    

        }
            

    }
    //Hasta aca  contenido del presupuesto, es decir los productos y adicionales


    // Completar la tabla de productos y adicionales
    $rowcount = count($data);
    
    $templateProcessor->cloneRow('index', $rowcount);
    
   
    for ($j = 0; $j < $rowcount; $j++) {
        $indice = $j+1;
        $templateProcessor->setValue('index#'.$indice, $data[$j]['id']);
        $templateProcessor->setValue('producto#'.$indice, $data[$j]['producto']);
        $templateProcessor->setValue('adicional#'.$indice, $data[$j]['adicional']);
        $templateProcessor->setValue('importe#'.$indice, $data[$j]['importe']);


    }

    // Armo el nombre del archivo a grabar
    $filename = 'contrato_'.$id.'.docx';
    $fullFilename = 'generados'.DIRECTORY_SEPARATOR.$filename;


    $templateProcessor->setValue('cliente', $cliente);            
    $templateProcessor->setValue('fecha_iniciado', $fecha_iniciado);
    $templateProcessor->setValue('id', $id);
    $templateProcessor->setValue('vendedor', $vendedor);
    $templateProcessor->setValue('forma_de_pago', $forma_de_pago); 
    $templateProcessor->setValue('direccion', $direccion);
    $templateProcessor->setValue('horarios_en_sabado', $horarios_en_sabado);
    $templateProcessor->setValue('horarios_en_semana', $horarios_en_semana);
    $templateProcessor->setValue('demora', $demora);
    $templateProcessor->setValue('subtotal', $subtotal);
    $templateProcessor->setValue('armado', $armado);
    $templateProcessor->setValue('escalera', $escalera);
    $templateProcessor->setValue('envio', $envio);
    $templateProcessor->setValue('zona', $zona);
    $templateProcessor->setValue('alto', $alto);
    $templateProcessor->setValue('ancho', $ancho);
    $templateProcessor->setValue('contacto', $contacto);


    $templateProcessor->setValue('total', $total);
    $templateProcessor->setValue('total_pagos', $total_pagos); 
    $templateProcessor->setValue('saldo', $saldo); 
    
    $templateProcessor->saveAs($fullFilename);    


    // Descarga el archivo en el cliente
    //download_report($fullFilename);
    
$my_file = $filename;
$my_path = 'generados'.DIRECTORY_SEPARATOR;
$my_name = "DanyPlacard";
$my_mail = "parra.marcelo@gmail.com";
$my_replyto = $my_mail;
$my_subject = "Contrato DanyPlacard Nro $id";

$my_message=file_get_contents(TEMPLATE_DIR.DIRECTORY_SEPARATOR."email.html"); 
$my_message=str_replace("{cliente}",$cliente,$my_message);
$my_message=str_replace("{email}",$email,$my_message);
$my_message=str_replace("{id}",$id,$my_message);


//$my_message = "Estimado $cliente . Le enviamos adjunto el contrato Nro $id. ";
//$my_message .= 'Le enviamos el presupuesto para su revision y aceptación';


$resultado = mail_attachment($my_file, $my_path, $email, $my_mail, $my_name, $my_replyto, $my_subject, $my_message);   
 $log->insert($my_message, false, false, false); 


if ($resultado) {
$rc["msg"] = "Mail enviado correctamente a $cliente  a su direccion $email";
$rc["estado"]=true;
    
} else
{
$rc["msg"] = "Mail no enviado, ocurrio un error";
$rc["estado"]=false;
    
}


     echo json_encode($rc);    
     
    //  $log->insert(json_encode($rc), false, false, false);            
               
    // Borra el archivo generado
    //unlink($fullFilename); 
}

