Modulo Información Personal

Obtener Usuario (2) - [get-user3]

🧾 Descripción

Obtiene la información completa de un usuario del sistema, ya sea Empleado o Estudiante, de acuerdo al identificador enviado (email o DNI/pasaporte).
Retorna datos personales, laborales, de contrato y estado del usuario.
Si es empleado, consulta tablas de Employee —si no existe— consulta Student.


🚀 Endpoint


POST /get-user3

La ruta final depende de tus archivos api.php.


🔐 Seguridad


📥 Request Body

{ "username": "string" }

Parámetros

Campo Tipo Requerido Descripción
username string Email del usuario o número de documento/pasaporte.

📤 Respuestas

✔️ 200 – Usuario encontrado (Empleado)


{ "valor": true, "msn": "Si hay data", "data": [ { "name": "EMP000123", "employee_name": "Juan Pérez", "tipo_usuario": "Empleado", "status": "Active", "vigencia_contrato": "2024-01-01 hasta 2024-12-31", "contratacion": "primer_contrato", "pets": "0", "fecha_de_nacimiento": "05-12", "...": "otros_campos" } ] }

✔️ 200 – Usuario encontrado (Estudiante)

{ "valor": true, "msn": "Si hay data", "data": [ { "name": "STU00234", "employee_name": "Estudiante Ejemplo", "tipo_usuario": "Estudiante", "statusUser": 1, "fecha_de_nacimiento": "", "...": "otros_campos" } ] }

❌ Usuario no encontrado en Employee ni Student


{ "valor": false, "msn": "Sin Estudiante: Su usuario no tiene permisos para acceder al aplicativo. Contactar con soporte.", "data": [] }

❌ Empleado inactivo


{ "valor": false, "msn": "Empleado Inactivo: Comuníquese con su administrador para que pueda verificar el estado de su empleado.", "data": [ ... ] }

❌ Usuario estudiante deshabilitado


{ "valor": false, "msn": "Usuario Deshabilitado: Comuníquese con su administrador para que pueda verificar el estado de su empleado.", "data": [ ... ] }

🧩 Lógica del Servicio

1️⃣ Determinar tipo de búsqueda

Si el username contiene @, se busca por: Employee.user_id = username

Si no: Employee.passport_number = username


2️⃣ Consulta principal (Employee)

Usa dbErp con una consulta SQL dinámica unida a:

Si no hay resultados → se intenta en Student.


3️⃣ Consulta secundaria (Student)

Busca en:

Si no existe → usuario sin permisos.


4️⃣ Validaciones adicionales


5️⃣ Validación de contratos

Se consulta: resource/Contrato de Trabajo

Se determina:


6️⃣ Ajuste final de campos


📚 Response Schema

Para Empleado

Incluye (parcial):

Campo Descripción
name ID del Employee
employee_name Nombre completo
tipo_usuario "Empleado"
status Active, PreActivo, Inactive
vigencia_contrato Rango de fechas
contratacion primer_contrato / renovacion
pets Valor convertido a string
fecha_de_nacimiento mm-dd

Más de 40 campos adicionales según tu SQL.


Para Estudiante

Incluye:

Campo Descripción
name ID del Student
employee_name Nombre completo
tipo_usuario Estudiante
statusUser 1 ó 0
user_image Foto
gender Género
dni Documento

🧪 Ejemplo curl

curl -X POST https://midominio.com/api/get-user3 \ -H "Content-Type: application/json" \ -d '{"username": "juan.perez@empresa.com"}'

Actualizar Datos del Usuario (1) - [update-perfil-info]

🧾 Descripción

Actualiza la información de perfil del empleado dentro del ERP (doctype Employee) mediante una petición PUT, modificando uno o varios de los siguientes datos:

Solo actualiza los campos enviados; los no enviados no se modifican.


🚀 Endpoint


PUT /update-date-perfil

La ruta real depende del archivo routes/api.php.


🔐 Seguridad


📥 Request Body


{ "employe": "HR-EMP-001", "celular": "987654321", "correo": "example@correo.com", "direccion": "Av. Los Olivos 123" }

Campos

