<?php

namespace App\Imports;

use App\Accion;
use App\Partida;
use App\Presupuesto;
use App\DepartamentoLimite;
use App\{PresupuestoDetalle,AnioVigencia};
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\{ToCollection, WithHeadingRow};

class PresupuestoCollectionImport implements ToCollection, WithHeadingRow
{
    /**
    * @param Collection $collection
    */
    public function collection(Collection $rows)
    {
      $anio = AnioVigencia::orderBy('anio', 'desc')->first();

      $i = 1;
      foreach ($rows as $row) 
      {
      	$i++;
      	$accion = Accion::where('clave_completa', '=', $row['actividad'])->whereHas('indicador.proyecto.linea_accion.objetivo.eje', function($query) use ($anio){
            $query->where('fk_idAnioVigencia', $anio->anio);
        })->first();
        
      	if ($accion != null) {

      		$partida = Partida::where('id', $row['partida'])->first();
      		if ($partida==null) {
      			abort(406, "La partida de la linea #".$i." no esta registrada en la base de datos." )->header('Content-Type', 'text/plain');
      		}
      	
	      	$presupuesto = Presupuesto::where('departamento_id', '=', $row['clave_depto'])->where('accion_id', '=', $accion->id)->first();
	      	if ($presupuesto==null) {
	      		$presupuesto = Presupuesto::create(['anio_id'=>$anio->anio, 'departamento_id' => $row['clave_depto'], 'accion_id' => $accion->id ]);
	      	}
	      	
	       	$depto_limite = DepartamentoLimite::where('anio_id', $anio->anio)->where('departamento_id', '=', $row['clave_depto'])->first();
	       	//dd($depto_limite);
	       	$depto_limite->autorizado = $depto_limite->autorizado+$row['importe'];
	       	$depto_limite->limite = $depto_limite->limite+$row['importe'];
	       	$depto_limite->save();


	       	$detalle = PresupuestoDetalle::where('partida_id', '=', $row['partida'])->where('presupuesto_id', '=', $presupuesto->id )->first();
	       	if ($presupuesto!=null) {
	       		PresupuestoDetalle::create(['autorizado'=>$row['importe'], 'adecuado'=>$row['importe'], 'requisicion'=>'0', 'ejercido'=>'0', 'disponible'=>$row['importe'], 'estado'=>'1', 'partida_id'=>$row['partida'], 'presupuesto_id'=>$presupuesto->id  ]);
	       	} else {
	       		abort(406, "La partida de la linea #".$i." ya esta resgitrada para esa actividad del departamento." )->header('Content-Type', 'text/plain');
	       	}

	      } else {
	      	abort(406, "La actividad de la linea #".$i." no existe en la base de datos." )->header('Content-Type', 'text/plain');
	      }

      }


    }
}
