<?php

namespace App\Imports;

use App\Eje;
use App\Accion;
use App\Objetivo;
use App\Proyecto;
use App\Indicador;
use App\LineaAccion;
use App\AnioVigencia;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\{ToCollection, WithHeadingRow};

class PtaCollectionImport implements ToCollection, WithHeadingRow
{
    /**
    * @param Collection $collection
    */
    public function collection(Collection $rows)
    {
      $anio = AnioVigencia::orderBy('anio', 'desc')->first();
      if ($anio->folioRequisicion!='1') {
        abort(406, "Por favor, verifica que este vigente el año" )->header('Content-Type', 'text/plain');
      }
    	//dd($rows->first()->get());
    	$cad = "";
    	$pv = $rows->first();
    	if( !$pv->get('eje_clave_interna')){$cad.="<li>eje_clave_interna</li>"; }
    	if( !$pv->get('eje_clave_externa')){$cad.="<li>eje_clave_externa</li>"; }
    	if( !$pv->get('eje')){$cad.="<li>eje</li>"; }
    	if( !$pv->get('objetivo_clave_interna')){$cad.="<li>objetivo_clave_interna</li>"; }
    	if( !$pv->get('objetivo_clave_externa')){$cad.="<li>objetivo_clave_externa</li>"; }
    	if( !$pv->get('objetivo')){$cad.="<li>objetivo</li>"; }
    	if( !$pv->get('no_linea_accion_interno')){$cad.="<li>no_linea_accion_interno</li>"; }
    	if( !$pv->get('no_linea_accion_externo')){$cad.="<li>no_linea_accion_externo</li>"; }
    	if( !$pv->get('linea_accion')){$cad.="<li>linea_accion</li>"; }
    	if( !$pv->get('no_proyecto_interno')){$cad.="<li>no_proyecto_interno</li>"; }
    	if( !$pv->get('no_proyecto_externo')){$cad.="<li>no_proyecto_externo</li>"; }
    	if( !$pv->get('proyecto')){$cad.="<li>proyecto</li>"; }
    	if( !$pv->get('no_indicador')){$cad.="<li>no_indicador</li>"; }
      if( !$pv->get('indicador')){$cad.="<li>indicador</li>"; }
    	if( !$pv->get('unidad_de_medida')){$cad.="<li>unidad_de_medida</li>"; }
    	if( !$pv->get('no_accion_interno')){$cad.="<li>no_accion_interno</li>"; }
    	if( !$pv->get('no_accion_externo')){$cad.="<li>no_accion_externo</li>"; }
    	if( !$pv->get('accion')){$cad.="<li>accion</li>"; }
    	if( !$pv->get('meta')){$cad.="<li>meta</li>"; }
    	if( !$pv->get('indicador_interno')){$cad.="<li>indicador_interno</li>"; }
    	if( !$pv->get('medio_verificacion')){$cad.="<li>medio_verificacion</li>"; }
    	if( !$pv->get('clave_completa')){$cad.="<li>clave_completa</li>"; }
    	
    	if ($cad!="") {
    		abort(406, "Por favor, verifica que los siguientes encabezados correspondan: <ul>".$cad."</ul>" )->header('Content-Type', 'text/plain');
    	}

    	foreach ($rows as $row) 
      {

      	$eje = Eje::where('descripcion', '=', $row['eje'])->where('fk_idAnioVigencia', '=', $anio->anio)->first();
      	if ($eje==null) {
      		$eje = Eje::create([ 'clave_interna' => $row['eje_clave_interna'], 'descripcion' => $row['eje'], 'fk_idAnioVigencia' => $anio->anio ]);
      	}
      	$idEje = $eje->id;

      	$objetivo = Objetivo::where('descripcion', '=', $row['objetivo'])->where('fk_idEje', '=', $idEje)->first();
      	if ($objetivo==null) {
      		$objetivo = Objetivo::create(['clave_interna'=> $row['objetivo_clave_interna'], 'clave_externa'=>$row['objetivo_clave_externa'], 'descripcion'=>$row['objetivo'], 'fk_idEje'=>$idEje ]);
      	}
      	$idObjetivo = $objetivo->id;

      	$linea = LineaAccion::where('descripcion', '=', $row['linea_accion'])->where('fk_idObjetivo','=', $idObjetivo)->first();
      	if ($linea==null) {
      		$linea = LineaAccion::create(['clave_interna'=>$row['no_linea_accion_interno'], 'clave_externa'=>$row['no_linea_accion_externo'], 'descripcion'=>$row['linea_accion'], 'fk_idObjetivo'=>$idObjetivo]);
      	}
      	$idLinea = $linea->id;

      	$proyecto = Proyecto::where('descripcion', '=', $row['proyecto'])->where('fk_idLineaAccion','=', $idLinea)->first();
      	if ($proyecto==null) {
      		$proyecto = Proyecto::create(['clave_interna'=>$row['no_proyecto_interno'], 'clave_externa'=>$row['no_proyecto_externo'], 'descripcion'=>$row['proyecto'], 'fk_idLineaAccion'=>$idLinea]);
      	}
      	$idProyecto = $proyecto->id;

      	$indicador = Indicador::where('indicador', '=', $row['indicador'])->where('fk_idProyecto','=', $idProyecto)->first();
      	if ($indicador==null) {
      		$indicador = Indicador::create(['no_indicador'=>$row['no_indicador'], 'indicador'=>$row['indicador'], 'unidad_medida'=>$row['unidad_de_medida'], 'meta'=>$row['meta'], 'indicador_interno'=>$row['indicador_interno'], 'medio_verificacion'=>$row['medio_verificacion'], 'fk_idProyecto'=>$idProyecto ]);
      	}
      	$idIndicador = $indicador->id;

      	$accion = Accion::create(['clave_interna'=>$row['no_accion_interno'], 'clave_externa'=>$row['no_accion_externo'], 'clave_completa'=>$row['clave_completa'], 'descripcion'=>$row['accion'], 'fk_idIndicador'=>$idIndicador ]);
          
      }

      $insertado = DB::insert("insert into departamento_limite select null, 0, 0, 0, '".$anio->anio."', id, now(), now() from departamento where estado='1'; ");
                
    }

}
