<?php

namespace App\Http\Controllers;

use App\Departamento;
use App\DepartamentoPuesto;
use App\DetalleReporteFinalEvaluacionAcreditacion;
use App\detalleReporteFinalEvaluacionAcreditacionRenglon;
use App\Docente;
use App\DocenteEvaluacionA;
use App\Encabezadopie;
use App\FirmarEA;
use App\Materia;
use App\ObservacionesEA;
use App\ReporteFinalEvaluacionAcreditacion;
use App\TotalReporteFinalEvaluacionAcreditacion;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Barryvdh\DomPDF\Facade\Pdf;

class EvaluacionyAcreditacionController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('docente.reporte_final_evaluacion_acreditacion.listar');
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        $data = $request->all();
        $cd = Docente::with('AsignacionMateria.materia.MateriaCarrera.carrera')->where('id', $data['docente'])->first();
        $qry = "Select count(*) as ate from ins_asigdocmat where id=" . $data['docente'];
        $qry2 = "Select amd.cve_mat, count(*) as no_rep from view_personal d join  ins_asigdocmat amd on d.id=amd.id group by amd.cve_mat having count(*)=1";
        $repe = DB::select($qry);
        $dif = DB::select($qry2);
        if ($dif != []) {
            $repe = intval($repe[0]->ate);
        }
        if ($dif != []) {
            $dif = intval($dif[0]->no_rep);
        }
        return view('docente.reporte_final_evaluacion_acreditacion.nuevo', compact('cd', 'repe', 'dif'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {

        $enca = Encabezadopie::max('cve_encpie');
        $enca = Encabezadopie::where('cve_encpie', $enca)->first();
        $usuario = json_decode($_COOKIE['crs']);
        $data = $request->all();
        if (isset($data['ea'])) {
            $ead = ReporteFinalEvaluacionAcreditacion::where('cve_repfea', intval($data['ea']))->first();
            $idD = DocenteEvaluacionA::where('cve_repfea', intval($data['ea']))->first();
            $dD = Docente::where('id', $idD->id)->first();
            $nombreC = $dD->nombre . " " . $dD->apellido_paterno . " " . $dD->apellido_materno;
        }else{
        $renglonfea = json_decode($data['renglon']);
        $totfea = json_decode($data['totales']);
        $d = Docente::where('id', $data['docente'])->first();
        $nombreC = $d->nombre . " " . $d->apellido_paterno . " " . $d->apellido_materno;
        }
        if ($data['estado'] == 2) {
            $oea = ObservacionesEA::where('cve_repfea', $ead->cve_repfea)->first();
            if ($oea != null) {
                $o = $oea->cve_obrfea;
                $ea = ObservacionesEA::findOrFail($o);
                $ea->status_rfea = 1;
            }
            $ea->save();
            $rfe = ReporteFinalEvaluacionAcreditacion::findOrFail($data['ea']);
            $rfe->estado_repfea = $data['status'];
            $rfe->save();
            $evea = ReporteFinalEvaluacionAcreditacion::where('cve_repfea', intval($data['ea']))->first();
            $fecha = $evea->updated_at;
            $fechaAct = Carbon::now();
            $fechaAct = $fechaAct->format('Y-m-d');
            FirmarEA::create(['fechadocente_firfea' => $fecha, 'fechajefe_firfea' => $fechaAct, 'qrdocente_firfea' => $nombreC, 'qrjefe_firfea' => $usuario->idDP, 'cve_repfea' => $evea->cve_repfea,]);
            return response()->json(['estado' => 'Exito', 'mensaje' => 'El Reporte de Evaluación y Acreditación a sido aceptado!', 'jefe' => 1]);
        } else {
            if ($data['estado'] == 0) {
                $rfea = ReporteFinalEvaluacionAcreditacion::create(['fechaIni_repfea' => $data['fechaIni'], 'fechaFin_repfea' => $data['fechaFin'], 'nogrupaten_repfea' => $data['numGrupA'], 'noasigdif_repfea' => $data['numAsigD'], 'status_repfea' => $data['estado'], 'estado_repfea' => $data['status'], 'id' => $data['docente'], 'id_dep' => $data['depto']]);
                $renglonfea = json_decode($data['renglon']);
                foreach ($renglonfea as $r) {
                    $rengonR = DetalleReporteFinalEvaluacionAcreditacion::create(['noEst_detrep' => $r->a, 'noEstUa_detrep' => $r->bu, 'noEstSa_detrep' => $r->bd, 'noEstEsp_detrep' => $r->be, 'pAcre_detrep' => $r->c, 'noEstNoA_detrep' => $r->d, 'pNAcre_detrep' => $r->e, 'noEstDe_detrep' => $r->vf, 'pEstDe_detrep' => $r->g, 'cve_mat' => $r,]);
                    detalleReporteFinalEvaluacionAcreditacionRenglon::create(['cve_detrep' => $rfea->cve_repfea, 'cve_repfea' => $rengonR->cve_repfea,]);
                }
                $totfea = json_decode($data['totales']);
                foreach ($totfea as $tf) {
                    $total = TotalReporteFinalEvaluacionAcreditacion::create(['ta_totfea' => $tf->tota, 'tpa_totfea' => $tf->totbu, 'tsa_totfea' => $tf->totdb, 'tesp_totfea' => $tf->totbesp, 'tc_totfea' => $tf->totc, 'td_totfea' => $tf->totd, 'te_totfea' => $tf->tote, 'tf_totfea' => $tf->totf, 'tg_totfea' => $tf->totg, 'cve_repfea' => $rfea->cve_repfea]);
                }
                $fecha = $rfea->updated_at;
                $fechaAct = Carbon::now();
                $fechaAct = $fechaAct->format('Y-m-d');
                FirmarEA::create(['fechadocente_firfea' => $fecha, 'fechajefe_firfea' => $fechaAct, 'qrdocente_firfea' => $nombreC, 'qrjefe_firfea' => $usuario->idDP, 'cve_repfea' => $rfea->cve_repfea,]);
                return response()->json(['estado' => 'Exito', 'mensaje' => 'Reporte de Evaluación y Acreditación a sido Entregada!']);
            } else {
                $rfea = ReporteFinalEvaluacionAcreditacion::create(['fechaIni_repfea' => $data['fechaIni'], 'fechaFin_repfea' => $data['fechaFin'], 'nogrupaten_repfea' => $data['numGrupA'], 'noasigdif_repfea' => $data['numAsigD'], 'status_repfea' => $data['estado'], 'estado_repfea' => $data['status'], 'id' => $data['docente'], 'id_dep' => $data['depto']]);
                DocenteEvaluacionA::create(['cve_repfea' => $rfea->cve_repfea, 'cve_encpie' => $enca->cve_encpie, 'id' => $data['docente']]);
                foreach ($renglonfea as $r) {
                    $rengonR = DetalleReporteFinalEvaluacionAcreditacion::create(['noEst_detrep' => $r->a, 'noEstUa_detrep' => $r->bu, 'noEstSa_detrep' => $r->bd, 'noEstEsp_detrep' => $r->be, 'pAcre_detrep' => $r->c, 'noEstNoA_detrep' => $r->d, 'pNAcre_detrep' => $r->e, 'noEstDe_detrep' => $r->vf, 'pEstDe_detrep' => $r->g, 'cve_mat' => $r->asig,]);
                    detalleReporteFinalEvaluacionAcreditacionRenglon::create(['cve_detrep' => $rengonR->cve_detrep, 'cve_repfea' => $rfea->cve_repfea,]);
                }
                foreach ($totfea as $tf) {
                    $total = TotalReporteFinalEvaluacionAcreditacion::create(['ta_totfea' => $tf->tota, 'tpa_totfea' => $tf->totbu, 'tsa_totfea' => $tf->totbd, 'tesp_totfea' => $tf->totbesp, 'tc_totfea' => $tf->totc, 'td_totfea' => $tf->totd, 'te_totfea' => $tf->tote, 'tf_totfea' => $tf->totf, 'tg_totfea' => $tf->totg, 'cve_repfea' => $rfea->cve_repfea]);
                }
                return response()->json(['estado' => 'Exito', 'mensaje' => 'Reporte de Evaluación y Acreditación Registrada como Borrador!']);
            }
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(Request $request, $id)
    {
        $data = $request->all();

        if ($data != []) {
            $jefe = 1;
            $firma = FirmarEA::where('cve_repfea', $id)->first();
            $ea = ReporteFinalEvaluacionAcreditacion::with('personal')->where('cve_repfea', $id)->first();
            $rengea = detalleReporteFinalEvaluacionAcreditacionRenglon::with('Detallerep.materia')->whereHas('reportefea', function ($query) use ($id) {
                $query = $query->where('cve_repfea', $id);
            })->get();
            $totea = TotalReporteFinalEvaluacionAcreditacion::where('cve_repfea', $id)->first();
            return view('docente.reporte_final_evaluacion_acreditacion.consultar', compact('ea', 'rengea', 'totea', 'jefe', 'firma'));
        } else {
            $ea = ReporteFinalEvaluacionAcreditacion::with('personal')->where('cve_repfea', $id)->first();
            $rengea = detalleReporteFinalEvaluacionAcreditacionRenglon::with('Detallerep.materia')->whereHas('reportefea', function ($query) use ($id) {
                $query = $query->where('cve_repfea', $id);
            })->get();
            $totea = TotalReporteFinalEvaluacionAcreditacion::where('cve_repfea', $id)->first();
            return view('docente.reporte_final_evaluacion_acreditacion.consultar', compact('ea', 'rengea', 'totea'));
        }
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $observacion = ObservacionesEA::where('cve_repfea', $id)->first();
        $ea = ReporteFinalEvaluacionAcreditacion::with('personal')->where('cve_repfea', $id)->first();
        $rengea = detalleReporteFinalEvaluacionAcreditacionRenglon::with('Detallerep.materia')->whereHas('reportefea', function ($query) use ($id) {
            $query = $query->where('cve_repfea', $id);
        })->get();
        $totea = TotalReporteFinalEvaluacionAcreditacion::where('cve_repfea', $id)->first();
        return view('docente.reporte_final_evaluacion_acreditacion.modificar', compact('ea', 'rengea', 'totea', 'observacion'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $data = $request->all();
        if ($data['estado'] == 1) {
            if ($data['status'] === "Entregado") {
                $obs=ObservacionesEA::where('cve_repfea',$id)->where('status_rfea',1)->first();
                if($obs!=null){
                    $o=ObservacionesEA::findOrFail($obs->cve_obrfea);
                    $o->status_rfea=0;
                    $o->save();
                }
                $evaluaciona = ReporteFinalEvaluacionAcreditacion::findOrFail($id);
                $evaluaciona->fechaIni_repfea = $data['fechaIni'];
                $evaluaciona->fechaFin_repfea = $data['fechaFin'];
                $evaluaciona->nogrupaten_repfea = $data['numGrupA'];
                $evaluaciona->noasigdif_repfea = $data['numAsigD'];
                $evaluaciona->estado_repfea = $data['status'];
                $evaluaciona->save();
                $totfea = json_decode($data['totales']);
                $total = TotalReporteFinalEvaluacionAcreditacion::where('cve_repfea', $id)->first();
                $totalea = TotalReporteFinalEvaluacionAcreditacion::findOrFail($total->cve_totfea);

                foreach ($totfea as $tf) {
                    $totalea->ta_totfea = $tf->tota;
                    $totalea->tpa_totfea = $tf->totbu;
                    $totalea->tsa_totfea = $tf->totbd;
                    $totalea->tesp_totfea = $tf->totbesp;
                    $totalea->tc_totfea = $tf->totc;
                    $totalea->td_totfea = $tf->totd;
                    $totalea->te_totfea = $tf->tote;
                    $totalea->tf_totfea = $tf->totf;
                    $totalea->tg_totfea = $tf->totg;
                }
                $totalea->save();
                $ren = json_decode($data['renglon']);
                $rea = detalleReporteFinalEvaluacionAcreditacionRenglon::with('Detallerep.materia')->whereHas('reportefea', function ($query) use ($id) {
                    $query = $query->where('cve_repfea', $id);
                })->get();
                foreach ($rea as $rg) {
                    foreach ($ren as $rn) {
                        $nren = DetalleReporteFinalEvaluacionAcreditacion::findOrFail($rg->cve_detrep);

                        if ($nren->cve_mat == $rn->asig) {
                            $nren->noEst_detrep = $rn->a;
                            $nren->noEstUa_detrep = $rn->bu;
                            $nren->noEstSa_detrep = $rn->bd;
                            $nren->noEstEsp_detrep = $rn->be;
                            $nren->pacre_detrep = $rn->c;
                            $nren->noEstNoA_detrep = $rn->d;
                            $nren->pNacre_detrep = $rn->e;
                            $nren->noEstDe_detrep = $rn->vf;
                            $nren->pEstDe_detrep = $rn->g;
                            $nren->save();
                        }
                    }
                }
                return response()->json(['estado' => 'Exito', 'mensaje' => 'Reporte de Evaluación y Acreditación actualizado y Entregado!']);
            } else {
                $evaluaciona = ReporteFinalEvaluacionAcreditacion::findOrFail($id);
                $evaluaciona->fechaIni_repfea = $data['fechaIni'];
                $evaluaciona->fechaFin_repfea = $data['fechaFin'];
                $evaluaciona->nogrupaten_repfea = $data['numGrupA'];
                $evaluaciona->noasigdif_repfea = $data['numAsigD'];
                $evaluaciona->estado_repfea = $data['status'];
                $evaluaciona->save();
                $totfea = json_decode($data['totales']);
                $total = TotalReporteFinalEvaluacionAcreditacion::where('cve_repfea', $id)->first();
                $totalea = TotalReporteFinalEvaluacionAcreditacion::findOrFail($total->cve_totfea);

                foreach ($totfea as $tf) {
                    $totalea->ta_totfea = $tf->tota;
                    $totalea->tpa_totfea = $tf->totbu;
                    $totalea->tsa_totfea = $tf->totbd;
                    $totalea->tesp_totfea = $tf->totbesp;
                    $totalea->tc_totfea = $tf->totc;
                    $totalea->td_totfea = $tf->totd;
                    $totalea->te_totfea = $tf->tote;
                    $totalea->tf_totfea = $tf->totf;
                    $totalea->tg_totfea = $tf->totg;
                }
                $totalea->save();
                $ren = json_decode($data['renglon']);
                $rea = detalleReporteFinalEvaluacionAcreditacionRenglon::with('Detallerep.materia')->whereHas('reportefea', function ($query) use ($id) {
                    $query = $query->where('cve_repfea', $id);
                })->get();
                foreach ($rea as $rg) {
                    foreach ($ren as $rn) {
                        $nren = DetalleReporteFinalEvaluacionAcreditacion::findOrFail($rg->cve_detrep);

                        if ($nren->cve_mat == $rn->asig) {
                            $nren->noEst_detrep = $rn->a;
                            $nren->noEstUa_detrep = $rn->bu;
                            $nren->noEstSa_detrep = $rn->bd;
                            $nren->noEstEsp_detrep = $rn->be;
                            $nren->pacre_detrep = $rn->c;
                            $nren->noEstNoA_detrep = $rn->d;
                            $nren->pNacre_detrep = $rn->e;
                            $nren->noEstDe_detrep = $rn->vf;
                            $nren->pEstDe_detrep = $rn->g;
                            $nren->save();
                        }
                    }
                }
                return response()->json(['estado' => 'Exito', 'mensaje' => 'Reporte de Evaluación y Acreditación actualizado y guardado como Borrador!']);
            }
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }

    public function exportPdf(Request $request)
    {
        $data = $request->all();
        $pdf = "";
        $id=$data['evalAcre'];
        $enca = Encabezadopie::max('cve_encpie');
        $enca = Encabezadopie::where('cve_encpie', $enca)->first();
        $firma = FirmarEA::where('cve_repfea', $id)->first();
        $ea = ReporteFinalEvaluacionAcreditacion::with('personal')->where('cve_repfea', $id)->first();
        $depar=Docente::where('id',$ea->id)->first();
        $rengea = detalleReporteFinalEvaluacionAcreditacionRenglon::with('Detallerep.materia')->whereHas('reportefea', function ($query) use ($id) {
            $query = $query->where('cve_repfea', $id);
        })->get();
        $totea = TotalReporteFinalEvaluacionAcreditacion::where('cve_repfea', $id)->first();
        $jefes=Docente::get();
        $pdf = Pdf::loadView('docente.documentos.reporteFinalEvaluacionAcreditacionpdf', ['enca' => $enca, 'ea'=>$ea,'fir'=>$firma,'rengea'=>$rengea, 'totea'=>$totea, 'depar'=>$depar]);


        return $pdf->download('ReportedeEvaluacionyAcreditacion.pdf');
    }
}
