<?php

namespace App\Imports;

use App\{RFAspiranteHistoricoPagos,RFAlumnoHistoricoPagos};
use App\{RFAspirante,RFAlumno,RFLotePagos};

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

use App\{AlumnosAdmision};
use App\Mail\VaucherAspiranteAutorizado;
use App\Mail\VaucherAutorizado;
use App\Mail\VaucherRechazado;
use App\Mail\VaucherFichaAutorizado;
use App\Mail\VaucherDepartamento;
use Illuminate\Support\Facades\Mail;

use App\Traits\RF_ServiciosCorreo;

class ReferenciasCollectionImport implements ToCollection, WithHeadingRow {

    use RF_ServiciosCorreo;     //Trait para enviar correo al departamento correspondiente del pago autorizado 

    /**
    * @param Collection $collection
    */
    public function collection(Collection $rows)
    {
    	//dd($rows->first());
    	$cad = "";
    	$pv = $rows->first();
      //dd($pv);
      //Cuenta,Fecha,Hora,Sucursal,Descripción,Importe,Referencia,Concepto
    	if( !$pv->has('cuenta')){$cad.="<li>cuenta</li>"; }
      if( !$pv->has('fecha')){$cad.="<li>fecha</li>"; }
      if( !$pv->has('hora')){$cad.="<li>hora</li>"; }
      if( !$pv->has('sucursal')){$cad.="<li>sucursal</li>"; }
      if( !$pv->has('descripcion')){$cad.="<li>descripcion</li>"; }
      if( !$pv->has('importe')){$cad.="<li>importe</li>"; }
      if( !$pv->has('referencia')){$cad.="<li>referencia</li>"; }
      if( !$pv->has('concepto')){$cad.="<li>concepto</li>"; }
      
    	if ($cad!="") {
        $dato['mensaje'] = "Por favor, verifica que los siguientes encabezados correspondan: <ul>".$cad."</ul>";
        abort(406, json_encode($dato) )->header('Content-Type', 'application/json')->header('Content-Type', 'text/plain');
    		//abort(406, "Por favor, verifica que los siguientes encabezados correspondan: <ul>".$cad."</ul>" );
    	}
      $i = 0; $j=0;
      $persona = json_decode(session('persona'));
      $cel = [];
    	foreach ($rows as $row) 
      {
        $pag = null;
        $tip = null;
      	$now = new \DateTime();
        $fecha = str_replace("'", "", $row['fecha']);
        $fecha = substr($fecha, -4)."-".substr($fecha, 2,2)."-".substr($fecha, 0,2);

        $pag = RFLotePagos::whereHas('aspirante_pagos', function($query) use ($row, $fecha){
            $query->where('referencia', $row['referencia']);
            $query->where('importe', $row['importe']);
            $query->where('fecha_pago', 'LIKE', $fecha.'%');
            $query->where('fk_idEstado', '1');
            $query->whereHas('forma_pago.forma_pago_excel', function($query) use ($row){
              $query->where('descripcion', $row['descripcion']);
            });
          })->with('aspirante_pagos','servicios_pagados')->first();

        if ($pag!=null) {

          $tip = "aspirante";
          $n_comp = count($pag->aspirante_pagos);
          $band = 0;
          foreach ($pag->aspirante_pagos as $p) {
            if ($p->referencia==$row['referencia']) {
              $p->fk_idAutorizo=$persona->id;
              $p->fecha_autorizado=$now->format('Y-m-d H:i:s');
              
              if ($n_comp==1) { $p->fk_idEstado='2'; } 
              else { $p->fk_idEstado='4'; }
              
              $p->save();
              $j++;
            }

            if ($n_comp>1 && $p->fk_idEstado=='4' ) { $band++; } 
          }

          if ($band==$n_comp) {
            foreach ($pag->aspirante_pagos as $p) {
              $p->fk_idEstado='2';  
              $p->save();
            }
          }

          $alu = RFAspirante::where('id',$pag->aspirante_pagos[0]->fk_idAspirante)->first();
          $cel[] = str_replace(" ","",str_replace("-","",str_replace(")","",str_replace("(","",$alu->celular))));
          if ($n_comp==1 || $band ==$n_comp) {
            Mail::to($alu->correo)->send(new VaucherAutorizado($alu->nombre, $pag->servicios_pagados));
          }

          if ($alu->fk_idEstatus=='3') {
            $doc = AlumnosAdmision::where('folio',$alu->id)->first();
            $doc->pago='1';
            $doc->save();
          }
          
        } else {

          $pag = RFLotePagos::whereHas('alumno_pagos', function($query) use ($row, $fecha){
            $query->where('referencia', $row['referencia']);
            $query->where('importe', $row['importe']);
            $query->where('fecha_pago', 'LIKE', $fecha.'%');
            $query->where('fk_idEstado', '1');
            $query->whereHas('forma_pago.forma_pago_excel', function($query) use ($row){
              $query->where('descripcion', $row['descripcion']);
            });
          })->with('alumno_pagos','servicios_pagados')->first();

          if ($pag!=null) {
            $tip = 'alumno';
            $n_comp = count($pag->alumno_pagos);
            $band = 0;
            foreach ($pag->alumno_pagos as $p) {
              if ($p->referencia==$row['referencia']) {
                $p->fk_idAutorizo=$persona->id;
                $p->fecha_autorizado=$now->format('Y-m-d H:i:s');
                
                if ($n_comp==1) { $p->fk_idEstado='2'; } 
                else { $p->fk_idEstado='4'; }
                
                $p->save();
                $j++;
              }

              if ($n_comp>1 && $p->fk_idEstado=='4' ) { $band++; } 
            }

            if ($band==$n_comp) {
              foreach ($pag->alumno_pagos as $p) {
                $p->fk_idEstado='2';  
                $p->save();
              }
            }

            $alu = RFAlumno::where('id',$pag->alumno_pagos[0]->fk_idAlumno)->first();
            $cel[] = str_replace(" ","",str_replace("-","",str_replace(")","",str_replace("(","",$alu->celular))));
            if ($n_comp==1 || $band ==$n_comp) {
              Mail::to($alu->correo_institucional)->send(new VaucherAutorizado($alu->nombre, $pag->servicios_pagados));
            }
            
          }
        }

        if ($pag!=null)  {
          $band;
          
          
          if($tip=='alumno'){ 
            $band=$pag->alumno_pagos[0]->fk_idEstado; 
          } else {
            if($tip=='aspirante') { 
              $band=$pag->aspirante_pagos[0]->fk_idEstado; 
            }
          }


            if( $band==2 ) {
              
              foreach ($pag->servicios_pagados as $s) { //envia correo a los dif departamentos de acuerdo al concepto pagado
                
                $nombre = $alu->nombre." ".$alu->ap_paterno." ".$alu->ap_materno;
                $nc = $alu->id;
                $correo = $alu->correo;
                $vec_img = [];
                if ($tip=='alumno') {
                    foreach($pag->alumno_pagos as $pago){
                        //$vec_img[] ="https://portal.itzitacuaro.edu.mx/pago/nuevo/public/vaucher/2021-1/10650121.jpg";
                        $vec_img[]="https://portal.itzitacuaro.edu.mx/pago/nuevo/public/vaucher/".$pago->periodo->nombre."/".$pago->imagen;
                    }
                } else {
                    foreach($pag->aspirante_pagos as $pago){
                        //$vec_img[] ="https://portal.itzitacuaro.edu.mx/pago/nuevo/public/vaucher/2021-1/10650121.jpg";
                        $vec_img[]="https://portal.itzitacuaro.edu.mx/pago/nuevo/public/vaucher/".$pago->periodo->nombre."/".$pago->imagen;
                    }
                }

                //funcion q esta en el trait RF_ServiciosCorreo
                $res = $this->enviar_correo($nombre, $s, $nc, $vec_img, $correo, $s->fk_idServicio, $pag->id);
                if ($res=="_ok") { $res=""; }

              }
            }
        }
        
      	$i++;
        
      }
      $dato['celulares'] = $cel;
      $dato['mensaje'] = "Total de registros analizados: $i <br>Total de registros autorizados: $j";
      abort(406, json_encode($dato) )->header('Content-Type', 'application/json');         
    }

}
