<?php
namespace App\Http\Controllers;

use App\Custom\SQLConnection;
use App\Custom\Misc;

use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Request;

use DateTime;
use Illuminate\Support\Facades\Input;

class MaintenanceController extends Controller {

	private function headerPDF($seccion, $tabla) {
		$header = view('exportar/css')->render();
		$fidelitas = Misc::obtenerImagenFidelitas();
		$func = $tabla . 'TR';
		//print_r($func); die(); 
		$header .= '<img src="' . $fidelitas . '"  class="text-left">';
		$header .=
			'<div class="col-md-12 title-report background-fidelitas" style="margin-top:10px;padding:5px;">
 	 		<div class="col-md-12 col-sm-12 col-xs-12 text-center" id="nc" style="padding: 5px;">
  			Mantenimiento de ' . $seccion . '
  		</div>
  	</div>
  	<div class="col-md-12 col-sm-12 col-xs-12 text-center">
			<table class="table" style="margin-top:10px;">' . $this->$func();
		return $header;
	}

	private function cendeuTR() {
		$resp = '<tr>
			<td>Banco</td>
			<td>Periodo</td>
			<td>Situacion</td>
			<td>Monto (en miles)</td>
			</tr>';
		return $resp;
	}
	private function cendeu_cancelaTR() {
		$resp = '<tr>
			<td>Fecha</td>
			<td>Evento</td>
			<td>Banco</td>
			<td>Desde</td>
			<td>Hasta</td>
			</tr>';
		return $resp;
	}
	private function sircrebTR() {
		$resp = '<tr>
			<td>Fecha</td>
			<td>Desde</td>
			<td>Hasta</td>
			</tr>';
		return $resp;
	}
	private function arbaTR() {
		$resp = '<tr>
			<td>Impuesto</td>
			<td>Objeto</td>
			<td>Nro Interno</td>
			<td>Fecha Inicio Juicio</td>
			<td>Importe Deuda</td>
			<td>Fecha Cancelacion</td>
			<td>Fecha Plan de Pagos</td>
			<td>Cancelacion Juicio</td>
			<td>Estado Medida Cautelar</td>
			<td>Estado de Plan de Pagos</td>
			</tr>';
		return $resp;
	}

	private function balances_contablesTR() {
		$resp = '<tr>
			<td></td>
			<td>fecha</td>
			</tr>';
		return $resp;
	}

	private function juiciosTR() {
		$resp = '<tr>
			<td>Fecha</td>
			<td>Causa</td>
			<td>CUIT Actor</td>
			<td>Nombre Actor</td>
			</tr>';
		return $resp;
	}

	private function chequesbcraTR() {
		$resp = '<tr>
			<td>CUIT Firmante</td>
			<td>CUIT Relacionado</td>
			<td>Nro Cheque</td>
			<td>Importe</td>
			<td>Fecha de Rechazo</td>
			<td>Fecha de Pago de Multa</td>
			<td>Fecha de Levantamiento</td>
			</tr>';
		return $resp;
	}

	private function batchHtml($html) {
		$resp = '
			<tr>' . $html . '</tr>';
		return $resp;
	}

	private function footerPDF() {
		$footer = "</table></div>";
		return $footer;
	}

	public function obtenerNovedades() {
		$client_id = Session::get('usuario')->cliente['client_id'];
		$novedades = SQLConnection::obtenerNovedadesCliente($client_id);
		foreach ($novedades as $nov) {
			$nov->tipo_novedad = str_replace('_', ': ', $nov->tipo_novedad);
		}
		$cuit = Request::input('cuit');
		return View('mantenimiento/novedades')
			->with(compact('novedades', 'cuit'));
	}

	public function obtenerHistorial() {
		$client_id = Session::get('usuario')->cliente['client_id'];
		$cuit = Request::input('cuit');
		return View('mantenimiento/historial')
			->with(compact('cuit', 'novedades'));
	}

	public function obtenerNovedadPDF() {
		$cuit = Request::input('cuit');
		$seccion_mantenimiento = Request::input('seccion_mantenimiento');
		$tipo_novedad = Request::input('tipo_novedad');
		$tabla = Request::input('tabla');
		//print_r($cuit); print_r($seccion_mantenimiento); print_r($tabla); die(); 
		$resultados = SQLConnection::obtenerNovedadesHTML($cuit, $seccion_mantenimiento, $tabla);
		$html = '';
		$html .= $this->headerPDF($tipo_novedad, $tabla);
		foreach ($resultados as $resultado) {
			$html .= $this->batchHtml($resultado->html);
		}
		$html .= $this->footerPDF();
		$file_html = '/var/www/html/fidelitas/public/documentos/temp/novedad.html';
		file_put_contents($file_html, $html);
		$file_download = '/var/www/html/fidelitas/public/documentos/temp/novedad.pdf';
		return $this->exportarPDF($html, $file_html, $file_download, $cuit, $seccion_mantenimiento);
	}

