HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/8.0.30
System: Linux multiplicar 3.10.0-1160.102.1.el7.x86_64 #1 SMP Tue Oct 17 15:42:21 UTC 2023 x86_64
User: root (0)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /var/www/html/xfacil.desafio.com.py/app/Http/Livewire/Reflexiones.php
<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Livewire\WithPagination;
use App\Models\Formulario;
use App\Models\Competencia;
use App\Models\Curso;
use App\Models\User;
use App\Models\Puntaje;
use Auth;
use DB;

use Maatwebsite\Excel\Facades\Excel;
use App\Exports\RefelxionesExport;


class Reflexiones extends Component {

    use WithPagination;

    protected $paginationTheme = 'bootstrap';

    protected $queryString = ['search' => ['except' => ''],'usuario' => ['except' => '']];

    public $search='',$usuario='';

    public $formulario_id,$formulario,$competencias,$nota,$feedback,$usuario_id,$estado,$encuesta;

    public $updateMode = 0;

    public function render(){

        if($this->encuesta == 1){
            $formularios = DB::table('formularios as fo')
                ->select('fo.*')
                ->where('fo.for_tipo','encuesta')
                ->where('fo.for_nom','LIKE','%'.$this->search.'%')->where('fo.for_estado',1)->orderBy('fo.id','desc')->paginate(20);
        
        }else{ 
            $formularios = DB::table('cursos as cu')
                ->join('formularios as fo','fo.curso_id','cu.id')
                ->select('fo.*','cu.titulo')
                ->where('fo.for_tipo','curso')
                ->where('fo.for_nom','LIKE','%'.$this->search.'%')->where('cu.estado',1)->where('fo.for_estado',1)->orderBy('fo.id','desc')->paginate(20);
        
        }

        $usuarios=DB::table('respuestas as re')
            ->join('users as us','re.usuario_id','us.id')
            ->join('interrogantes as in','re.interrogante_id','in.id')
            ->join('competencias as co','in.competencia_id','co.id')
            ->join('formularios as fo','co.formulario_id','fo.id')
            ->select('fo.id as formulario_id','us.name','us.id as usuario_id')
            ->where('us.name','LIKE','%'.$this->usuario.'%')
            ->where('fo.id',$this->formulario_id)->paginate(20);

        $respuesta=DB::table('puntajes as pu')
            ->join('users as us','pu.usuario_id','us.id')
            ->join('formularios as fo','pu.formulario_id','fo.id')
            ->select('pu.*')
            ->where('fo.id',$this->formulario_id)->get();

        return view('livewire.reflexiones',["formularios"=>$formularios,"usuarios"=>$usuarios,"respuesta"=>$respuesta]);
    }

    public function volver() {
        $this->updateMode = 0;
    }

    public function volver2() {
        $this->updateMode = 1;
    }

    public function respuestas($id){
        $this->updateMode = 1;
        $this->formulario_id=$id;
    }

    public function respuesta($usuario_id,$estado){
        $this->updateMode = 2;
        $this->estado=$estado;

        $this->usuario_id=$usuario_id;
        $this->formulario=Formulario::find($this->formulario_id);
        $this->competencias=Competencia::where('formulario_id',$this->formulario_id)->get();
        
    }

    public function store_feedback(){

        $validatedDate = $this->validate([
            'nota' => 'required',
            'feedback' => 'required'
        ],
        [
            'nota.required' => 'El campo nota es requerido',
            'feedback.required' => 'El campo feedback es requerido',
        ]);

        Puntaje::create([
            'nota' => $this->nota,
            'feedback' => $this->feedback,
            'formulario_id' => $this->formulario_id,
            'usuario_id' => $this->usuario_id,
        ]);

        $this->updateMode = 1;
        $this->emit('alert', ['type' => 'success', 'message' => 'Feedback agregado correctamente!']);
    }

    public function reflexiones($id){
        return Excel::download(new RefelxionesExport($id), 'Reflecciones.xlsx'); 
    }

}