Commit ecbc2dfe authored by Alfonso Rafael Solis Rangel's avatar Alfonso Rafael Solis Rangel
Browse files

Merge branch 'calendario' into 'main'

Calendario

See merge request !28
parents 352c4542 2583b479
Loading
Loading
Loading
Loading
+60 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;
use Carbon\Carbon;

class ContactoController extends Controller
{
@@ -569,6 +570,8 @@ public function upload(Request $request)
            'csv_file' => 'required|mimes:csv,txt',
        ]);

        $profesiones = Profesion::select('id', 'nombre')->get();

        $path = $request->file('csv_file')->getRealPath();
        $content = file_get_contents($path);
        $content = str_replace("\xEF\xBB\xBF", '', $content); 
@@ -582,7 +585,11 @@ public function upload(Request $request)
            }
            $row = array_combine($header, $row);

            $contacto = Contacto::create([
            //TODO: Implementar lo mismo para los demas catalogos

            $existProfesion = $profesiones->firstWhere('nombre', $row['profesion']);

            $datosContacto = [
                'nombre' => $row['nombre'],
                'ap_paterno' => $row['ap_paterno'],
                'ap_materno' => $row['ap_materno'],
@@ -603,7 +610,13 @@ public function upload(Request $request)
                'pais_par' => $row['pais_par'],	
                'finado' => $row['finado'],
                'foto_perfil' => 'assets/images/profile-icon.webp'
            ]);
            ];

            if(isset($existProfesion)){
                $datosContacto['profesion_id'] = $existProfesion->id;
            }

            $contacto = Contacto::create($datosContacto);

            // Procesar teléfonos
            $prefijos = explode(';', $row['prefijo']);
@@ -662,4 +675,49 @@ public function upload(Request $request)

        return redirect()->route('contacto.get')->with('success', 'Importación de contactos almacenada correctamente');
    }

    public function obtenerEventos(Request $request){
        $start = Carbon::parse($request->query('start'));
        $end = Carbon::parse($request->query('end'));

        // Obtener cumpleaños en el rango de fechas visible
        $cumpleanios = Contacto::where(function ($query) use ($start, $end) {
            for ($date = $start->copy(); $date->lte($end); $date->addDay()) {
                $query->orWhere(function ($subQuery) use ($date) {
                    $subQuery->where('mes_cump', $date->format('m'))
                            ->where('dia_cump', $date->format('d'));
                });
            }
        })
        ->select('id', 'nombre', 'ap_paterno', 'ap_materno', 'mes_cump', 'dia_cump')
        ->get();

        // Obtener aniversarios de instituciones en el rango de fechas visible
        $aniversarios = Instituciones::whereBetween('aniversario', [$start, $end])
                                    ->select('id', 'nombre', 'aniversario')
                                    ->get();

        // Combinar los datos en un solo array para el calendario
        $eventos = $cumpleanios->map(function ($contacto) {
            return [
                'id' => $contacto->id,
                'title' => $contacto->nombre . ' ' . $contacto->ap_paterno. ' ' . $contacto->ap_materno,
                'start' => now()->year . '-' . str_pad($contacto->mes_cump, 2, '0', STR_PAD_LEFT) . '-' . str_pad($contacto->dia_cump, 2, '0', STR_PAD_LEFT),
                'className' => 'success',
                'description' => 'Cumpleaños de ' . $contacto->nombre,
            ];
        })->merge($aniversarios->map(function ($institucion) {
            return [
                'id' => $institucion->id,
                'title' => 'Aniversario de ' . $institucion->nombre,
                'start' => $institucion->aniversario,
                'className' => 'danger',
                'description' => 'Aniversario de ' . $institucion->nombre,
            ];
        }));

        return response()->json($eventos);
    }
}

    
 No newline at end of file
