Untitled
unknown
php
2 years ago
12 kB
12
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