Campo Tipo Requerido Descripción
employe string ✔️ Sí ID del empleado en ERPNext (Employee.name).
celular string No Nuevo número de celular.
correo string No Nuevo correo personal. (Actualiza personal_email).
direccion string No Nueva dirección permanente del empleado.

🧩 Validaciones

  1. employe vacío → se devuelve error mediante responseValidate().

  2. Los demás campos son opcionales.

  3. Solo se actualizan los campos enviados.


📤 Responses

✔️ 200 – Actualización exitosa

{ "value": false, "msn": "Actualizacion Exitosa", "data": { ...respuesta del ERPNext... } }

Nota: El valor "value": false parece un bug en tu código, ya que indica éxito pero devuelve false.
Te lo dejo documentado según tu implementación real.


❌ 400 – Faltan parámetros requeridos

Ejemplo cuando no se envía employe:


{ "valor": false, "msn": "Debe enviar el empleado", "data": [] }

(Respuesta generada por responseValidate())


🧠 Lógica Interna (Resumen)

  1. Recibe parámetros del request.

  2. Si employe está vacío → error.

  3. Crea un arreglo updateKeys solo con los campos enviados.

  4. Llama a:


PUT /api/resource/Employee/{employe}

Con el body:

{ "cell_number": "...", "personal_email": "...", "permanent_address": "..." }
  1. Devuelve la respuesta del ERP.


📚 Schemas

Request


{ "employe": "string", "celular": "string (opcional)", "correo": "string (opcional)", "direccion": "string (opcional)" }

Response

{ "value": "boolean", "msn": "string", "data": "object (respuesta del ERP)" }

🧪 Ejemplo de Uso (curl)

curl -X PUT https://midominio.com/api/update-date-perfil \ -H "Content-Type: application/json" \ -d '{ "employe": "EMP-0005", "celular": "987654321", "correo": "nuevo@correo.com", "direccion": "Calle 123" }'

Actualizar Imagen de Perfil del Usuario (1) - [update-img-user]

🧾 Descripción

Actualiza la imagen de perfil de un usuario en ERPNext.
El proceso incluye:

  1. Recepción de un archivo enviado desde la app.

  2. Subida del archivo al endpoint de ERPNext: method/upload_file.

  3. Obtención de la URL generada del archivo.

  4. Actualización del campo user_image del User.

  5. Actualización del campo image en el Employee asociado (si existe).


🚀 Endpoint


POST /update-img-user

La ruta exacta dependerá del archivo de rutas Laravel (api.php).


🔐 Seguridad


📥 Request (Multipart / Form-Data)

Campos requeridos

Campo Tipo Requerido Descripción
file file Imagen a subir (jpg, png, etc.)
user string Nombre del usuario en ERPNext para actualizar (User.name).

Ejemplo (form-data)


file: avatar.png user: user@example.com

📤 Responses

✔️ 200 – Imagen actualizada correctamente


{ "valor": true, "msn": "Imagen de usuario actualizado correctamente", "data": { ... } }

❌ 400 – Faltan datos o error al subir archivo

Ejemplo de error al no recibir archivo:


{ "msn": "File could not be processed" }

❌ 500 – Error de carga o actualización


{ "valor": false, "msn": "Error al actualizar la imagen de usuario", "data": { ... } }

🧩 Lógica Interna

1. Lectura del archivo

$cfile = new \CURLFile($_FILES["file"]['tmp_name'], $_FILES["file"]['type'], $_FILES["file"]['name']);

2. Subida a ERPNext

⚠️ Se sube el archivo como usuario Guest.

3. Validación de respuesta

Debe existir: message.file_url

Si no existe → error.

4. Actualizar información del User

PUT resource/User/{user} { "user_image": "<file_url>" }

5. Actualizar Employee si corresponde


SELECT user_id, name FROM tabEmployee WHERE user_id = {user}

Si existe:

PUT resource/Employee/{employee_id} { "image": "<file_url>" }

📚 Request/Response Schemas

Request (multipart/form-data)


file: File user: string

Response (success)

{ "valor": true, "msn": "Imagen de usuario actualizado correctamente", "data": { "user_image": "url_file" } }

🧪 Ejemplo de uso (curl)

curl -X POST https://midominio.com/api/update-img-user \ -F "file=@/home/user/avatar.png" \ -F "user=user@example.com"