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/eddcfa.sumar.com.py/app/Http/Controllers/FormularioController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Competencia;
use App\Models\Asignacion;
use App\Models\Interrogante;
use App\Models\Respuesta;
use DB;
use Session;
use Illuminate\Support\Facades\Redirect;
use Auth;

class FormularioController extends Controller{

    public function create($id) {

        $asignacion=DB::table('asignacions as a')
            ->join('users as u','a.evaluador_id','u.id')
            ->join('users as us','a.evaluado_id','us.id')
            ->join('evaluacions as e','a.evaluacion_id','e.id')
            ->join('empresas as em','a.empresa_id','em.id')
            ->select('a.id','a.asi_estado as estado','u.id as evaluador_id','u.name as evaluador','us.id as evaluado_id','us.name as evaluado','e.eva_nombre as evaluacion','e.eva_descripcion as info','a.evaluacion_id','a.updated_at as fecha_evaluacion')
            ->where('a.id',$id)->first();

        $totalinput=DB::table('interrogantes as i')
            ->join('competencias as c','i.competencia_id','c.id')
            ->join('evaluacions as e','c.evaluacion_id','e.id')
            ->join('asignacions as a','a.evaluacion_id','e.id')
            ->where('a.id',$id)->where('i.int_tipo',3)->where('int_estado',1)->count();

        $competencias=Competencia::where('evaluacion_id',$asignacion->evaluacion_id)->get();

        return view('admin.formulario.create',["asignacion"=>$asignacion,'competencias'=>$competencias,"totalinput"=>$totalinput]);
    }

    public function edit($id) {

        $asignacion=DB::table('asignacions as a')
            ->join('users as u','a.evaluador_id','u.id')
            ->join('users as us','a.evaluado_id','us.id')
            ->join('evaluacions as e','a.evaluacion_id','e.id')
            ->join('empresas as em','a.empresa_id','em.id')
            ->select('a.id','a.asi_estado as estado','u.id as evaluador_id','u.name as evaluador','us.id as evaluado_id','us.name as evaluado','e.eva_nombre as evaluacion','e.eva_descripcion as info','a.evaluacion_id','a.updated_at as fecha_evaluacion')
            ->where('a.id',$id)->first();

        $competencias=Competencia::where('evaluacion_id',$asignacion->evaluacion_id)->get();

        return view('admin.formulario.edit',["asignacion"=>$asignacion,'competencias'=>$competencias]);
    }

    public function store(Request $request) {

        $asignacion = Asignacion::findOrFail($request->asignacion_id);

        $competencias=Competencia::where('evaluacion_id',$asignacion->evaluacion_id)->where('com_estado',1)->get();

        foreach ($competencias as $com) {

            $interrogantes=Interrogante::where('competencia_id',$com->id)->where('int_estado',1)->get();
            
            foreach ($interrogantes as $int){

                $cargarespuesta = 'respuesta'.$int->id;
                $cargarespuesta2 = 'respuesta2'.$int->id;

                if($int->int_tipo == 4 && $asignacion->evaluador_id == Auth::user()->id){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        $respuesta->respuesta = serialize($request->$cargarespuesta);
                        $respuesta->respuesta2 = $request->$cargarespuesta2;
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }elseif($int->int_tipo == 1){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        if($request->$cargarespuesta){
                            $respuesta->respuesta = $request->$cargarespuesta;
                        }else{
                            $respuesta->respuesta = 0;
                        }
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }elseif($int->int_tipo == 2 && $asignacion->evaluador_id == Auth::user()->id){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        if($request->$cargarespuesta){
                            $respuesta->respuesta = $request->$cargarespuesta;
                        }else{
                            $respuesta->respuesta = 0;
                        }
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }elseif($int->int_tipo == 3){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        if($request->$cargarespuesta){
                            $respuesta->respuesta = $request->$cargarespuesta;
                        }else{
                            $respuesta->respuesta = 0;
                        }
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }elseif($int->int_tipo == 5){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        if($request->$cargarespuesta){
                            $respuesta->respuesta = $request->$cargarespuesta;
                        }else{
                            $respuesta->respuesta = 0;
                        }
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }

                
            }

        }

        if($asignacion->evaluador_id == Auth::user()->id){
            if($asignacion->asi_estado == 1){
                $asignacion->asi_estado = 3;
            }else{
                $asignacion->asi_estado = 2;
            }
        }else{
            if($asignacion->asi_estado == 2){
                $asignacion->asi_estado = 3;
            }else{
                $asignacion->asi_estado = 1; 
            }
        }

        if ($asignacion->update()) {
            Session::flash('success', '¡Formulario guardado correctamente!');
        }

        return Redirect::to('/admin/evaluar');
    }

