<?php

namespace App\Http\Controllers\Admin;

use App\Model\ConvalidacionPractica;
use App\Model\Periodo;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Mockery\Exception;
use Yajra\Datatables\Datatables;

class PracticaController extends Controller
{
    public function index() {
        $periodos = Periodo::orderByDesc('nombre')->pluck('nombre','id');
        $actual = Periodo::where('estado','=',1)->first()->id;

        return view('pages.admin.practicas.index', compact('periodos','actual'));
    }

    public function getPracticas(Request $request){
        try {
            $practicas = ConvalidacionPractica::join('alumno', 'alumno.id', '=', 'convalidacion_practica.id_alumno')
                ->join('usuario', 'usuario.id', '=', 'alumno.id_usuario')
                ->join('periodo','periodo.id','=','convalidacion_practica.id_periodo')
                ->where('convalidacion_practica.id_periodo','=', $request->periodo)
                ->orderByRaw('usuario.apellido_paterno ASC, usuario.apellido_materno ASC, usuario.nombres ASC')
                ->select(
                    'periodo.nombre as periodo',
                    'usuario.nombres',
                    'usuario.apellido_materno',
                    'usuario.apellido_paterno',
                    'usuario.dni',
                    'convalidacion_practica.convalidado',
                    'convalidacion_practica.id as practica_id'
                );

            return Datatables::of($practicas)->make(true);
        } catch (Exception $e) {
            return json_encode([
                "sEcho" => 1,
                "iTotalRecords" => 0,
                "iTotalDisplayRecords" => 0,
                "aaData" => []
            ]);
        }
    }

    public function postValidar(Request $request) {
        try {
            $id = $request->id;

            $practica = ConvalidacionPractica::find($id);
            $practica->convalidado = true;
            $practica->save();

            return response()->json(['responseText' => 'true'], 200);
        } catch(Exception $e) {
            return response()->json(['error' => 'Ocurrió un problema con la petición.'], 500);
        }
    }
}
