| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Http\Controllers\Controller;
- use App\Services\PeriodoService;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Storage;
- use Illuminate\Support\Facades\Validator;
- class CircularesController extends Controller
- {
- protected $nombrePeriodoActivo;
- public function __construct(PeriodoService $periodoService)
- {
- try {
- $this->nombrePeriodoActivo = $periodoService->obtenerPeriodoActivoNombre();
- } catch (\Exception $e) {
- $this->nombrePeriodoActivo = null;
- }
- }
- public function findOne($id)
- {
- $id = base64_decode($id);
- $circular = DB::table('circulares')->where('idCircular', $id)->first();
- return response()->json($circular, 200);
- }
- public function getByUser($id)
- {
- $circular = DB::table('vista_circulares_cu')
- ->where('idUsuario', $id)
- ->orderBy('fechaPublicacion', 'desc') // ordena de más reciente a menos reciente
- ->get();
- return response()->json($circular, 200);
- }
- public function estadisticas($id)
- {
- // $id = base64_decode($id);
- $circular = DB::table('circulares_usuarios_colegioabc')
- ->join('usuarios as u', 'circulares_usuarios_colegioabc.idUsuario', '=', 'u.idUsuario')
- ->select(
- 'circulares_usuarios_colegioabc.idUsuario',
- 'circulares_usuarios_colegioabc.fechaLectura',
- 'circulares_usuarios_colegioabc.medioLectura',
- DB::raw("CONCAT(u.primerNombre, ' ', COALESCE(u.segundoNombre, ''), ' ', u.apellidoPaterno, ' ', COALESCE(u.apellidoMaterno, '')) AS nombreCompleto")
- )
- ->where('circulares_usuarios_colegioabc.idCircular', $id)
- ->get();
- $vistos = DB::table('circulares_usuarios_colegioabc')
- ->select('idUsuario', 'fechaLectura', 'medioLectura')
- ->where('idCircular', $id)
- ->whereNotNull('fechaLectura')
- ->get();
- $total = $circular->count();
- $vistosa = $vistos->count();
- $porcentaje = ($vistosa * 100) / $total;
- $porcentaje = number_format($porcentaje, 2, '.', '');
- return response()->json([
- 'data' => $circular,
- 'total' => $total,
- 'vistos' => $vistosa,
- 'porcentaje' => '%' . $porcentaje
- ], 200);
- }
- public function download($id)
- {
- // $id = base64_decode($id);
- $fileUrl = $id ? asset('storage/circulares/' . $id) : null;
- return response()->json($fileUrl, 200);
- }
- public function mostrar()
- {
- $circularList = DB::table('circulares')
- ->where('idEscuela', 'COLEGIOABC')
- ->orderBy('estado', 'asc')
- ->get();
- foreach ($circularList as $circular) {
- if (isset($circular->audiencia)) {
- $audiencia = null;
- if ($circular->audiencia == 'AL') {
- $audiencia = 'Alumnos';
- } else if ($circular->audiencia == 'PF') {
- $audiencia = 'Padres de Familia';
- } else if ($circular->audiencia == 'PR') {
- $audiencia = 'Profesores';
- } else if ($circular->audiencia == 'AD') {
- $audiencia = 'Administrativos';
- }
- if (isset($circular->idReceptores)) {
- $nombreReceptor = null;
- $nivel = DB::table('niveles')->where('idNivel', $circular->idReceptores)->first(['nombreNivel']);
- if ($nivel) {
- $nombreReceptor = $nivel->nombreNivel;
- }
- if (!$nombreReceptor) {
- $grupo = DB::table('grupos')->where('idGrupo', $circular->idReceptores)->first(['nombreGrupo']);
- if ($grupo) {
- $nombreReceptor = $grupo->nombreGrupo;
- }
- }
- if (!$nombreReceptor) {
- $materia = DB::table('materias')->where('idMateria', $circular->idReceptores)->first(['nombreMateria']);
- if ($materia) {
- $nombreReceptor = $materia->nombreMateria;
- }
- }
- if (!$nombreReceptor) {
- $nombreReceptor = $circular->idReceptores;
- }
- if ($circular->idReceptores == 'AL' || $circular->idReceptores == 'PF' || $circular->idReceptores == 'PR' || $circular->idReceptores == 'AD') {
- $nombreReceptor = 'Todos';
- }
- if ($nombreReceptor) {
- $circular->rolName = $nombreReceptor . ' - ' . $audiencia;
- }
- }
- }
- }
- return response()->json($circularList, 200);
- }
- public function extraInfo($id)
- {
- $id = base64_decode($id);
- $circular = DB::table('vista_circulares_usuarios')
- ->where('idCircular', $id)
- ->first();
- return response()->json($circular, 200);
- }
- public function ultimasCirc()
- {
- $circularList = DB::table('circulares')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('estado', 'Activo')
- ->orderBy('fechaPublicacion', 'desc')
- ->get();
- foreach ($circularList as $circular) {
- if (isset($circular->audiencia)) {
- $audiencia = null;
- if ($circular->audiencia == 'AL') {
- $audiencia = 'Alumnos';
- } else if ($circular->audiencia == 'PF') {
- $audiencia = 'Padres de Familia';
- } else if ($circular->audiencia == 'PR') {
- $audiencia = 'Profesores';
- } else if ($circular->audiencia == 'AD') {
- $audiencia = 'Administrativos';
- }
- $circular->audiencia = $audiencia;
- }
- }
- foreach ($circularList as $circular) {
- if (isset($circular->idReceptores)) {
- $nombreReceptor = null;
- $nivel = DB::table('niveles')->where('idNivel', $circular->idReceptores)->first(['nombreNivel']);
- if ($nivel) {
- $nombreReceptor = $nivel->nombreNivel;
- }
- if (!$nombreReceptor) {
- $grupo = DB::table('grupos')->where('idGrupo', $circular->idReceptores)->first(['nombreGrupo']);
- if ($grupo) {
- $nombreReceptor = $grupo->nombreGrupo;
- }
- }
- if (!$nombreReceptor) {
- $materia = DB::table('materias')->where('idMateria', $circular->idReceptores)->first(['nombreMateria']);
- if ($materia) {
- $nombreReceptor = $materia->nombreMateria;
- }
- }
- if (!$nombreReceptor) {
- $nombreReceptor = $circular->idReceptores;
- }
- if ($circular->idReceptores == 'AL' || $circular->idReceptores == 'PF' || $circular->idReceptores == 'PR' || $circular->idReceptores == 'AD') {
- $nombreReceptor = 'Todos';
- }
- if ($nombreReceptor) {
- $circular->idReceptores = $nombreReceptor;
- }
- }
- }
- return response()->json($circularList, 200);
- }
- // public function crear(Request $request)
- // {
- // try {
- // // Rutas para almacenar los archivos
- // $storagePath = 'public/circulares/';
- // $archivosAdjuntos = [];
- // // Procesar cada archivo en base64
- // if ($request->has('bases64')) {
- // foreach ($request->bases64 as $file) {
- // // Extraer la extensión del archivo
- // $fileInfo = explode(';', $file['base64'])[0];
- // $fileExtension = explode('/', $fileInfo)[1];
- // switch ($fileExtension) {
- // case 'vnd.openxmlformats-officedocument.wordprocessingml.document':
- // $fileExtension = 'docx';
- // break;
- // case 'vnd.openxmlformats-officedocument.spreadsheetml.sheet':
- // $fileExtension = 'xlsx';
- // break;
- // case 'vnd.openxmlformats-officedocument.presentationml.presentation':
- // $fileExtension = 'pptx';
- // break;
- // default;
- // }
- // // Decodificar el archivo base64
- // $fileData = substr($file['base64'], strpos($file['base64'], ',') + 1);
- // $fileData = str_replace(' ', '+', $fileData);
- // // Nombre del archivo con la extensión correcta
- // $fileName = $file['id'] . '.' . $fileExtension;
- // // Guardar el archivo
- // //
- // Storage::put($storagePath . $fileName, base64_decode($fileData));
- // $archivosAdjuntos[] = [
- // 'nombre' => $file['nombre'],
- // 'ruta' => Storage::url($storagePath . $fileName)
- // ];
- // }
- // }
- // // Insertar la circular en la base de datos
- // DB::table('circulares')->insert([
- // 'idEscuela' => 'COLEGIOABC',
- // 'estado' => 'Activo',
- // 'titulo' => $request->titulo,
- // 'audiencia' => $request->audiencia,
- // 'idReceptores' => $request->idReceptores,
- // 'contenido' => $request->contenido,
- // 'jsonAdjuntos' => json_encode($request->jsonAdjuntos),
- // 'importancia' => $request->importancia,
- // 'fechaCreacion' => $request->fechaCreacion,
- // 'fechaPublicacion' => $request->fechaPublicacion,
- // 'fechaCaducidad' => $request->fechaCaducidad,
- // 'idUsuario' => $request->idUsuario
- // ]);
- // return response()->json([
- // 'mensaje' => 'Circular creada exitosamente',
- // 'idCircular' => DB::getPdo()->lastInsertId()
- // ], 201);
- // } catch (\Exception $e) {
- // return response()->json(['mensaje' => 'Error al crear la circular: ' . $e->getMessage()], 500);
- // }
- // }
- public function crear(Request $request)
- {
- $carpetaBase = config('custom.s3_carpeta_base');
- try {
- $periodoService = new PeriodoService();
- $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre();
- $rutaBucket = 'circulares/';
- $archivosAdjuntos = [];
- // Procesar cada archivo en base64
- if ($request->has('bases64')) {
- foreach ($request->bases64 as $file) {
- // Extraer la extensión MIME y convertir si es necesario
- $fileInfo = explode(';', $file['base64'])[0];
- $fileExtension = explode('/', $fileInfo)[1];
- switch ($fileExtension) {
- case 'vnd.openxmlformats-officedocument.wordprocessingml.document':
- $fileExtension = 'docx';
- break;
- case 'vnd.openxmlformats-officedocument.spreadsheetml.sheet':
- $fileExtension = 'xlsx';
- break;
- case 'vnd.openxmlformats-officedocument.presentationml.presentation':
- $fileExtension = 'pptx';
- break;
- }
- // Decodificar el archivo base64
- $fileData = substr($file['base64'], strpos($file['base64'], ',') + 1);
- $fileData = str_replace(' ', '+', $fileData);
- $contenidoArchivo = base64_decode($fileData);
- // Generar nombre del archivo
- $fileName = $file['id'] . '-' . $file['nombre'] . '.' . $fileExtension;
- $pathS3 = $carpetaBase . '/' . $carpetaPeriodo . '/' . $rutaBucket . $fileName;
- // Esto sube al s3
- Storage::disk('s3')->put($pathS3, $contenidoArchivo, 'public');
- $archivosAdjuntos[] = [
- 'id' => $file['id'],
- 'nombre' => $file['nombre'],
- 'ruta' => Storage::disk('s3')->url($pathS3)
- ];
- }
- }
- // Insertar la circular en la base de datos
- DB::table('circulares')->insert([
- 'idEscuela' => 'COLEGIOABC',
- 'estado' => 'Activo',
- 'titulo' => $request->titulo,
- 'audiencia' => $request->audiencia,
- 'idReceptores' => $request->idReceptores,
- 'contenido' => $request->contenido,
- 'jsonAdjuntos' => json_encode($archivosAdjuntos),
- 'importancia' => $request->importancia,
- 'fechaCreacion' => $request->fechaCreacion,
- 'fechaPublicacion' => $request->fechaPublicacion,
- 'fechaCaducidad' => $request->fechaCaducidad,
- 'idUsuario' => $request->idUsuario,
- 'urls' => $request->urls
- ]);
- return response()->json([
- 'mensaje' => 'Circular creada exitosamente',
- 'idCircular' => DB::getPdo()->lastInsertId()
- ], 201);
- } catch (\Exception $e) {
- return response()->json(['mensaje' => 'Error al crear la circular: ' . $e->getMessage()], 500);
- }
- }
- public function actualizar(Request $request)
- {
- $carpetaBase = config('custom.s3_carpeta_base');
- try {
- $periodoService = new PeriodoService();
- $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre();
- $rutaBucket = 'circulares/';
- $archivosAdjuntos = [];
- // Obtener los adjuntos anteriores desde la BD
- $adjuntosAnteriores = DB::table('circulares')
- ->where('idCircular', $request->idCircular)
- ->value('jsonAdjuntos');
- $adjuntosAnteriores = $adjuntosAnteriores ? json_decode($adjuntosAnteriores, true) : [];
- // Si se mandan nuevos archivos base64, los procesamos
- if ($request->has('bases64') && !empty($request->bases64)) {
- foreach ($request->bases64 as $file) {
- // Extraer extensión
- $fileInfo = explode(';', $file['base64'])[0];
- $fileExtension = explode('/', $fileInfo)[1];
- switch ($fileExtension) {
- case 'vnd.openxmlformats-officedocument.wordprocessingml.document':
- $fileExtension = 'docx';
- break;
- case 'vnd.openxmlformats-officedocument.spreadsheetml.sheet':
- $fileExtension = 'xlsx';
- break;
- case 'vnd.openxmlformats-officedocument.presentationml.presentation':
- $fileExtension = 'pptx';
- break;
- }
- // Generar nombre
- $fileName = $file['id'] . '-' . $file['nombre'] . '.' . $fileExtension;
- $pathS3 = $carpetaBase . '/' . $carpetaPeriodo . '/' . $rutaBucket . $fileName;
- // Subir nuevo archivo
- $fileData = substr($file['base64'], strpos($file['base64'], ',') + 1);
- $fileData = str_replace(' ', '+', $fileData);
- $contenidoArchivo = base64_decode($fileData);
- Storage::disk('s3')->put($pathS3, $contenidoArchivo, 'public');
- $archivosAdjuntos[] = [
- 'id' => $file['id'],
- 'nombre' => $file['nombre'],
- 'ruta' => Storage::disk('s3')->url($pathS3)
- ];
- }
- $archivosAdjuntos = array_merge($adjuntosAnteriores, $archivosAdjuntos);
- } else {
- // Se mantienen los adjuntos anteriores si no se mandaron nuevos archivos
- $archivosAdjuntos = $adjuntosAnteriores;
- }
- // Actualizar la circular
- DB::table('circulares')
- ->updateOrInsert(
- ['idCircular' => $request->idCircular],
- [
- 'titulo' => $request->titulo,
- 'audiencia' => $request->audiencia,
- 'idReceptores' => $request->idReceptores,
- 'contenido' => $request->contenido,
- 'jsonAdjuntos' => json_encode($archivosAdjuntos),
- 'importancia' => $request->importancia,
- 'fechaPublicacion' => $request->fechaPublicacion,
- 'fechaCaducidad' => $request->fechaCaducidad,
- 'urls' => $request->urls,
- 'idUsuario' => $request->idUsuario
- ]
- );
- return response()->json(['mensaje' => 'Circular actualizada exitosamente'], 200);
- } catch (\Exception $e) {
- return response()->json(['mensaje' => 'Error al actualizar la circular: ' . $e->getMessage()], 500);
- }
- }
- public function eliminarArchivo(Request $request)
- {
- try {
- // Validar parámetros
- if (!$request->has('idCircular') || !$request->has('idArchivo')) {
- return response()->json(['mensaje' => 'Faltan parámetros'], 400);
- }
- $idCircular = $request->idCircular;
- $idArchivo = $request->idArchivo;
- // Obtener adjuntos actuales
- $adjuntos = DB::table('circulares')
- ->where('idCircular', $idCircular)
- ->value('jsonAdjuntos');
- $adjuntos = $adjuntos ? json_decode($adjuntos, true) : [];
- // Buscar el adjunto por idArchivo
- $index = array_search($idArchivo, array_column($adjuntos, 'id'));
- if ($index === false) {
- return response()->json(['mensaje' => 'Adjunto no encontrado'], 404);
- }
- $archivo = $adjuntos[$index];
- // Obtener la key de S3 desde la url
- $parsedUrl = parse_url($archivo['ruta'], PHP_URL_PATH);
- $key = ltrim(str_replace('pledu-dv-aeci/', '', $parsedUrl), '/');
- // Eliminar de S3 si existe
- if (Storage::disk('s3')->exists($key)) {
- Storage::disk('s3')->delete($key);
- }
- // Eliminar del array y actualizar BD
- array_splice($adjuntos, $index, 1);
- DB::table('circulares')
- ->where('idCircular', $idCircular)
- ->update(['jsonAdjuntos' => json_encode($adjuntos)]);
- return response()->json(['mensaje' => 'Archivo eliminado correctamente'], 200);
- } catch (\Exception $e) {
- return response()->json(['mensaje' => 'Error al eliminar el archivo: ' . $e->getMessage()], 500);
- }
- }
- public function habilitar($id)
- {
- $id = base64_decode($id);
- try {
- //code...
- DB::table('circulares')
- ->updateOrInsert(
- ['idCircular' => $id],
- ['estado' => 'Activo']
- );
- return response()->json(['mensaje' => 'Circular habilitada exitosamente'], 201);
- } catch (\Exception $e) {
- //throw $th;
- return response()->json(['mensaje' => 'Error al habilitar la circular: ' . $e->getMessage()], 500);
- }
- }
- public function eliminar($id)
- {
- $id = base64_decode($id);
- try {
- //code...
- DB::table('circulares')
- ->updateOrInsert(
- ['idCircular' => $id],
- ['estado' => 'Eliminado']
- );
- return response()->json(['mensaje' => 'Circular deshabilitada exitosamente'], 201);
- } catch (\Exception $e) {
- //throw $th;
- return response()->json(['mensaje' => 'Error al habilitar la circular: ' . $e->getMessage()], 500);
- }
- }
- public function getUsuariosCircular(Request $request)
- {
- if ($request->Audiencia == 'AL') {
- if ($request->Destino == 'NivelEducativo') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('vista_grados_niveles', 'vista_grados_niveles.nombreGrado', '=', 'usuarios.grado')
- ->leftJoin('vista_usuarios_grupos1', 'usuarios.idUsuario', '=', 'vista_usuarios_grupos1.idUsuario')
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'AL')
- ->where('vista_grados_niveles.idNivel', $request->id)
- ->select('usuarios.idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- } else if ($request->Destino == 'Grado') {
- $iDUsuario = DB::table('usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('tipoUsuario', 'AL')
- ->where('grado', $request->id)
- ->select('idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- } else if ($request->Destino == 'Grupo') {
- $iDUsuario = DB::table('grupos_usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('idGrupo', $request->id)
- ->select('idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- } else if ($request->Destino == 'Materias') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('vista_usuarios_grupos1', 'vista_usuarios_grupos1.idUsuario', '=', 'usuarios.idUsuario')
- ->leftJoin('vista_materias_grados_grupos', function ($join) {
- $join->on('vista_materias_grados_grupos.idGradoGrupoRelacionado', '=', 'usuarios.grado')
- ->orOn('vista_materias_grados_grupos.idGradoGrupoRelacionado', '=', 'vista_usuarios_grupos1.idGrupo');
- })
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'AL')
- ->where('vista_materias_grados_grupos.idMateria', $request->id)
- ->select('usuarios.idUsuario')
- ->get();
- $iDUsuario = $iDUsuario->unique('idUsuario');
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- } else if ($request->Destino == 'todos') {
- $iDUsuario = DB::table('usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('tipoUsuario', 'AL')
- ->select('idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- }
- } else if ($request->Audiencia == 'PF') {
- if ($request->Destino == 'NivelEducativo') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('usuarios_padres', 'usuarios_padres.idUsuario', '=', 'usuarios.idUsuario')
- ->leftJoin('vista_usuarios_grupos1', 'usuarios.idUsuario', '=', 'vista_usuarios_grupos1.idUsuario')
- ->leftJoin('vista_grados_niveles', 'vista_grados_niveles.nombreGrado', '=', 'usuarios.grado')
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'AL')
- ->where('vista_grados_niveles.idNivel', $request->id)
- ->select('usuarios_padres.idPadre')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idPadre')->toArray()
- ], 200);
- } else if ($request->Destino == 'Grado') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('usuarios_padres', 'usuarios_padres.idUsuario', '=', 'usuarios.idUsuario')
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'AL')
- ->where('usuarios.grado', $request->id)
- ->select('usuarios_padres.idPadre')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idPadre')->toArray()
- ], 200);
- } else if ($request->Destino == 'Grupo') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('usuarios_padres', 'usuarios_padres.idUsuario', '=', 'usuarios.idUsuario')
- ->leftJoin('grupos_usuarios', 'grupos_usuarios.idUsuario', '=', 'usuarios.idUsuario')
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'AL')
- ->where('grupos_usuarios.idGrupo', $request->id)
- ->select('usuarios_padres.idPadre')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idPadre')->toArray()
- ], 200);
- } else if ($request->Destino == 'Materias') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('usuarios_padres', 'usuarios_padres.idUsuario', '=', 'usuarios.idUsuario')
- ->leftJoin('vista_usuarios_grupos1', 'vista_usuarios_grupos1.idUsuario', '=', 'usuarios.idUsuario')
- ->leftJoin('vista_materias_grados_grupos', function ($join) {
- $join->on('vista_materias_grados_grupos.idGradoGrupoRelacionado', '=', 'usuarios.grado')
- ->orOn('vista_materias_grados_grupos.idGradoGrupoRelacionado', '=', 'vista_usuarios_grupos1.idGrupo');
- })
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'AL')
- ->where('vista_materias_grados_grupos.idMateria', $request->id)
- ->select('usuarios_padres.idPadre')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idPadre')->toArray()
- ], 200);
- } else if ($request->Destino == 'todos') {
- $iDUsuario = DB::table('usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('tipoUsuario', 'PF')
- ->select('idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- }
- } else if ($request->Audiencia == 'AD') {
- if ($request->Destino == 'todos') {
- $iDUsuario = DB::table('usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('tipoUsuario', 'AD')
- ->select('idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- }
- } else if ($request->Audiencia == 'PR') {
- if ($request->Destino == 'NivelEducativo') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('vista_usuarios_materias', 'vista_usuarios_materias.idProfesor', '=', 'usuarios.idUsuario')
- ->leftJoin('vista_grados_niveles', 'vista_grados_niveles.nombreGrado', '=', 'vista_usuarios_materias.idGradoGrupoRelacionado')
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'PR')
- ->where('vista_grados_niveles.idNivel', $request->id)
- ->select('usuarios.idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- } else if ($request->Destino == 'Grado') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('vista_usuarios_materias', 'vista_usuarios_materias.idProfesor', '=', 'usuarios.idUsuario')
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'PR')
- ->where('vista_usuarios_materias.idGradoGrupoRelacionado', $request->id)
- ->select('usuarios.idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- } else if ($request->Destino == 'Grupo') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('vista_usuarios_materias', 'vista_usuarios_materias.idProfesor', '=', 'usuarios.idUsuario')
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'PR')
- ->where('vista_usuarios_materias.idGradoGrupoRelacionado', $request->id)
- ->select('usuarios.idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- } else if ($request->Destino == 'Materias') {
- $iDUsuario = DB::table('usuarios')
- ->leftJoin('vista_usuarios_materias', 'vista_usuarios_materias.idProfesor', '=', 'usuarios.idUsuario')
- ->where('usuarios.idEscuela', 'COLEGIOABC')
- ->where('usuarios.tipoUsuario', 'PR')
- ->where('vista_usuarios_materias.idMateria', $request->id)
- ->select('usuarios.idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- } else if ($request->Destino == 'todos') {
- $iDUsuario = DB::table('usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('tipoUsuario', 'PR')
- ->select('idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- }
- } else if ($request->Audiencia == 'TD') {
- if ($request->Destino == 'todos') {
- $iDUsuario = DB::table('usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->select('idUsuario')
- ->get();
- return response()->json([
- 'idUsuario' => $iDUsuario->pluck('idUsuario')->toArray()
- ], 200);
- }
- }
- }
- public function crearDestinoCircular(Request $request)
- {
- $destinoCircular = DB::table('circulares_usuarios_colegioabc')->Insert([
- "idCircular" => $request->idCircular,
- "idUsuario" => $request->idUsuario,
- "fechaLectura" => null,
- "medioLectura" => null,
- ]);
- return response()->json([
- 'mensaje' => 'Destino creado exitosamente',
- 'Usuario' => $request->idUsuario
- ], 201);
- }
- public function actualizarVisto(Request $request)
- {
- $validator = Validator::make($request->all(), [
- 'idCircular' => 'required|integer',
- 'idUsuario' => 'required|string',
- ]);
- if ($validator->fails()) {
- return response()->json(['error' => $validator->errors()], 400);
- }
- $idCircular = $request->input('idCircular');
- $idUsuario = $request->input('idUsuario');
- $record = DB::table('circulares_usuarios_colegioabc')
- ->where('idCircular', $idCircular)
- ->where('idUsuario', $idUsuario)
- ->first();
- if ($record->fechaLectura !== null || $record->medioLectura !== null) {
- return response()->json(['mensaje' => 'Este ya se ha visto'], 200);
- }
- DB::table('circulares_usuarios_colegioabc')
- ->where('idCircular', $idCircular)
- ->where('idUsuario', $idUsuario)
- ->update([
- 'fechaLectura' => now(),
- 'medioLectura' => 'Web'
- ]);
- return response()->json(['mensaje' => 'Record updated successfully'], 200);
- }
- }
|