    public function update(Request $request, $id) {

        $respuestas = Respuesta::where('asignacion_id',$id)->where('usuario_id',Auth::user()->id)->get();

        foreach($respuestas as $value){
            $value->delete();
        }

        $asignacion = Asignacion::findOrFail($request->asignacion_id);

        $competencias=Competencia::where('evaluacion_id',$asignacion->evaluacion_id)->where('com_estado',1)->get();

        foreach ($competencias as $com) {

            $interrogantes=Interrogante::where('competencia_id',$com->id)->where('int_estado',1)->get();
            
            foreach ($interrogantes as $int){

                $cargarespuesta = 'respuesta'.$int->id;
                $cargarespuesta2 = 'respuesta2'.$int->id;

                if($int->int_tipo == 4 && $asignacion->evaluador_id == Auth::user()->id){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        $respuesta->respuesta = serialize($request->$cargarespuesta);
                        $respuesta->respuesta2 = $request->$cargarespuesta2;
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }elseif($int->int_tipo == 1){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        $respuesta->respuesta = $request->$cargarespuesta;
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }elseif($int->int_tipo == 2 && $asignacion->evaluador_id == Auth::user()->id){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        $respuesta->respuesta = $request->$cargarespuesta;
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }elseif($int->int_tipo == 3){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        $respuesta->respuesta = $request->$cargarespuesta;
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }elseif($int->int_tipo == 5){

                    $respuesta=new Respuesta;

                        $respuesta->asignacion_id = $request->asignacion_id;
                        $respuesta->interrogante_id = $int->id;
                        $respuesta->respuesta = $request->$cargarespuesta;
                        $respuesta->usuario_id = Auth::user()->id;

                    $respuesta->save();

                }

                
            }

        }

        if($asignacion->evaluador_id == Auth::user()->id){
            if($asignacion->asi_estado == 1){
                $asignacion->asi_estado = 3;
            }else{
                $asignacion->asi_estado = 2;
            }
        }else{
            if($asignacion->asi_estado == 2){
                $asignacion->asi_estado = 3;
            }else{
                $asignacion->asi_estado = 1;
            }
        }

        if ($asignacion->update()) {
            Session::flash('success', '¡Formulario guardado correctamente!');
        }

        return Redirect::to('admin/evaluar');
    }

    public function show($id) {

        $asignacion=DB::table('asignacions as a')
            ->join('users as u','a.evaluador_id','u.id')
            ->join('users as us','a.evaluado_id','us.id')
            ->join('evaluacions as e','a.evaluacion_id','e.id')
            ->join('empresas as em','a.empresa_id','em.id')
            ->select('a.id','a.asi_estado as estado','u.name as evaluador','u.puesto as cargoevaluador',
		        'us.name as evaluado','us.area','us.puesto','us.ingreso','us.ingresocargo',
		        'e.eva_nombre as evaluacion','a.evaluacion_id','u.id as evaluador_id','us.id as evaluadooo_id','a.updated_at as fecha_evaluacion')
                ->where('a.id',$id)->first();

        $competencias=Competencia::where('evaluacion_id',$asignacion->evaluacion_id)
            ->where('com_estado',1)->get();

        $total = 0;
        $sumainput = 0;
        $totalinput=0;

        $interrogantes = DB::table('interrogantes as i')
    		->join('competencias as c','i.competencia_id','c.id')
    		->select('i.*','c.com_nom')
            ->where('c.evaluacion_id',$asignacion->evaluacion_id)
    		->where('i.int_estado',1)
            ->where('c.com_estado',1)
    		->get();

        foreach ($interrogantes as $int) {
            if($respuesta = Respuesta::where('interrogante_id',$int->id)
            ->where('asignacion_id',$id)
            ->where('usuario_id',$asignacion->evaluador_id)->first()){
            
                if ($int->int_tipo == 1 && $respuesta->respuesta != "N/A") { 
                    $total+=$respuesta->respuesta;
                }

                if ($int->int_tipo == 3) {
                    $total+=$respuesta->respuesta;
                }

                if ($int->int_tipo == 1 || $int->int_tipo == 3) {
                    $totalinput+=1;
                }

                if ($int->int_tipo == 5) {
                    $total+=$respuesta->respuesta;
                    $totalinput+=1;
                }
            }
        }
        

        return view('admin.formulario.show',["sumainput"=>$total,"totalinput"=>$totalinput,
		"asignacion"=>$asignacion,'competencias'=>$competencias,"total"=>$total]);
    }

    public function show2($id) {

        $asignacion=DB::table('asignacions as a')
            ->join('users as u','a.evaluador_id','u.id')
            ->join('users as us','a.evaluado_id','us.id')
            ->join('evaluacions as e','a.evaluacion_id','e.id')
            ->join('empresas as em','a.empresa_id','em.id')
            ->select('a.id','a.asi_estado as estado','u.name as evaluador','u.puesto','u.ingreso','us.name as evaluado','e.eva_nom as evaluacion','a.evaluacion_id','us.id as evaluado_id','a.updated_at as fecha_evaluacion')
            ->where('a.id',$id)->first();

        $competencias=Competencia::where('evaluacion_id',$asignacion->evaluacion_id)->get();

        $nombres = [];
        $estadisticas = [];
        $estadisticas2 = [];
        $total = [];
        $feckback = [];
        foreach($competencias as $com){

            $interrogantes=Interrogante::where('competencia_id',$com->id)->where('int_estado',1)->orderBy('int_ubicacion','asc')->get();

            $envio=0;
            $contador=0;

            foreach ($interrogantes as $int) {
                $respuesta = Respuesta::where('interrogante_id',$int->id)->where('asignacion_id',$id)->first();

                if ($int->int_tipo == 1 && $respuesta->respuesta != "N/A") {
                    $envio+=intval($respuesta->respuesta);
                    $contador+=1;
                }else{
                    $feckback[] = $respuesta->respuesta;
                }

            }

            if ($envio != 0) {

                $totalpuntos=intval($com->int_fin)*$contador;

                $estadisticas2[] = $envio;

                $envio=intval(($envio*100)/$totalpuntos);
                
                $nombres[] = $com->int_nom;

                $total[] = $totalpuntos;
            }

            $estadisticas[] = $envio;
            
        }

        

        return view('admin.formulario.show2',["asignacion"=>$asignacion,'competencias'=>$competencias,'nombres2'=>$nombres,"nombres"=>json_encode($nombres,JSON_NUMERIC_CHECK),"estadisticas"=>json_encode($estadisticas,JSON_NUMERIC_CHECK),"estadisticas3"=>$estadisticas,"feckback"=>$feckback,"estadisticas2"=>$estadisticas2,"total"=>$total]);
    }
}