	public function obtenerResultadoHistorial() {
		$id_usuario = Session::get('usuario')->user_id;
		$resultados = [];
		$cuit = Request::input('cuit');
		$fecha_desde = Request::input('fecha_desde');
		$fecha_hasta = Request::input('fecha_hasta');
		$resultados = SQLConnection::obtenerHistoricoMonitoreo($id_usuario, $fecha_desde, $fecha_hasta, $cuit);
		$vista = View('mantenimiento/resultado_historico')->with(compact('resultados'))->render();
		return \Response::json(
			array(
				'view' => $vista
			)
			, 200, [], JSON_NUMERIC_CHECK);

	}

	private function exportarPDF($html, $file_html, $file_download, $cuit, $seccion) {
		exec("/usr/local/bin/wkhtmltopdf -d 300 -L 10 -R 10 -T 10 -B 10 --header-font-size 8 --header-right ' [page] de [toPage]'  --viewport-size 1920x1080 --zoom 1 " . $file_html . " " . $file_download);
		exec('exiftool -all= '.$file_download);
		header('Content-Transfer-Encoding: binary');
		header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($file_download)) . ' GMT');
		header('Accept-Ranges: bytes');
		header('Content-Length: ' . filesize($file_download));
		header('Content-Encoding: none');
		header('Content-Type: application/pdf');
		header('Content-Disposition: attachment; filename=' . $cuit . '_' . $seccion . '_' . date("Y-m-d") . '.pdf');
		readfile($file_download);
		chmod($file_download, 0777);
	}

	// Metodos importados de MAINcontroller

	public function eliminarMonitoreo() {
		$id_mantenimiento = Request::input('id_mantenimiento');
		$resp = SQLConnection::eliminarMonitoreoId($id_mantenimiento);
		return 'ok';
	}

	public function monitorearCuit() {
		$usuario = Session::get('usuario');
		$id_usuario = $usuario->user_id;
		$cuit = Request::input('cuit_mantenimiento');
		SQLConnection::consumirServicio($id_usuario, $cuit, ENV('ID_MONITOREO'));
		$secciones_db = SQLConnection::obtenerSeccionesEnMantenimientoUsuarioCuit($id_usuario, $cuit);
		$secciones = Request::input('seccion');
		$fecha_vigencia = Request::input('date');
		$id_cliente = $usuario->cliente['client_id'];
		$borrar_secciones = [];
		foreach ($secciones_db as $seccion_db) {
			if (!in_array($seccion_db->seccion_mantenimiento, $secciones)) {
				$borrar_secciones[] = $seccion_db->seccion_mantenimiento;
			}
		}
		foreach ($borrar_secciones as $seccion) {
			$resp = SQLConnection::eliminarMonitoreo($cuit, $id_usuario, $id_cliente, $seccion, $fecha_vigencia);
		}
		foreach ($secciones as $seccion) {
			$resp = SQLConnection::monitorearCuit($cuit, $id_usuario, $id_cliente, $seccion, $fecha_vigencia);
		}
		return $resp->existe;
	}

	public function monitorearCheques() {
		$usuario = Session::get('usuario');
		$cuit = Request::input('cuit');
		$id_usuario = $usuario->user_id;
		$id_cliente = $usuario->cliente["client_id"];
		$numero_cheque = Request::input('numero_cheque');
		$fecha_cheque = Request::input('fecha_cheque');
		$importe = Request::input('importe');
		$id_banco = Request::input('id_banco');
		$resp = SQLConnection::monitorearCheques($cuit, $id_usuario, $id_cliente, $numero_cheque, $fecha_cheque, $importe, $id_banco, 99);
		return $resp->existe;
	}

	public function obtenerMonitoreo() {
		$id_usuario = Session::get('usuario')->user_id;
		$client_id = Session::get('usuario')->cliente["client_id"];
		$secciones_en_mantenimiento = SQLConnection::obtenerSeccionesEnMantenimientoUsuarioCuit($id_usuario, null);
		foreach ($secciones_en_mantenimiento as $key => $value) {
			$secciones_en_mantenimiento[$key] = $value->seccion_mantenimiento;
		}
		$user_id = Session::get('usuario')->user_id;
		$cheques = SQLConnection::listadoMantenimientoCheques($client_id);
		$cuits = SQLConnection::listadoMantenimientoCuits($client_id);
		$secciones = SQLConnection::obtenerSeccionesMantenimiento($client_id);
		$entidades_bancarias = SQLConnection::obtenerEntidadesBancarias();
		return \View::make('mantenimiento/index')->with(compact('cheques', 'cuits', 'entidades_bancarias', 'secciones', 'secciones_en_mantenimiento'))->render();

	}
}