Untitled
unknown
php
a year ago
12 kB
9
Indexable
<?php namespace App\Http\Livewire; use App\Models\Cursada; use App\Models\CursadaCursante; use App\Models\Cursante; use App\Models\Curso; use App\Models\Examen; use App\Models\Prestador; use App\Models\Sucursal; use App\Models\UnidadEvaluadora; use App\Models\Evaluador; use App\Models\User; use Carbon\Carbon; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Livewire\Component; use Illuminate\Http\Request; class FormCursadas extends Component { public $cursada_id; public $cursada; // Propiedades de Cursada::class public $fecha_hora; public $evaluador_id; public $curso_id; public $aula_id = ''; public $sucursal_id = ''; public $prestador_id = ''; // Otros public $sucursal; public $prestadores; public $modal_dni; public $sucursales; public $lista_sucursales = []; public $unidades; public $lista_unidades = []; public $choferes; public $cursos; public $evaluadores; public $cursante_linti = NULL; public $lista_pagos_cursante_linti = []; public $pago_seleccionado; public $empresa_id = ''; public $mensaje_error; // Cursante public $cursantes; public $lista_cursantes = []; protected $rules = [ 'fecha_hora' => 'required', 'aula_id' => 'required', 'curso_id' => 'required' ]; public function mount($cursada_id = NULL) { $this->unidades = UnidadEvaluadora::with('aulas')->get(); $this->cursos = Curso::all(); $this->prestadores = Prestador::all(); $this->sucursales = Sucursal::all(); $this->cursantes = Cursante::all(); if (Auth::user()->hasRole('administrador')) { $this->evaluadores = Evaluador::all(); } else if (Auth::user()->hasRole('prestador')) { $this->lista_unidades = Auth::user()->sucursal->unidadesEvaluadoras; $this->evaluadores = Evaluador::select('evaluadores.*') ->leftJoin('sucursales', 'sucursales.id', 'evaluadores.sucursal_id') ->where('sucursales.prestador_id', Auth::user()->sucursal->prestador_id) ->get(); $this->prestador_id = Auth::user()->sucursal->prestador->id; $this->seleccionarPrestador($this->prestador_id); $this->empresa_id = Auth::user()->sucursal->prestador->empresa_id_linti; } else { $this->lista_unidades = Auth::user()->sucursal->unidadesEvaluadoras; $this->evaluadores = Evaluador::where('sucursal_id', Auth::user()->sucursal_id)->get(); $this->prestador_id = Auth::user()->sucursal->prestador->id; $this->sucursal_id = Auth::user()->sucursal->id; $this->empresa_id = Auth::user()->sucursal->prestador->empresa_id_linti; } if ($cursada_id) { $this->cursada = Cursada::find($cursada_id); $this->cargarCursada(); } else { $this->cursada = new Cursada; } } public function render() { return view('livewire.form-cursadas'); } public function cargarCursada() { $this->fecha_hora = $this->cursada->fecha_hora->format('Y-m-d H:i'); $this->curso_id = $this->cursada->curso_id; $this->evaluador_id = $this->cursada->evaluador_id; $this->prestador_id = $this->cursada->aula->unidadEvaluadora->sucursal->prestador->id; $this->seleccionarPrestador($this->prestador_id); $this->sucursal_id = $this->cursada->aula->unidadEvaluadora->sucursal->id; $this->seleccionarSucursal($this->sucursal_id); $this->aula_id = $this->cursada->aula->id; foreach ($this->cursada->cursadaCursantes as $cursada_cursante) { $cursante = $cursada_cursante->cursante; $examen = $cursada_cursante->examen; $this->lista_cursantes []= [ [ 'id' => $cursante->id, 'nombre' => $cursante->nombre, 'apellido' => $cursante->apellido, 'dni' => $cursante->dni ], [ 'idPago' => $examen->nro_boleta, 'idPagoItem' => $examen->nro_item, 'codEstadoPago' => $examen->estado_pago, //'cursadaCursanteId' => $cursada_cursante->id ] ]; } } public function seleccionarPrestador($prestador_id) { $this->limpiarModal(); $this->lista_cursantes = []; $prestador = $this->prestadores->filter(function($prestador) use ($prestador_id) { return $prestador->id == $prestador_id; })->first(); if (!$prestador) { $this->empresa_id = NULL; return; } $this->empresa_id = $prestador->empresa_id_linti; $this->lista_sucursales = []; $this->aula_id = ''; foreach ($this->sucursales as $sucursal) { if ($sucursal->prestador_id == $prestador_id) { $this->lista_sucursales []= $sucursal; } } } public function seleccionarSucursal($sucursal_id) { $this->lista_unidades = []; $this->aula_id = ''; foreach ($this->unidades as $unidad) { if ($unidad['sucursal_id'] == $sucursal_id) $this->lista_unidades []= $unidad; } } public function agregarCursante() { } public function submit() { if ($this->cursada->fecha_hora && $this->cursada->fecha_hora <= Carbon::now()->format('Y-m-d H:i')) { $this->mensaje_error = 'La cursada no puede editarse porque se encuentra en proceso'; $this->cargarCursada(); return; } $this->mensaje_error = ''; $this->validate(); if (count($this->lista_cursantes) == 0) { //$this->mensaje_error = "Debe seleccionar al menos un cursante."; //return; } // Crear Cursada $this->cursada->fecha_hora = $this->fecha_hora; $this->cursada->evaluador_id = $this->evaluador_id; $this->cursada->curso_id = $this->curso_id; $this->cursada->aula_id = $this->aula_id; $this->cursada->usuario_id = Auth::user()->id; $this->cursada->save(); $lista_eliminar_cursada_cursantes = []; foreach ($this->cursada->cursadaCursantes as $cursada_cursante) { $cursada_cursante->examen->delete(); $cursada_cursante->delete(); } // Crear CursadaCursante y Examen foreach ($this->lista_cursantes as $lista_cursante) { $cursante = Cursante::findOrFail($lista_cursante[0]['id']); if (CursadaCursante::where('cursada_id', $this->cursada->id)->where('cursante_id', $cursante->id)->first()) continue; $cursada_cursante = CursadaCursante::create([ 'cursada_id' => $this->cursada->id, 'cursante_id' => $cursante->id, 'usuario_id' => Auth::user()->id ]); $examen = Examen::create([ 'nro_boleta' => $lista_cursante[1]['idPago'], 'nro_item' => $lista_cursante[1]['idPagoItem'], 'estado_pago' => $lista_cursante[1]['codEstadoPago'], 'cursada_cursante_id' => $cursada_cursante->id ]); } return redirect()->route('admin.cursadas.show', $this->cursada->id); } public function getCursanteConBoletaDesdeLinti() { $this->lista_pagos_cursante_linti = []; $responseBody = $this->getToken(); if (!$responseBody) { \Log::error("No token"); return response()->json([ 'message' => 'No token' ], 500); } $api_url = (getenv('APP_ENV')) == 'local' ? getenv('URL_ST_API_LINTI') : getenv('URL_API_LINTI'); $api_url_listar = $api_url . '/apai/choferes_boletas_prestadores'; // ========================================= $post_input = [ 'token' => $responseBody['token'], 'prestador_id' => Sucursal::find($this->sucursal_id)->prestador_id_linti, 'dni' => $this->modal_dni, 'item_id' => Curso::find($this->curso_id)->curso_id_linti ]; \Log::info("Datos enviados"); \Log::info($post_input); $headers = []; $response = Http::withHeaders($headers)->post($api_url_listar, $post_input); $statusCode = $response->status(); $responseBody = json_decode($response->getBody(), true); \Log::info($responseBody); if ($statusCode == 500) { Log::info("ERROR 500"); } else { if (isset($responseBody['data']) && $responseBody['ok'] == true) { $this->cursante_linti = collect([ 'nombre' => $responseBody['data'][0]['nombre'], 'apellido' => $responseBody['data'][0]['apellido'], 'dni' => $responseBody['data'][0]['dni'], 'sucursal' => $responseBody['data'][0]['sucursal'] ]); $this->lista_pagos_cursante_linti = $responseBody['data']; } else { Log::info("ERROR AL TRAER PAGOS"); Log::info($statusCode); Log::info($responseBody); } } } private function getToken() { $api_url = (getenv('APP_ENV')) == 'local' ? getenv('URL_ST_API_LINTI') : getenv('URL_API_LINTI'); $api_ul_generar = $api_url . '/apitoken'; // Datos para el _token ==================== $post_input = [ 'username' => getenv('USER_API_LINTI'), 'password' => getenv('PASSWORD_API_LINTI') ]; \Log::error($post_input); $headers = []; $response = Http::withHeaders($headers)->post($api_ul_generar, $post_input); $statusCode = $response->status(); $responseBody = json_decode($response->getBody(), true); return $responseBody; } public function limpiarModal() { $this->cursante_linti = null; $this->lista_pagos_cursante_linti = []; $this->modal_dni = null; $this->pago_seleccionado = null; } public function crearCursanteDesdeLinti() { $examenes_con_pago = Examen::whereNroItem($this->pago_seleccionado)->get(); if (count($examenes_con_pago) == 3) { $this->mensaje_error = "El pago seleccionado ya esta asociado a otras cursadas."; return; } $nuevo_cursante = Cursante::whereDni($this->cursante_linti['dni'])->first(); if ($this->cursante_linti && !$nuevo_cursante) { $nuevo_cursante = Cursante::create([ 'nombre' => $this->cursante_linti['nombre'], 'apellido' => $this->cursante_linti['apellido'], 'dni' => $this->cursante_linti['dni'] ]); } $pagoSeleccionado = null; foreach ($this->lista_pagos_cursante_linti as $pago) { if ($pago['idPagoItem'] == $this->pago_seleccionado) { $pagoSeleccionado = $pago; break; } } $no_esta_en_lista = true; foreach ($this->lista_cursantes as $cursante) { if ($cursante[1]['idPagoItem'] == $pagoSeleccionado['idPagoItem']) { $no_esta_en_lista = false; } } if($no_esta_en_lista) { $this->lista_cursantes []= [ $nuevo_cursante, $pagoSeleccionado ]; } $this->limpiarModal(); } public function eliminarCursanteDeLista($dni) { $nueva_lista_cursante = []; foreach ($this->lista_cursantes as $cursante) { if ($cursante[0]['dni'] != $dni) { $nueva_lista_cursante []= $cursante; } } $this->lista_cursantes = []; $this->lista_cursantes = $nueva_lista_cursante; } }
Editor is loading...
Leave a Comment