<?php

namespace App\Http\Controllers;

use App\Model\Encuesta;
use App\Model\EncuestaUsuario;
use App\Model\Pregunta;
use App\Model\RespuestaUsuario;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Mockery\Exception;
use Yajra\Datatables\Datatables;

class EncuestaController extends Controller
{
    function getIndex(){
        return view('pages.encuesta.index');
    }
    function getEncuestas() {
        $encuestas = DB::table('encuesta_usuario')
//            EncuestaUsuario::where('id_usuario', \Auth::user()->id)
            ->join('encuesta','encuesta.id','=','encuesta_usuario.id_encuesta')
            ->where('encuesta_usuario.id_usuario','=', Auth::user()->id)
            ->whereNull('encuesta.deleted_at')
            ->select('encuesta.nombre','encuesta.fecha_publicacion','encuesta.fecha_finalizacion','encuesta_usuario.respondida','encuesta_usuario.id');

        return Datatables::of($encuestas)->make(true);
    }

    function getResponder($id) {
        try {
            $encuesta_usuario = EncuestaUsuario::find($id);
            $encuesta = Encuesta::with('preguntas')->find($encuesta_usuario->id_encuesta);

            return view('pages.encuesta.responder', compact('encuesta_usuario','encuesta'));
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('encuestas');
        }
    }

    function postResponder(Request $request) {
        try{
            $respuestas = $request->all();
            foreach ($respuestas as $respuesta) {
              $id_encuesta = $respuesta['EncuestaId'];
                if ($respuesta['RespuestaIds'] != null) {
                    $rptas = explode(',', $respuesta['RespuestaIds']);
                    foreach ($rptas as $rpta_id) {
                        $rpta_usuario = [
                            "id_encuesta_usuario" => $respuesta['EncuestaId'],
                            "id_pregunta" => $respuesta['PreguntaId'],
                            "id_respuesta" => $rpta_id,
                            "respuesta_texto" => null
                        ];
                        RespuestaUsuario::create($rpta_usuario);
                    }
                } else {
                    $rpta_usuario = [
                        "id_encuesta_usuario" => $respuesta['EncuestaId'],
                        "id_pregunta" => $respuesta['PreguntaId'],
                        "id_respuesta" => null,
                        "respuesta_texto" => $respuesta['RespuestaString']
                    ];
                    RespuestaUsuario::create($rpta_usuario);
                }
            }

            $encuesta = EncuestaUsuario::find($id_encuesta);
            $encuesta->respondida = true;
            $encuesta->save();

            return "true";
        }catch(Exception $exception){
            return "false";
        }

    }

    function getRespuestas($id){
//        try {
//            $encuesta_usuario = EncuestaUsuario::where([['id', $id],['id_usuario', \Auth::user()->id ]])
            $encuesta_usuario = EncuestaUsuario::where([['id', $id],['id_usuario', \Auth::user()->id ]])
                ->with('respuestas')
                ->first();

//            dd($encuesta_usuario);
            if (!$encuesta_usuario) {
                Alert()->error('No se encontró la encuesta indicada.', 'Ocurrió un problema')->persistent('Ok');
                return Redirect('encuestas');
            }

            $encuesta = Encuesta::with('preguntas')->find($encuesta_usuario->id_encuesta);

//            dd($encuesta);

            return view('pages.encuesta.respuestas', compact('encuesta_usuario','encuesta'));
//        } catch (\Exception $e) {
//            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
//            return Redirect('encuestas');
//        }
    }

    function getRespuestasADM($id,$userID){

        $encuesta_usuario = EncuestaUsuario::with('preguntas')
            ->where([['id', $id],['id_usuario', $userID ]])->first();


        if (!$encuesta_usuario) {
            Alert()->error('No se encontró la encuesta indicada.', 'Ocurrió un problema')->persistent('Ok');
            return Redirect('encuestas');
        }

        $encuesta = Encuesta::with('preguntas')->find($encuesta_usuario->id_encuesta);

        return view('pages.encuesta.respuestas', compact('encuesta_usuario','encuesta'));

    }

}
