<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Storage;
use Auth;
use DB;
use App\Configuracion as Configuracion;
use App\Estudio as Estudio;
use App\Pais as Pais;
use App\Perfil as Perfil;
use App\Nivel as Nivel;
use App\Http\Controllers\HelperController ;

class EstudioController extends Controller {

    public function show_info($msg = null) {
		$configuracion = Configuracion::where('llave', '=', 'limit_date')->first();
		if (strtotime($configuracion['valor']) >  (time()- 5 * 3600) || Auth::user()->isAdmin()) {
			$aspirante_id = Auth::user()->id;
			//Contamos la cantidad de registros de cada tipo de formulario para visualizarlos en las pestañas
			//de la plantilla (main.blade.php)
			$objeto = new HelperController();
			$count = $objeto->menu($aspirante_id);

			$user_email = Auth::user()->email;

			$estudios_info = Estudio::where('aspirantes_id', '=', $aspirante_id)->get();
			$perfiles_seleccionados_info = Perfil::leftJoin('aspirantes_perfiles','perfiles.id','=','perfiles_id')
					->leftJoin('aspirantes','aspirantes.id','=','aspirantes_id')
					->where('aspirantes.id','=',$aspirante_id)->get();

			//Si no hay entrada de adjunto válida, se crea una entrada con el id de usuario, por lo tanto, cambiamos el enlace para no mostrar esta información
			foreach ($estudios_info as $cur_estudio_key=>$cur_estudio) {
				if (preg_match("/^[0-9]+$/", $cur_estudio["ruta_adjunto"])) {            //La expresión regular para los ids autonuméricos
					$estudios_info[$cur_estudio_key]["ruta_adjunto"]=null;
				}
			}

			$paises = Pais::orderBy('nombre')->get();
      		$niveles = Nivel::orderBy('id')->get();
			$data = array(
				'aspirante_id' => $aspirante_id,
				'estudios' => $estudios_info,
				'perfiles_seleccionados' => $perfiles_seleccionados_info,
        		'niveles' => $niveles,
        		'nivel' => $niveles,
				'paises' => $paises,
				'msg' => $msg,
				'count' => $count
			);
			return view('estudio', $data);
		}
		else{
			$data = array(
				'limit_date' => $configuracion['valor']
			);
			auth()->logout();
			return view('auth/timeout', $data);
		}
    }

    public function insert() {
        $input = Input::all();
        $msg = null;
		$id = Auth::user()->id;
		$userCode = Auth::user()->codigo;

		//Si el país seleccionado es Colombia, eliminamos los soportes de convalidación
		if (isset($input['paises_id']) && $input['paises_id'] == 57) {
			unset($input['additional_attatchments']);
			unset($input['adjunto_entramite_minedu']);
			unset($input['adjunto_res_convalidacion']);
		}

        //Efectuamos las operaciones sobre los archivos adjuntos
		$aleatorio = rand(111111, 999999);
		$titulo = substr($input['titulo'], 0, 12);
		$titulo = $titulo . $aleatorio;
		$titulo = str_replace(' ', '_', $titulo);
		//Guardamos el adjunto de soporte si existe
		if (isset($input['adjunto'])) {
			$file = Input::file('adjunto');
			//$titulo = str_replace(' ', '_', $input['titulo']) . '_' . str_replace(' ', '_', $input['institucion']);
			$file->move(public_path() . '/file/' . $userCode . '/estudios/' , $titulo . '_soporte.pdf');

			$input['ruta_adjunto'] = 'file/' . $userCode . '/estudios/' . $titulo . '_soporte.pdf';
			unset($input['adjunto']);
		}

        //Guardamos el soporte de tramite ante el Min Edu si existe
        if (isset($input['adjunto_entramite_minedu'])) {
			$file = Input::file('adjunto_entramite_minedu');
			//$titulo = str_replace(' ', '_', $input['titulo']);
			$file->move(public_path() . '/file/' . $userCode . '/estudios/' , $titulo . '_entramite.pdf');

			$input['ruta_entramite_minedu'] = 'file/' . $userCode . '/estudios/' . $titulo . '_entramite.pdf';
			unset($input['adjunto_entramite_minedu']);
        }

        //Guardamos la resolución de convalidación del MinEdu para el título internacional si existe
        // El archivo viene con el nombre 'additional_attatchments' desde el formulario
        if (Input::hasFile('additional_attatchments')) {
			$file = Input::file('additional_attatchments');
			$file->move(public_path() . '/file/' . $userCode . '/estudios/' , $titulo . '_convalidacion.pdf');

			$input['ruta_res_convalidacion'] = 'file/' . $userCode . '/estudios/' . $titulo . '_convalidacion.pdf';
        }
        
        // Eliminamos el campo adicional_attatchments del input antes de guardar
        unset($input['additional_attatchments']);

        //Guardamos los datos
        $input['aspirantes_id'] = $id;
        $estudio = Estudio::create($input);
        if ($estudio->save()) {
            return $this->show_info("Se ingresó exitosamente la información de estudios.");
        }
    }

    public function delete() {
        $input = Input::all();
        $estudio = Estudio::find($input["id"]);

		if ($estudio->ruta_adjunto) {
			Storage::delete($estudio->ruta_adjunto);
		}
		if ($estudio->ruta_entramite_minedu) {
			Storage::delete($estudio->ruta_entramite_minedu);
		}
		if ($estudio->ruta_res_convalidacion) {
			Storage::delete($estudio->ruta_res_convalidacion);
		}

        //Borramos el registro en base de datos
        if ($estudio->delete()) {
            return $this->show_info("Se borró la información de estudio.");
        }
    }
}
