@ -2,31 +2,31 @@
namespace App\Http\Controllers;
namespace App\Http\Controllers;
use App\Constants\HttpStatus;
use App\Models\UaderMapuchePersona;
use App\Models\UaderMapuchePersona;
use Illuminate\Http\Request;
use Illuminate\Http\Request;
use App\Constants\HttpStatus;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Log;
class ApiPersonaController extends Controller
class ApiPersonaController extends Controller
{
{
/**
/**
* Funcion de la ruta getDatos.
* Funcion de la ruta getDatos.
* Devuelve los datos básicos de una persona en formato JSON.
* Devuelve los datos básicos de una persona en formato JSON.
*
*
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda.
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
*/
*/
public function getDatos(Request $request){
public function getDatos(Request $request)
{
if(!$request->has('dni') & & !$request->has('telefono')){
if (! $request->has('dni') & & ! $request->has('telefono')) {
return response()->json(
return response()->json(
['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')],
['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')],
HttpStatus::BAD_REQUEST
HttpStatus::BAD_REQUEST
);
);
}
}
try{
try {
if ($request->has('dni')) {
if ($request->has('dni')) {
@ -48,52 +48,53 @@ class ApiPersonaController extends Controller
} catch (\Exception $e) {
} catch (\Exception $e) {
Log::error(trans('persona.LOG_DATOS') . $e->getMessage());
Log::error(trans('persona.LOG_DATOS').$e->getMessage());
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
}
}
/**
/**
* Funcion de ruta, obtiene los horarios de una persona en una sede específica según el DNI o teléfono.
* Funcion de ruta, obtiene los horarios de una persona en una sede específica según el DNI o teléfono.
*
*
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros necesarios:
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros necesarios:
* - 'dni' o 'telefono' para identificar a la persona.
* - 'dni' o 'telefono' para identificar a la persona.
* - 'sede' para especificar la sede.
* - 'sede' para especificar la sede.
* - 'funcion' para especificar la función.
* - 'funcion' para especificar la función.
* - 'dia' para especificar el día de la semana.
* - 'dia' para especificar el día de la semana.
* - 'tipo_horario' para especificar el tipo de horario.
* - 'tipo_horario' para especificar el tipo de horario.
*
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los horarios de la persona, o un mensaje de error si no se encuentra la información.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los horarios de la persona, o un mensaje de error si no se encuentra la información.
*/
*/
public function getHorariosPorSede(Request $request){
public function getHorariosPorSede(Request $request)
{
if(!$request->has('telefono') & & !$request->has('dni')){
if (! $request->has('telefono') & & ! $request->has('dni')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('sede')){
if (! $request->has('sede')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_SEDE')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_SEDE')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('funcion')){
if (! $request->has('funcion')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_FUNCION')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_FUNCION')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('dia')){
if (! $request->has('dia')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DIA')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DIA')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('tipo_horario')){
if (! $request->has('tipo_horario')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_TIPO_HORARIO')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_TIPO_HORARIO')], HttpStatus::BAD_REQUEST);
}
}
try {
try {
if($request->has('dni')){
if ($request->has('dni')) {
$persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni'));
$persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni'));
if($persona){
if ($persona) {
return ApiPersonaController::extraerHorariosPorSede(
return ApiPersonaController::extraerHorariosPorSede(
$persona,
$persona,
@ -105,11 +106,11 @@ class ApiPersonaController extends Controller
}
}
}
}
if($request->has('telefono')){
if ($request->has('telefono')) {
$persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono'));
$persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono'));
if($persona){
if ($persona) {
return ApiPersonaController::extraerHorariosPorSede(
return ApiPersonaController::extraerHorariosPorSede(
$persona,
$persona,
@ -123,10 +124,10 @@ class ApiPersonaController extends Controller
return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::BAD_REQUEST);
} catch (\Exception $e) {
} catch (\Exception $e) {
Log::error(trans('persona.LOG_HORARIOS') . $e->getMessage());
Log::error(trans('persona.LOG_HORARIOS').$e->getMessage());
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
}
}
@ -134,44 +135,44 @@ class ApiPersonaController extends Controller
/**
/**
* Funcion de ruta, obtiene los horarios de una persona en una unidad académica específica según el DNI o teléfono.
* Funcion de ruta, obtiene los horarios de una persona en una unidad académica específica según el DNI o teléfono.
*
*
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros necesarios:
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros necesarios:
* - 'dni' o 'telefono' para identificar a la persona.
* - 'dni' o 'telefono' para identificar a la persona.
* - 'unidad_academica' para especificar la unidad académica.
* - 'unidad_academica' para especificar la unidad académica.
* - 'funcion' para especificar la función.
* - 'funcion' para especificar la función.
* - 'dia' para especificar el día de la semana.
* - 'dia' para especificar el día de la semana.
* - 'tipo_horario' para especificar el tipo de horario.
* - 'tipo_horario' para especificar el tipo de horario.
*
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los horarios de la persona, o un mensaje de error si no se encuentra la información.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los horarios de la persona, o un mensaje de error si no se encuentra la información.
*/
*/
public function getHorariosPorUnidadAcademica(Request $request){
public function getHorariosPorUnidadAcademica(Request $request)
{
if(!$request->has('telefono') & & !$request->has('dni')){
if (! $request->has('telefono') & & ! $request->has('dni')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('unidad_academica')){
if (! $request->has('unidad_academica')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_UNIDAD_ACADEMICA')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_UNIDAD_ACADEMICA')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('funcion')){
if (! $request->has('funcion')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_FUNCION')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_FUNCION')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('dia')){
if (! $request->has('dia')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DIA')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DIA')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('tipo_horario')){
if (! $request->has('tipo_horario')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_TIPO_HORARIO')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_TIPO_HORARIO')], HttpStatus::BAD_REQUEST);
}
}
try {
try {
if($request->has('dni')){
if ($request->has('dni')) {
$persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni'));
$persona = UaderMapuchePersona::buscarPersonaPorDni($request->get('dni'));
if($persona){
if ($persona) {
return ApiPersonaController::extraerHorariosPorUnidadAcademica(
return ApiPersonaController::extraerHorariosPorUnidadAcademica(
$persona,
$persona,
@ -183,11 +184,11 @@ class ApiPersonaController extends Controller
}
}
}
}
if($request->has('telefono')){
if ($request->has('telefono')) {
$persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono'));
$persona = UaderMapuchePersona::BuscarPersonaPorTelefono($request->get('telefono'));
if($persona){
if ($persona) {
return ApiPersonaController::extraerHorariosPorUnidadAcademica(
return ApiPersonaController::extraerHorariosPorUnidadAcademica(
$persona,
$persona,
@ -201,10 +202,10 @@ class ApiPersonaController extends Controller
return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.NO_ENCONTRADA')], HttpStatus::BAD_REQUEST);
} catch (\Exception $e) {
} catch (\Exception $e) {
Log::error(trans('persona.LOG_HORARIOS') . $e->getMessage());
Log::error(trans('persona.LOG_HORARIOS').$e->getMessage());
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
}
}
@ -212,9 +213,8 @@ class ApiPersonaController extends Controller
/**
/**
* Funcion de ruta, obtiene la dirección de una persona según el DNI o el número de teléfono.
* Funcion de ruta, obtiene la dirección de una persona según el DNI o el número de teléfono.
*
*
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda:
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda:
* - 'dni' o 'telefono' para identificar a la persona.
* - 'dni' o 'telefono' para identificar a la persona.
*
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
*/
*/
public function getDireccion(Request $request)
public function getDireccion(Request $request)
@ -222,16 +222,15 @@ class ApiPersonaController extends Controller
/**
/**
* Obtiene la direccion de una persona según el DNI o el número de teléfono.
* Obtiene la direccion de una persona según el DNI o el número de teléfono.
*
*
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda.
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
*/
*/
if (! $request->has('dni') & & ! $request->has('telefono')) {
if(!$request->has('dni') & & !$request->has('telefono')){
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
}
}
try{
try {
if ($request->has('dni')) {
if ($request->has('dni')) {
@ -255,7 +254,8 @@ class ApiPersonaController extends Controller
} catch (\Exception $e) {
} catch (\Exception $e) {
Log::error(trans('persona.LOG_DATOS') . $e->getMessage());
Log::error(trans('persona.LOG_DATOS').$e->getMessage());
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
}
}
@ -264,22 +264,23 @@ class ApiPersonaController extends Controller
* Funcion de ruta que obtiene las funciones de una persona en una determinada unidad academica
* Funcion de ruta que obtiene las funciones de una persona en una determinada unidad academica
* según el DNI o el número de teléfono.
* según el DNI o el número de teléfono.
*
*
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda.
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
*/
*/
public function getFuncionesPorUnidadAcademica(Request $request){
public function getFuncionesPorUnidadAcademica(Request $request)
{
if(!$request->has('unidad_academica')){
if (! $request->has('unidad_academica')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_UNIDAD_ACADEMICA')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_UNIDAD_ACADEMICA')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('dni') & & !$request->has('telefono')){
if (! $request->has('dni') & & ! $request->has('telefono')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
}
}
try{
try {
if ($request->has('dni')) {
if ($request->has('dni')) {
@ -303,7 +304,8 @@ class ApiPersonaController extends Controller
} catch (\Exception $e) {
} catch (\Exception $e) {
Log::error(trans('persona.LOG_DATOS') . $e->getMessage());
Log::error(trans('persona.LOG_DATOS').$e->getMessage());
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
}
}
@ -312,22 +314,23 @@ class ApiPersonaController extends Controller
* Funcion de ruta que obtiene las funciones de una persona en una determinada sede
* Funcion de ruta que obtiene las funciones de una persona en una determinada sede
* según el DNI o el número de teléfono.
* según el DNI o el número de teléfono.
*
*
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda.
* @param \Illuminate\Http\Request $request La solicitud HTTP que contiene los parámetros de búsqueda.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos de la persona encontrada, o un mensaje de error si no se encuentra.
*/
*/
public function getFuncionesPorSede(Request $request){
public function getFuncionesPorSede(Request $request)
{
if(!$request->has('sede')){
if (! $request->has('sede')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_SEDE')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_SEDE')], HttpStatus::BAD_REQUEST);
}
}
if(!$request->has('dni') & & !$request->has('telefono')){
if (! $request->has('dni') & & ! $request->has('telefono')) {
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST);
}
}
try{
try {
if ($request->has('dni')) {
if ($request->has('dni')) {
@ -351,67 +354,69 @@ class ApiPersonaController extends Controller
} catch (\Exception $e) {
} catch (\Exception $e) {
Log::error(trans('persona.LOG_DATOS') . $e->getMessage());
Log::error(trans('persona.LOG_DATOS').$e->getMessage());
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
return response()->json(['error' => trans('persona.ERROR')], HttpStatus::INTERNAL_SERVER_ERROR);
}
}
}
}
# SUBRUTAS INVOCADAS POR LAS RUTAS:
// SUBRUTAS INVOCADAS POR LAS RUTAS:
/**
/**
* Devuelve en formato JSON los horarios asignados a una persona en una sede específica, filtrados por función, día y tipo de horario.
* Devuelve en formato JSON los horarios asignados a una persona en una sede específica, filtrados por función, día y tipo de horario.
*
*
* @param \App\Models\Persona $persona El objeto de la persona cuya declaración jurada se utiliza para extraer los horarios.
* @param \App\Models\Persona $persona El objeto de la persona cuya declaración jurada se utiliza para extraer los horarios.
* @param string $sede El código de la sede para filtrar las funciones.
* @param string $sede El código de la sede para filtrar las funciones.
* @param int $funcion El ID de la función para filtrar los horarios.
* @param int $funcion El ID de la función para filtrar los horarios.
* @param int $dia El día de la semana para filtrar los horarios.
* @param int $dia El día de la semana para filtrar los horarios.
* @param string $tipoHorario El tipo de horario para filtrar los horarios.
* @param string $tipoHorario El tipo de horario para filtrar los horarios.
* @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona, la función y los horarios correspondientes a la sede especificada.
* @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona, la función y los horarios correspondientes a la sede especificada.
*/
*/
public function extraerHorariosPorSede($persona, $sede, $funcion, $dia, $tipoHorario){
public function extraerHorariosPorSede($persona, $sede, $funcion, $dia, $tipoHorario)
{
$declaracion_jurada = $persona->declaracion_jurada;
$declaracion_jurada = $persona->declaracion_jurada;
if(!$declaracion_jurada){
if (! $declaracion_jurada) {
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
}
}
$cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
$cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
if(empty($cargos)){
if (empty($cargos)) {
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND);
}
}
$horarios = array() ;
$horarios = [] ;
$aux_horario = null;
$aux_horario = null;
$unidadAcademica = null;
$unidadAcademica = null;
foreach ($cargos as $cargo) {
foreach ($cargos as $cargo) {
if($unidadAcademica == null){
if ($unidadAcademica == null) {
$unidadAcademica = $cargo->Sede->ua_guarani;
$unidadAcademica = $cargo->Sede->ua_guarani;
}
}
if($cargo->id_funcion == $funcion & & $cargo->Sede->uacad == $sede){
if ($cargo->id_funcion == $funcion & & $cargo->Sede->uacad == $sede) {
# Si vino
// Si vino
foreach ($cargo->GrupoHorario as $grupo_horario) {
foreach ($cargo->GrupoHorario as $grupo_horario) {
foreach ($grupo_horario->Horarios as $horario) {
foreach ($grupo_horario->Horarios as $horario) {
if ($horario->dia_semanal == $dia & & $horario->tipo_horario == $tipoHorario){
if ($horario->dia_semanal == $dia & & $horario->tipo_horario == $tipoHorario) {
$aux_horario = [
$aux_horario = [
'tipo_horario' => $horario->tipo_horario,
'tipo_horario' => $horario->tipo_horario,
'hora_entra' => $horario->hora_entra,
'hora_entra' => $horario->hora_entra,
'hora_sale' => $horario->hora_sale
'hora_sale' => $horario->hora_sale,
];
];
if(!in_array($aux_horario, $horarios)){
if (! in_array($aux_horario, $horarios)) {
$horarios[] = [
$horarios[] = [
'tipo_horario' => $horario->tipo_horario,
'tipo_horario' => $horario->tipo_horario,
'hora_entra' => $horario->hora_entra,
'hora_entra' => $horario->hora_entra,
'hora_sale' => $horario->hora_sale
'hora_sale' => $horario->hora_sale,
];
];
}
}
}
}
@ -420,23 +425,23 @@ class ApiPersonaController extends Controller
}
}
}
}
if(empty($horarios)){
if (empty($horarios)) {
return response()->json(['error' => trans('persona.SIN_HORARIOS')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.SIN_HORARIOS')], HttpStatus::NOT_FOUND);
}
}
# Ordenar el arreglo de horarios usando la función de comparación
// Ordenar el arreglo de horarios usando la función de comparación
usort($horarios, [ApiPersonaController::class, 'compararHorarios']);
usort($horarios, [ApiPersonaController::class, 'compararHorarios']);
$datos = array(
$datos = [
'id' => $declaracion_jurada->id_persona,
'id' => $declaracion_jurada->id_persona,
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))) . ' ' . ucwords(strtolower(trim($persona->desc_appat))),
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))),
'funcion' => [
'funcion' => [
'tipo' => $funcion,
'tipo' => $funcion,
'unidad_academica' => $unidadAcademica,
'unidad_academica' => $unidadAcademica,
'sede' => $sede,
'sede' => $sede,
],
],
'horarios' => $horarios,
'horarios' => $horarios,
) ;
] ;
return response()->json($datos, HttpStatus::OK);
return response()->json($datos, HttpStatus::OK);
}
}
@ -444,57 +449,58 @@ class ApiPersonaController extends Controller
/**
/**
* Devuelve en formato JSON los horarios asignados a una persona en una unidad académica específica, filtrados por función, día y tipo de horario.
* Devuelve en formato JSON los horarios asignados a una persona en una unidad académica específica, filtrados por función, día y tipo de horario.
*
*
* @param \App\Models\Persona $persona El objeto de la persona cuya declaración jurada se utiliza para extraer los horarios.
* @param \App\Models\Persona $persona El objeto de la persona cuya declaración jurada se utiliza para extraer los horarios.
* @param string $unidadAcademica El código de la unidad académica para filtrar las funciones.
* @param string $unidadAcademica El código de la unidad académica para filtrar las funciones.
* @param int $funcion El ID de la función para filtrar los horarios.
* @param int $funcion El ID de la función para filtrar los horarios.
* @param int $dia El día de la semana para filtrar los horarios.
* @param int $dia El día de la semana para filtrar los horarios.
* @param string $tipoHorario El tipo de horario para filtrar los horarios.
* @param string $tipoHorario El tipo de horario para filtrar los horarios.
* @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona, la función y los horarios correspondientes a la unidad académica especificada.
* @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona, la función y los horarios correspondientes a la unidad académica especificada.
*/
*/
public function extraerHorariosPorUnidadAcademica($persona, $unidadAcademica, $funcion, $dia, $tipoHorario){
public function extraerHorariosPorUnidadAcademica($persona, $unidadAcademica, $funcion, $dia, $tipoHorario)
{
$declaracion_jurada = $persona->declaracion_jurada;
$declaracion_jurada = $persona->declaracion_jurada;
if(!$declaracion_jurada){
if (! $declaracion_jurada) {
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
}
}
$cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
$cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
if(empty($cargos)){
if (empty($cargos)) {
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND);
}
}
$horarios = array() ;
$horarios = [] ;
$aux_horario = null;
$aux_horario = null;
$sede = null;
$sede = null;
foreach ($cargos as $cargo) {
foreach ($cargos as $cargo) {
if($sede == null){
if ($sede == null) {
$sede = $cargo->Sede->uacad;
$sede = $cargo->Sede->uacad;
}
}
if($cargo->id_funcion == $funcion & & $cargo->Sede->ua_guarani == $unidadAcademica){
if ($cargo->id_funcion == $funcion & & $cargo->Sede->ua_guarani == $unidadAcademica) {
# Si vino
// Si vino
foreach ($cargo->GrupoHorario as $grupo_horario) {
foreach ($cargo->GrupoHorario as $grupo_horario) {
foreach ($grupo_horario->Horarios as $horario) {
foreach ($grupo_horario->Horarios as $horario) {
if ($horario->dia_semanal == $dia & & $horario->tipo_horario == $tipoHorario){
if ($horario->dia_semanal == $dia & & $horario->tipo_horario == $tipoHorario) {
$aux_horario = [
$aux_horario = [
'tipo_horario' => $horario->tipo_horario,
'tipo_horario' => $horario->tipo_horario,
'hora_entra' => $horario->hora_entra,
'hora_entra' => $horario->hora_entra,
'hora_sale' => $horario->hora_sale
'hora_sale' => $horario->hora_sale,
];
];
if(!in_array($aux_horario, $horarios)){
if (! in_array($aux_horario, $horarios)) {
$horarios[] = [
$horarios[] = [
'tipo_horario' => $horario->tipo_horario,
'tipo_horario' => $horario->tipo_horario,
'hora_entra' => $horario->hora_entra,
'hora_entra' => $horario->hora_entra,
'hora_sale' => $horario->hora_sale
'hora_sale' => $horario->hora_sale,
];
];
}
}
}
}
@ -503,23 +509,23 @@ class ApiPersonaController extends Controller
}
}
}
}
if(empty($horarios)){
if (empty($horarios)) {
return response()->json(['error' => trans('persona.SIN_HORARIOS')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.SIN_HORARIOS')], HttpStatus::NOT_FOUND);
}
}
# Ordenar el arreglo de horarios usando la función de comparación
// Ordenar el arreglo de horarios usando la función de comparación
usort($horarios, [ApiPersonaController::class, 'compararHorarios']);
usort($horarios, [ApiPersonaController::class, 'compararHorarios']);
$datos = array(
$datos = [
'id' => $declaracion_jurada->id_persona,
'id' => $declaracion_jurada->id_persona,
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))) . ' ' . ucwords(strtolower(trim($persona->desc_appat))),
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))),
'funcion' => [
'funcion' => [
'tipo' => $funcion,
'tipo' => $funcion,
'unidad_academica' => $unidadAcademica,
'unidad_academica' => $unidadAcademica,
'sede' => $sede,
'sede' => $sede,
],
],
'horarios' => $horarios,
'horarios' => $horarios,
) ;
] ;
return response()->json($datos, HttpStatus::OK);
return response()->json($datos, HttpStatus::OK);
}
}
@ -527,25 +533,26 @@ class ApiPersonaController extends Controller
/**
/**
* Extrae los datos de la declaracion jurada de una persona y los retorna como JSON.
* Extrae los datos de la declaracion jurada de una persona y los retorna como JSON.
*
*
* @param mixed $persona La instancia de la persona de la cual se extraerán los datos.
* @param mixed $persona La instancia de la persona de la cual se extraerán los datos.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos extraídos de la persona.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos extraídos de la persona.
*/
*/
public static function extraerDatosJson($persona){
public static function extraerDatosJson($persona)
{
$declaracion_jurada = $persona->declaracion_jurada;
$declaracion_jurada = $persona->declaracion_jurada;
if(!$declaracion_jurada){
if (! $declaracion_jurada) {
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
}
}
$datos = array(
$datos = [
'id' => $declaracion_jurada->id_persona ?? null, # id persona de la tabla 'uader_persona'
'id' => $declaracion_jurada->id_persona ?? null, // id persona de la tabla 'uader_persona'
'dni' => $persona->nro_docum ?? null,
'dni' => $persona->nro_docum ?? null,
'apellido' => ucwords(strtolower(trim($persona->desc_appat))) ?? null,
'apellido' => ucwords(strtolower(trim($persona->desc_appat))) ?? null,
'nombres' => ucwords(strtolower(trim($persona->desc_nombr))) ?? null,
'nombres' => ucwords(strtolower(trim($persona->desc_nombr))) ?? null,
'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)) ?? null,
'telefono' => '549'.preg_replace('([^0-9])', '', trim($persona->telefono_celular)) ?? null,
'email' => strtolower(trim($persona->correo_electronico)) ?? null,
'email' => strtolower(trim($persona->correo_electronico)) ?? null,
) ;
] ;
return response()->json($datos, HttpStatus::OK);
return response()->json($datos, HttpStatus::OK);
}
}
@ -553,22 +560,23 @@ class ApiPersonaController extends Controller
/**
/**
* Extrae los datos de la direccion de una persona para ser devueltos como respuesta JSON.
* Extrae los datos de la direccion de una persona para ser devueltos como respuesta JSON.
*
*
* @param App\Models\UaderMapuchePersona $persona La instancia de la persona de la cual se extraerán los datos.
* @param App\Models\UaderMapuchePersona $persona La instancia de la persona de la cual se extraerán los datos.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos extraídos de la persona.
* @return \Illuminate\Http\JsonResponse La respuesta JSON con los datos extraídos de la persona.
**/
**/
public static function extraerDireccion($persona){
public static function extraerDireccion($persona)
{
$declaracion_jurada = $persona->declaracion_jurada;
$declaracion_jurada = $persona->declaracion_jurada;
if(!$declaracion_jurada){
if (! $declaracion_jurada) {
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
}
}
$datos = array(
$datos = [
'id' => $declaracion_jurada->id_persona,
'id' => $declaracion_jurada->id_persona,
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))) . ' ' .ucwords(strtolower(trim($persona->desc_appat))) ?? null,
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))) ?? null,
'domicilio' => array(
'domicilio' => [
'calle' => strtolower(trim($persona->calle)) ?? null,
'calle' => strtolower(trim($persona->calle)) ?? null,
'numero' => strtolower(trim($persona->numero)) ?? null,
'numero' => strtolower(trim($persona->numero)) ?? null,
'piso' => strtolower(trim($persona->piso)) ?? null,
'piso' => strtolower(trim($persona->piso)) ?? null,
@ -580,8 +588,8 @@ class ApiPersonaController extends Controller
'casa_manzana' => strtolower(trim($persona->casa_manzana)) ?? null,
'casa_manzana' => strtolower(trim($persona->casa_manzana)) ?? null,
'localidad' => ucfirst(strtolower(trim($persona->Localidad->desc_localidad))) ?? null,
'localidad' => ucfirst(strtolower(trim($persona->Localidad->desc_localidad))) ?? null,
'provincia' => trim($persona->Provincia->descripcion_pcia) ?? null,
'provincia' => trim($persona->Provincia->descripcion_pcia) ?? null,
)
],
) ;
] ;
return response()->json($datos, HttpStatus::OK);
return response()->json($datos, HttpStatus::OK);
}
}
@ -590,37 +598,38 @@ class ApiPersonaController extends Controller
* Extrae las funciones asignadas a una persona en una unidad académica específica
* Extrae las funciones asignadas a una persona en una unidad académica específica
* y las devuelve en un formato JSON.
* y las devuelve en un formato JSON.
*
*
* @param \App\Models\Persona $persona El objeto de la persona cuya declaración jurada se utiliza para extraer las funciones.
* @param \App\Models\Persona $persona El objeto de la persona cuya declaración jurada se utiliza para extraer las funciones.
* @param string $unidadAcademica El código de la unidad académica para filtrar las funciones.
* @param string $unidadAcademica El código de la unidad académica para filtrar las funciones.
* @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona y las funciones correspondientes a la unidad académica especificada.
* @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona y las funciones correspondientes a la unidad académica especificada.
*/
*/
public static function extraerFuncionesPorUnidadAcademica($persona, $unidadAcademica){
public static function extraerFuncionesPorUnidadAcademica($persona, $unidadAcademica)
{
$declaracion_jurada = $persona->declaracion_jurada;
$declaracion_jurada = $persona->declaracion_jurada;
if(!$declaracion_jurada){
if (! $declaracion_jurada) {
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
}
}
$cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
$cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
if(empty($cargos)){
if (empty($cargos)) {
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND);
}
}
$cargosUnidadAcademica = array() ;
$cargosUnidadAcademica = [] ;
foreach ($cargos as $cargo) {
foreach ($cargos as $cargo) {
if($cargo->Sede->ua_guarani == $unidadAcademica){
if ($cargo->Sede->ua_guarani == $unidadAcademica) {
$cargosUnidadAcademica[] = $cargo;
$cargosUnidadAcademica[] = $cargo;
}
}
}
}
if(empty($cargosUnidadAcademica)){
if (empty($cargosUnidadAcademica)) {
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES_UA')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES_UA')], HttpStatus::NOT_FOUND);
}
}
$funciones = array() ;
$funciones = [] ;
$funcion = null;
$funcion = null;
foreach ($cargosUnidadAcademica as $cargoUnidadAcademica) {
foreach ($cargosUnidadAcademica as $cargoUnidadAcademica) {
@ -628,19 +637,19 @@ class ApiPersonaController extends Controller
$funcion = [
$funcion = [
'tipo' => $cargoUnidadAcademica->id_funcion,
'tipo' => $cargoUnidadAcademica->id_funcion,
'unidad_academica' => $unidadAcademica,
'unidad_academica' => $unidadAcademica,
'sede' => $cargoUnidadAcademica->Sede->uacad
'sede' => $cargoUnidadAcademica->Sede->uacad,
];
];
if(!in_array($funcion, $funciones)){ # para que no se repitan las funciones por cargo
if (! in_array($funcion, $funciones)) { // para que no se repitan las funciones por cargo
$funciones[] = $funcion;
$funciones[] = $funcion;
}
}
}
}
$datos = array(
$datos = [
'id' => $declaracion_jurada->id_persona,
'id' => $declaracion_jurada->id_persona,
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))) . ' ' . ucwords(strtolower(trim($persona->desc_appat))),
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))),
'funciones' => $funciones,
'funciones' => $funciones,
) ;
] ;
return response()->json($datos, HttpStatus::OK);
return response()->json($datos, HttpStatus::OK);
}
}
@ -649,42 +658,43 @@ class ApiPersonaController extends Controller
* Extrae las funciones asignadas a una persona en una sede específica
* Extrae las funciones asignadas a una persona en una sede específica
* y las devuelve en un formato JSON.
* y las devuelve en un formato JSON.
*
*
* @param \App\Models\Persona $persona El objeto de la persona cuya declaración jurada se utiliza para extraer las funciones.
* @param \App\Models\Persona $persona El objeto de la persona cuya declaración jurada se utiliza para extraer las funciones.
* @param string $sede El código de la sede para filtrar las funciones.
* @param string $sede El código de la sede para filtrar las funciones.
* @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona y las funciones correspondientes a la sede especificada.
* @return \Illuminate\Http\JsonResponse Una respuesta JSON que contiene la información de la persona y las funciones correspondientes a la sede especificada.
*/
*/
public static function extraerFuncionesPorSede($persona, $sede){
public static function extraerFuncionesPorSede($persona, $sede)
{
$declaracion_jurada = $persona->declaracion_jurada;
$declaracion_jurada = $persona->declaracion_jurada;
if(!$declaracion_jurada){
if (! $declaracion_jurada) {
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND);
}
}
$cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
$cargos = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get();
if(empty($cargos)){
if (empty($cargos)) {
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES')], HttpStatus::NOT_FOUND);
}
}
$cargosSedes = array() ;
$cargosSedes = [] ;
$unidadAcademica = null;
$unidadAcademica = null;
foreach ($cargos as $cargo) {
foreach ($cargos as $cargo) {
if($cargo->Sede->uacad == $sede){
if ($cargo->Sede->uacad == $sede) {
$cargosSedes[] = $cargo;
$cargosSedes[] = $cargo;
if($unidadAcademica == null){
if ($unidadAcademica == null) {
$unidadAcademica = $cargo->Sede->ua_guarani;
$unidadAcademica = $cargo->Sede->ua_guarani;
}
}
}
}
}
}
if(empty($cargosSedes)){
if (empty($cargosSedes)) {
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES_SEDE')], HttpStatus::NOT_FOUND);
return response()->json(['error' => trans('persona.NO_TIENE_DESIGNACIONES_SEDE')], HttpStatus::NOT_FOUND);
}
}
$funciones = array() ;
$funciones = [] ;
$funcion = null;
$funcion = null;
foreach ($cargosSedes as $cargoSede) {
foreach ($cargosSedes as $cargoSede) {
@ -692,36 +702,36 @@ class ApiPersonaController extends Controller
$funcion = [
$funcion = [
'tipo' => $cargoSede->id_funcion,
'tipo' => $cargoSede->id_funcion,
'unidad_academica' => $unidadAcademica,
'unidad_academica' => $unidadAcademica,
'sede' => $sede
'sede' => $sede,
];
];
if(!in_array($funcion, $funciones)){ # para que no se repitan las funciones por tarea o designacion
if (! in_array($funcion, $funciones)) { // para que no se repitan las funciones por tarea o designacion
$funciones[] = $funcion;
$funciones[] = $funcion;
}
}
}
}
$datos = array(
$datos = [
'id' => $declaracion_jurada->id_persona,
'id' => $declaracion_jurada->id_persona,
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))) . ' ' . ucwords(strtolower(trim($persona->desc_appat))),
'nombre' => ucwords(strtolower(trim($persona->desc_nombr))).' '.ucwords(strtolower(trim($persona->desc_appat))),
'funciones' => $funciones,
'funciones' => $funciones,
) ;
] ;
return response()->json($datos, HttpStatus::OK);
return response()->json($datos, HttpStatus::OK);
}
}
# FUNCIONES STANDALONE:
// FUNCIONES STANDALONE:
/**
/**
* Compara dos horarios por su hora de entrada.
* Compara dos horarios por su hora de entrada.
*
*
* Utilizada para ordenar un arreglo de horarios.
* Utilizada para ordenar un arreglo de horarios.
*
*
* @param array $a El primer horario a comparar.
* @param array $a El primer horario a comparar.
* @param array $b El segundo horario a comparar.
* @param array $b El segundo horario a comparar.
* @return int Un valor negativo si $a es menor que $b, cero si son iguales, o un valor positivo si $a es mayor que $b.
* @return int Un valor negativo si $a es menor que $b, cero si son iguales, o un valor positivo si $a es mayor que $b.
*/
*/
public static function compararHorarios($a, $b) {
public static function compararHorarios($a, $b)
{
return strcmp($a['hora_entra'], $b['hora_entra']);
return strcmp($a['hora_entra'], $b['hora_entra']);
}
}
}
}