You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

176 lines
7.0 KiB

<?php
namespace App\Http\Controllers;
use App\Models\UaderMapuchePersona;
use App\Models\UaderDjPersona;
use Illuminate\Http\Request;
use App\Constants\HttpStatus;
use Illuminate\Support\Facades\Log;
class ApiPersonaController extends Controller
{
public function getDatos(Request $request)
{
if ($request->has('dni')) {
return ApiPersonaController::rutaGetDatosPorDni($request->get('dni'));
}
if ($request->has('telefono')) {
return ApiPersonaController::rutaGetDatosPorTelefono($request->get('telefono'));
}
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
}
public static function rutaGetDatosPorDni($dni){
try{
$persona = UaderMapuchePersona::buscarPersonaPorDni($dni);
if ($persona) {
return ApiPersonaController::extraerDatos($persona);
}
return response()->json(['error' => trans('persona.NO_ENCONTRADA_POR_DNI')], HttpStatus::NOT_FOUND);
} catch (\Exception $e) {
Log::error(trans('persona.LOG_POR_DNI') . $e->getMessage());
return response()->json(['error' => trans('persona.ERROR_POR_DNI')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
public static function rutaGetDatosPorTelefono($telefono){
try{
$persona = UaderMapuchePersona::BuscarPersonaPorTelefono($telefono);
if ($persona) {
return ApiPersonaController::extraerDatos($persona);
}
return response()->json(['error' => trans('persona.NO_ENCONTRADA_POR_TELEFONO')], HttpStatus::NOT_FOUND);
} catch (\Exception $e) {
Log::error(trans('persona.LOG_POR_TELEFONO') . $e->getMessage());
return response()->json(['error' => trans('persona.ERROR_POR_TELEFONO')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
public static function extraerDatos($persona){
$declaracion_jurada = $persona->declaracion_jurada;
if(!$declaracion_jurada){
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
}
$datos = array(
'id' => $declaracion_jurada->id_persona ?? null, # id persona de la tabla 'uader_persona'
'dni' => $persona->nro_docum ?? null,
'apellido' => ucwords(strtolower(trim($persona->desc_appat))) ?? null,
'nombres' => ucwords(strtolower(trim($persona->desc_nombr))) ?? null,
'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)) ?? null,
'email' => strtolower(trim($persona->correo_electronico)) ?? null,
);
return response()->json($datos, HttpStatus::OK);
}
public function store(Request $request)
{
$input = $request->input();
$persona = UaderMapuchePersona::BuscarPersonaPorTelefono($input['cel']);
$dia = $input['dia'];
# lanzar error si es invalido o no vino
$tipo_horario = $input['tipo_horario'];
# lanzar error si es invalido o no vino
if (!empty($persona)) {
$funciones = array();
$declaracion_jurada = UaderDjPersona::find($persona->id_dj_persona);
$designaciones = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
foreach ($designaciones as $designacion) {
$horarios = array();
#dd( $designaciones);
foreach ($designacion->GrupoHorario as $grupo_horario) {
foreach ($grupo_horario->Horarios as $horario) {
if ($horario->dia_semanal == $dia && $horario->tipo_horario == $tipo_horario){ # dia del horario es el mismo que el dia actual y que no sea horario de disposicion
$horarios[] = [
'tipo' => $horario->tipo_horario,
'hora_entra' => $horario->hora_entra,
'hora_sale' => $horario->hora_sale
];
}
}
}
# si bien las designaciones son distintas los datos requeridos en esta ruta son pocos y solo necesitamos las designaciones (funciones) con datos diferentes
$nueva_funcion = ['funcion' => $designacion->id_funcion, 'ua' => intval($designacion->Sede->ua_guarani), 'horarios' => $horarios];
if (!in_array($nueva_funcion, $funciones)) {
$funciones[] = $nueva_funcion;
}
}
$datos = array(
'id' => $declaracion_jurada->id_persona,
'dni' => $persona->nro_docum,
'apellido' => ucwords(strtolower(trim($persona->desc_appat))),
'nombres' => ucwords(strtolower(trim($persona->desc_nombr))),
'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)),
'email' => strtolower(trim($persona->correo_electronico)),
'funciones' => $funciones,
);
return response()->json($datos);
} else {
return response()->json(array(), 404);
}
}
public function buscar($dni)
{
$persona = UaderMapuchePersona::buscarPersonaPorDni($dni);
if (!empty($persona)) {
$dj = UaderDjPersona::find($persona->id_dj_persona);
$datos = array(
'id' => $dj->id_persona,
'dni' => $persona->nro_docum,
'apellido' => ucwords(strtolower(trim($persona->desc_appat))),
'nombres' => ucwords(strtolower(trim($persona->desc_nombr))),
'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)),
'email' => strtolower(trim($persona->correo_electronico)),
'domicilio' => array(
'calle' => strtolower(trim($persona->calle)),
'numero' => strtolower(trim($persona->numero)),
'piso' => strtolower(trim($persona->piso)),
'dpto_oficina' => strtolower(trim($persona->dpto_oficina)),
'calles_entre' => strtolower(trim($persona->calles_entre)),
'domicilio_referencia' => strtolower(trim($persona->domicilio_referencia)),
'zona_paraje' => strtolower(trim($persona->zona_paraje)),
'casa_nro' => strtolower(trim($persona->casa_nro)),
'casa_manzana' => strtolower(trim($persona->casa_manzana)),
'localidad' => ucfirst(strtolower(trim($persona->Localidad->desc_localidad))),
'provincia' => trim($persona->Provincia->descripcion_pcia),
)
);
return response()->json($datos);
} else {
return response()->json(array(), 404);
}
}
}