<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Materia;
use App\Temario;
use App\ActividadAprendizaje;
use App\Exports\TemarioExport;
use App\Unidad;
use App\Temuni;
use App\TemarioActividadAprendizaje;
use Maatwebsite\Excel\Facades\Excel;

class TemarioController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $data = $request->all();
        $tem = "";
        if (count($data) > 0) {
            $tem = Temario::where('status_tem', 1);
            if ($data['clave'] != null) {
                //agregar Condicion
                $tem = $tem->whereHas('materia', function ($query) use ($data) {
                    $query = $query->where('clave_mat', 'like', '%' . $data['clave'] . '%');
                });
            }
            if ($data['materia'] != null) {
                //agre
                $tem = $tem->where('cve_mat', $data['materia']);
            }

            $tem = $tem->get();
        } else {
            $tem = Temario::with('materia')->where('status_tem', '1')->get();
        }
        $mat = Materia::where('status_mat', '1')->get();
        //return view('materia.listar', compact('mat', 'data'));
        //$tem = Temario::with('materia')->where('status_tem', '1')->get();
        return view('temario.listar', compact('tem', 'mat', 'data'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $mat = Materia::where('status_mat', '1')->get();
        return view('temario.nuevo', compact('mat'));
    }

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

        $tem = Temario::create(['cve_mat' => $data['materia'], 'horasTeoricas_tem' => $data['horasT'], 'horasPracticas_tem' => $data['horasP'], 'totalHoras_tem' => $data['totalH'], 'competenciasDes_tem' => $data['competenciasD'], 'competenciasPre_tem' => $data['competenciasP'], 'status_tem' => '1', 'caracterasig_tem' => $data['caracterAsig'], 'intendidac_tem' => $data['intencion'], 'practicas_tem' => $data['practica'], 'proyectoasig_tem' => $data['proyecasig'], 'evalcom_tem' => $data['evalcom'], 'fuentes_tem' => $data['fuentesinfo']]);
        $unidad = json_decode($data['unidad']);
        if ($unidad != []) {
            foreach ($unidad as $u) {
                $uni = Unidad::create(['no_uni' => $u->id, 'tema_uni' => $u->tema, 'subtema_uni' => $u->subtema]);
                Temuni::create(['cve_tem' => $tem->cve_tem, 'cve_uni' => $uni->cve_uni]);
            }
            $competencia = json_decode($data['competencias']);
            if ($competencia != []) {
                foreach ($competencia as $com) {
                    $co = ActividadAprendizaje::create(['nou_actapre' => $com->id, 'competenciasEsp_actapre' => $com->competenciaE, 'competenciasGen_actapre' => $com->competenciaG, 'actapre_actapre' => $com->actividadA]);
                    TemarioActividadAprendizaje::create(['cve_tem' => $tem->cve_tem, 'cve_actapre' => $co->cve_actapre]);
                }
            }
        }

        return response()->json(['estado' => 'Exito', 'mensaje' => 'Temario guardado con exito!']);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $tem = Temario::with('materia')->where('cve_tem', $id)->first();
        $uni = Temuni::with('Unidad')->where('cve_tem', $id)->get();
        $act = TemarioActividadAprendizaje::with('ActividadAprendizaje')->where('cve_tem', $id)->get();
        return view('temario.consultar', compact('tem', 'uni', 'act'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $tem = Temario::with('materia')->where('cve_tem', $id)->first();
        $uni = Temuni::with('Unidad')->where('cve_tem', $id)->get();
        $act = TemarioActividadAprendizaje::with('ActividadAprendizaje')->where('cve_tem', $id)->get();
        $mat = Materia::where('status_mat', '1')->get();
        return view('temario.modificar', compact('tem', 'uni', 'act', 'mat'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $tem = Temario::findOrFail($id);
        $tem->horasTeoricas_tem = $request->horasT;
        $tem->horasPracticas_tem = $request->horasP;
        $tem->totalHoras_tem = $request->totalH;
        $tem->competenciasDes_tem = $request->competenciasD;
        $tem->competenciasPre_tem = $request->competenciasP;
        $tem->caracterasig_tem = $request->caracterAsig;
        $tem->intendidac_tem = $request->intencion;
        $tem->practicas_tem = $request->practica;
        $tem->proyectoasig_tem = $request->proyecasig;
        $tem->evalcom_tem = $request->evalcom;
        $tem->fuentes_tem = $request->fuentesinfo;
        $tem->cve_mat = $request->materia;
        $tem->save();
        Temuni::where('cve_tem', $id)->delete();
        $unidad = json_decode($request->unidad);
        if ($unidad != []) {
            foreach ($unidad as $u) {
                $r = Unidad::where('no_uni', $u->id)->where('tema_uni', $u->tema)->where('subtema_uni', $u->subtema)->first();
                if ($r === null) {
                    $uni = Unidad::create(['no_uni' => $u->id, 'tema_uni' => $u->tema, 'subtema_uni' => $u->subtema]);
                    Temuni::create(['cve_tem' => $tem->cve_tem, 'cve_uni' => $uni->cve_uni]);
                }
            }
            $competencia = json_decode($request->competencias);
            if ($competencia != []) {
                foreach ($competencia as $com) {
                    $ra = ActividadAprendizaje::where('nou_actapre', $com->id)->where('competenciasEsp_actapre', $com->competenciaE)->where('competenciasGen_actapre', $com->competenciaG)->where('actapre_actapre', $com->actividadA)->first();
                    if ($ra === null) {
                        $co = ActividadAprendizaje::create(['nou_actapre' => $com->id, 'competenciasEsp_actapre' => $com->competenciaE, 'competenciasGen_actapre' => $com->competenciaG, 'actapre_actapre' => $com->actividadA]);
                        TemarioActividadAprendizaje::create(['cve_tem' => $tem->cve_tem, 'cve_actapre' => $co->cve_actapre]);
                    }
                }
            }
        }

        return response()->json(['estado' => 'Exito', 'mensaje' => 'Retícula actualizada con exito!']);
    }

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

        $rec = Temario::find($id);
        $rec->status_tem = '0';
        $rec->save();

        return response()->json(['estado' => 'Exito', 'mensaje' => 'Temario eliminado con exito!']);
    }

    public function exportExcel(Request $request)
    {
        $data = $request->all();

        $clave = $data['clave'];
        $materia = $data['materia'];
        if ($clave == null) {
            $clave = "";
        }
        if ($materia == null) {
            $materia = "";
        }

        return Excel::download(new TemarioExport($clave, $materia), 'temario.xlsx');
    }
    public function updateUni(Request $request, $id)
    {
        $uni = Unidad::findOrFail($id);
        $uni->no_uni = $request->n;
        $uni->tema_uni = $request->t;
        $uni->subtema_uni = $request->s;
        $uni->save();
        return response()->json(['estado' => 'Exito', 'mensaje' => 'Unidad actualizada con exito!']);
    }
    public function updateAct(Request $request, $id)
    {

        $act = ActividadAprendizaje::findOrFail($id);
        $act->actapre_actapre = $request->acta;
        $act->competenciasEsp_actapre = $request->come;
        $act->competenciasGen_actapre = $request->comg;
        $act->save();
        return response()->json(['estado' => 'Exito', 'mensaje' => 'Actividad de aprendizaje actualizada con exito!']);
    }
    public function destroyAct($id)
    {
        $cve = TemarioActividadAprendizaje::where('cve_actapre', $id)->first();

        $ta = TemarioActividadAprendizaje::find($cve->cve_temactapre);
        $ta->delete();
        $rec = ActividadAprendizaje::find($id);
        $rec->delete();

        return response()->json(['estado' => 'Exito', 'mensaje' => 'Actividad eliminada con exito!']);
    }
}
