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]);
}
}