<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Storage;
use App\Http\Requests;
use Auth;
use DB;
use App\Configuracion as Configuracion;
use App\Pais as Pais;
use App\ExperienciaInvestigativa as ExperienciaInvestigativa;
use App\Http\Controllers\HelperController ;


class ExperienciaInvestigativaController 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;

      $experiencia_investigativa = ExperienciaInvestigativa::where('aspirantes_id', '=', $aspirante_id)->get();
      $paises = Pais::orderBy('nombre')->get();

      // Construimos un texto de "meses y días" para mostrar al usuario
      $experiencia_investigativa->transform(function ($item) {
        if ($item->fecha_inicio && $item->fecha_finalizacion) {
          $item->tiempo_meses_texto = app('App\Http\Controllers\ExperienciaLaboralController')
            ->experienciaMesesDiasTexto($item->fecha_inicio, $item->fecha_finalizacion);
        } else {
          $item->tiempo_meses_texto = $item->tiempo_meses . ' ' . ($item->tiempo_meses === 1 ? 'mes' : 'meses');
        }
        return $item;
      });

      $data = array(
        'aspirante_id' => $aspirante_id,
        'experiencias_investigativa' => $experiencia_investigativa,
        'paises' => $paises,
        'msg' => $msg,
        'count' => $count
      );
      return view('experiencia_investigativa', $data);
    }
    else{
      $data = array(
        'limit_date' => $configuracion['valor']
      );
      auth()->logout();
      return view('auth/timeout', $data);
    }
  }

  public function insert() {
    $input = Input::all();
    $id = Auth::user()->id;
    $userCode = Auth::user()->codigo;
    $today = new \DateTime('today');

    $fechaInicio = \DateTime::createFromFormat('Y-m-d', $input['fecha_inicio']);
    if (!$fechaInicio) {
      return $this->show_info("La fecha de inicio no tiene un formato válido.");
    }
    if ($fechaInicio > $today) {
      return $this->show_info("La fecha de inicio no puede estar en el futuro.");
    }

    if (!isset($input['en_curso'])) {
      return $this->show_info("Debe indicar si la vinculación está vigente.");
    }

    //Verificamos si el programa está en curso para no tener en cuenta la fecha de finalización
    if ($input['en_curso']==1) {
      $input['fecha_finalizacion'] =  (new \DateTime())->format('Y-m-d');
    } else {
      if (empty($input['fecha_finalizacion'])) {
        return $this->show_info("La fecha de finalización es obligatoria cuando la vinculación no está vigente.");
      }
      $fechaFinalizacion = \DateTime::createFromFormat('Y-m-d', $input['fecha_finalizacion']);
      if (!$fechaFinalizacion) {
        return $this->show_info("La fecha de finalización no tiene un formato válido.");
      }
      if ($fechaFinalizacion > $today) {
        return $this->show_info("La fecha de finalización no puede estar en el futuro.");
      }
      if ($fechaInicio > $fechaFinalizacion) {
        return $this->show_info("La fecha de inicio no puede ser superior a la fecha de finalización.");
      }
    }

    $aleatorio = rand(111111, 999999);
    $titulo = substr($input['nombre_proyecto'], 0, 12);
    $titulo = $titulo . $aleatorio;
    $titulo = str_replace(' ', '_', $titulo);
    //Guardamos el archivo de soporte adjunto si existe
    if (isset($input['adjunto'])) {
      $file = Input::file('adjunto');
      //$titulo = str_replace(' ', '_', $input['nombre_proyecto']);
      $file->move(public_path() . '/file/' . $userCode . '/experiencia_investigativa/' , $titulo . '.pdf');

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

    $input['aspirantes_id'] = $id;
    $input['tiempo_meses'] = app('App\Http\Controllers\ExperienciaLaboralController')->experienciaMeses($input['fecha_inicio'],$input['fecha_finalizacion']);

    $experiencia_investigativa = ExperienciaInvestigativa::create($input);
    if ($experiencia_investigativa->save()) {
      return $this->show_info("Se ingresó exitosamente la información de experiencia investigativa.");
    }
  }

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

    if ($experiencia_investigativa->ruta_adjunto) {
      Storage::delete($experiencia_investigativa->ruta_adjunto);
    }
    if ($experiencia_investigativa->delete()) {
      return $this->show_info("Se borró la información de la experiencia investigativa.");
    }else{
      return $this->show_info();
    }
  }

}
