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