+4 −4
Original line number Diff line number Diff line
nombre,ap_paterno,ap_materno,cargo_desc,mes_cump,dia_cump,domicilio_oficial,codigo_postal,localidad_oficial,municipio_oficial,estado,pais,domicilio_par,codigo_postal_par,localidad_par,municipio_par,estado_par,pais_par,finado,prefijo,lada,numero,tipo,estatus,ext,id_radio,observaciones,red_social,tipo_red_social,correo_electronico,tipo_correo_electronico
John,Doe,,Amigo del hijo del C. Gobernador,2,12,Conocido,98000,Zacatecas,Zacatecas,Zacatecas,México,Conocido,98000,Zacatecas,Zacatecas,Zacatecas,México,0,123;124,456;457,7890123456;1234567890,Celular;Fax,Público;Privado,123;124,123;124,Nota 1;Nota 2,http://facebook.com/johndoe;http://twitter.com/johndoe,Facebook;Twitter,johndoe@example.com;johndoe123@example.com,Oficial;Personal
Jane,Smith,,Amigo del hijo del C. Gobernador,10,10,Conocido,98612,Guadalupe,Guadalupe,Zacatecas,México,Conocido,98612,Guadalupe,Guadalupe,Zacatecas,México,1,321;322,654;655,9876543210;1122334455,Particular;Directo,Privado;Público,456;457,456;457,Otra nota 1;Otra nota 2,http://twitter.com/janesmith;http://linkedin.com/janesmith,Twitter;LinkedIn,janesmith@example.com;janesmith123@example.com,Personal;Oficial
Bob ,Johnson,,Amigo del hijo del C. Gobernador,12,2,Conocido,98640,Trancoso,Trancoso,Zacatecas,México,Conocido,98640,Trancoso,Trancoso,Zacatecas,México,0,555;556;557,123;124;125,1112223333;4445556666;7778889999,Radio;Celular;Fax,Público;Privado;Público,101;102;103,555;556;557,Observación 1;Observación 2;Observación 3,http://facebook.com/bobjohnson;http://instagram.com/bobjohnson,Facebook;Instagram,bobjohnson@example.com;bobjohnson123@example.com,Oficial;Personal
nombre,ap_paterno,ap_materno,cargo_desc,mes_cump,dia_cump,domicilio_oficial,codigo_postal,localidad_oficial,municipio_oficial,estado,pais,domicilio_par,codigo_postal_par,localidad_par,municipio_par,estado_par,pais_par,finado,prefijo,lada,numero,tipo,estatus,ext,id_radio,observaciones,red_social,tipo_red_social,correo_electronico,tipo_correo_electronico,profesion
John,Doe,,Amigo del hijo del C. Gobernador,2,12,Conocido,98000,Zacatecas,Zacatecas,Zacatecas,México,Conocido,98000,Zacatecas,Zacatecas,Zacatecas,México,0,123;124,456;457,7890123456;1234567890,Celular;Fax,Público;Privado,123;124,123;124,Nota 1;Nota 2,http://facebook.com/johndoe;http://twitter.com/johndoe,Facebook;Twitter,johndoe@example.com;johndoe123@example.com,Oficial;Personal,Agente de Ministerio Público
Jane,Smith,,Amigo del hijo del C. Gobernador,10,10,Conocido,98612,Guadalupe,Guadalupe,Zacatecas,México,Conocido,98612,Guadalupe,Guadalupe,Zacatecas,México,1,321;322,654;655,9876543210;1122334455,Particular;Directo,Privado;Público,456;457,456;457,Otra nota 1;Otra nota 2,http://twitter.com/janesmith;http://linkedin.com/janesmith,Twitter;LinkedIn,janesmith@example.com;janesmith123@example.com,Personal;Oficial,Almirante de Cuerpo General
Bob ,Johnson,,Amigo del hijo del C. Gobernador,12,2,Conocido,98640,Trancoso,Trancoso,Zacatecas,México,Conocido,98640,Trancoso,Trancoso,Zacatecas,México,0,555;556;557,123;124;125,1112223333;4445556666;7778889999,Radio;Celular;Fax,Público;Privado;Público,101;102;103,555;556;557,Observación 1;Observación 2;Observación 3,http://facebook.com/bobjohnson;http://instagram.com/bobjohnson,Facebook;Instagram,bobjohnson@example.com;bobjohnson123@example.com,Oficial;Personal,Arqueólogo
+177 −420

File changed.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@
    Route::get('/contactos/{id}/editar', [ContactoController::class, 'edit'])->name('edit')->middleware(CheckRoles::class . ':admingen,admin,capturista' );
    Route::put('/contactos/{id}/editar', [ContactoController::class, 'update'])->name('update')->middleware(CheckRoles::class . ':admingen,admin,capturista' );
    Route::delete('/contactos/{id}', [ContactoController::class, 'destroy'])->name('destroy')->middleware(CheckRoles::class . ':admingen,admin');
    Route::get('/administracion/datos', [ContactoController::class, 'obtenerEventos'])->name('datos')->middleware(CheckRoles::class . ':admingen,admin,capturista,lector');;
});

Route::middleware('auth:sanctum',