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.
		
		
		
		
		
			
		
			
				
					
					
						
							203 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							203 lines
						
					
					
						
							11 KiB
						
					
					
				
								@extends('layouts.dashboard')
							 | 
						|
								
							 | 
						|
								@section('content')
							 | 
						|
								<div class="container mx-auto px-4 py-6">
							 | 
						|
								    <!-- Mensajes de éxito y error -->
							 | 
						|
								    @if(session('success'))
							 | 
						|
								        <div id="success-message" class="bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded relative mb-4" role="alert">
							 | 
						|
								            <span class="block sm:inline">{{ session('success') }}</span>
							 | 
						|
								        </div>
							 | 
						|
								    @endif
							 | 
						|
								
							 | 
						|
								    @if(session('error'))
							 | 
						|
								        <div class="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative mb-4" role="alert">
							 | 
						|
								            <span class="block sm:inline">{{ session('error') }}</span>
							 | 
						|
								        </div>
							 | 
						|
								    @endif
							 | 
						|
								
							 | 
						|
								    <div class="bg-white rounded-lg shadow-lg">
							 | 
						|
								        <!-- Encabezado con título y botones de acción -->
							 | 
						|
								        <div class="p-4 border-b border-gray-200 flex justify-between items-center">
							 | 
						|
								            <h2 class="text-2xl font-bold">Gestión de Usuarios</h2>
							 | 
						|
								            <div class="flex items-center space-x-6">
							 | 
						|
								                <!-- Íconos de exportación y agregar -->
							 | 
						|
								                <div class="flex space-x-4">
							 | 
						|
								                    <!-- Exportar a Excel -->
							 | 
						|
								                    <a href="{{ route('usuarios.excel') }}"
							 | 
						|
								                    class="text-green-600 hover:text-green-700 transition-colors duration-200"
							 | 
						|
								                    title="Exportar a Excel">
							 | 
						|
								                     <i class="fas fa-file-excel text-xl"></i>
							 | 
						|
								                 </a>
							 | 
						|
								
							 | 
						|
								                    <!-- Exportar a PDF -->
							 | 
						|
								                    <a href="{{ route('usuarios.pdf') }}"
							 | 
						|
								                       class="text-red-600 hover:text-red-700 transition-colors duration-200"
							 | 
						|
								                       title="Exportar a PDF">
							 | 
						|
								                        <i class="fas fa-file-pdf text-xl"></i>
							 | 
						|
								                    </a>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								                    <!-- Agregar nuevo usuario -->
							 | 
						|
								                    <a href="{{ route('usuarios.create') }}"
							 | 
						|
								                    class="text-blue-500 hover:text-blue-600 transition-colors duration-200"
							 | 
						|
								                    title="Agregar nuevo usuario">
							 | 
						|
								                     <i class="fas fa-plus text-xl"></i>
							 | 
						|
								                 </a>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								                </div>
							 | 
						|
								            </div>
							 | 
						|
								        </div>
							 | 
						|
								
							 | 
						|
								        <!-- Barra de búsqueda -->
							 | 
						|
								        <div class="p-4 border-b border-gray-200 bg-gray-50">
							 | 
						|
								            <form action="{{ route('usuarios') }}" method="GET" class="flex gap-2">
							 | 
						|
								                <div class="relative w-full sm:w-64">
							 | 
						|
								                    <input type="text"
							 | 
						|
								                           name="busqueda"
							 | 
						|
								                           placeholder="Buscar usuario..."
							 | 
						|
								                           value="{{ request('busqueda') }}"
							 | 
						|
								                           class="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
							 | 
						|
								                    <div class="absolute left-3 top-2.5 text-gray-400">
							 | 
						|
								                        <i class="fas fa-search"></i>
							 | 
						|
								                    </div>
							 | 
						|
								                </div>
							 | 
						|
								                <button type="submit" class="px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600">
							 | 
						|
								                    Buscar
							 | 
						|
								                </button>
							 | 
						|
								                @if(request('busqueda'))
							 | 
						|
								                    <a href="{{ route('usuarios') }}" class="px-4 py-2 bg-gray-500 text-white rounded-lg hover:bg-gray-600">
							 | 
						|
								                        Limpiar
							 | 
						|
								                    </a>
							 | 
						|
								                @endif
							 | 
						|
								            </form>
							 | 
						|
								        </div>
							 | 
						|
								
							 | 
						|
								        <!-- Tabla de usuarios -->
							 | 
						|
								        <div class="overflow-x-auto">
							 | 
						|
								            <table class="min-w-full divide-y divide-gray-200">
							 | 
						|
								                <thead class="bg-gray-50">
							 | 
						|
								                    <tr>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Número</th>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Nombre </th>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Email </th>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Apellido </th>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Puesto </th>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Carrera </th>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Teléfono </th>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Estado </th>
							 | 
						|
								                        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Acciones </th>
							 | 
						|
								                    </tr>
							 | 
						|
								                </thead>
							 | 
						|
								                <tbody class="bg-white divide-y divide-gray-200">
							 | 
						|
								                    @if($usuarios->isEmpty())
							 | 
						|
								                        <tr>
							 | 
						|
								                            <td colspan="9" class="px-6 py-4 text-center text-gray-500">No hay usuarios registrados.</td>
							 | 
						|
								                        </tr>
							 | 
						|
								                    @else
							 | 
						|
								                        @foreach($usuarios as $index => $usuario)
							 | 
						|
								                        <tr class="hover:bg-gray-50">
							 | 
						|
								                            <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">{{ $index + 1 }}</td>
							 | 
						|
								                            <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
							 | 
						|
								                                <i class="fas fa-user text-blue-500 mr-2"></i>
							 | 
						|
								                                {{ $usuario->name }}
							 | 
						|
								                            </td>
							 | 
						|
								                            <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
							 | 
						|
								                                <i class="fas fa-envelope text-blue-500"></i> {{ $usuario->email }}
							 | 
						|
								                            </td>
							 | 
						|
								                            <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
							 | 
						|
								                                <i class="fas fa-user-tag text-green-500"></i> {{ $usuario->apellido }}
							 | 
						|
								                            </td>
							 | 
						|
								                            <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
							 | 
						|
								                                <div class="flex items-center">
							 | 
						|
								                                    <i class="fas fa-briefcase text-gray-400 mr-2"></i>
							 | 
						|
								                                    {{ $usuario->puesto->nombre ?? 'Sin puesto asignado' }}
							 | 
						|
								                                </div>
							 | 
						|
								                            </td>
							 | 
						|
								                            <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
							 | 
						|
								                                <i class="fas fa-graduation-cap text-purple-500"></i> {{ $usuario->carrera }}
							 | 
						|
								                            </td>
							 | 
						|
								                            <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
							 | 
						|
								                                <i class="fas fa-phone text-red-500"></i> {{ $usuario->telefono }}
							 | 
						|
								                            </td>
							 | 
						|
								                            <td class="px-6 py-4 whitespace-nowrap text-sm">
							 | 
						|
								                                @if($usuario->eliminado == 0)
							 | 
						|
								                                <span class="inline-flex items-center px-2 py-1 text-xs font-semibold text-green-800 bg-green-100 rounded-full">
							 | 
						|
								                                    <span class="h-2 w-2 bg-green-500 rounded-full mr-2"></span> Activo
							 | 
						|
								                                    </span>
							 | 
						|
								                                @else
							 | 
						|
								                                    <span class="flex items-center">
							 | 
						|
								                                        <span class="h-2 w-2 bg-red-500 rounded-full mr-2"></span> Inactivo
							 | 
						|
								                                    </span>
							 | 
						|
								                                @endif
							 | 
						|
								                            </td>
							 | 
						|
								                            <td class="flex space-x-2 px-6 py-4 whitespace-nowrap text-sm">
							 | 
						|
								                                @if($usuario->eliminado == 1)
							 | 
						|
								                                    <form action="{{ route('usuarios.update', $usuario->id) }}" method="POST" class="d-inline">
							 | 
						|
								                                        @csrf
							 | 
						|
								                                        @method('PUT')
							 | 
						|
								                                        <input type="hidden" name="recuperar" value="1">
							 | 
						|
								                                        <a href="#" onclick="event.preventDefault(); this.closest('form').submit();"
							 | 
						|
								                                           class="text-green-600 hover:text-green-700 transition-colors duration-200"
							 | 
						|
								                                           title="Recuperar usuario">
							 | 
						|
								                                            <i class="fas fa-undo"></i>
							 | 
						|
								                                        </a>
							 | 
						|
								                                    </form>
							 | 
						|
								                                @else
							 | 
						|
								                                    <a href="{{ route('usuarios.edit', $usuario->id) }}"
							 | 
						|
								                                       class="text-yellow-600 hover:text-yellow-700 transition-colors duration-200"
							 | 
						|
								                                       title="Editar usuario">
							 | 
						|
								                                        <i class="fas fa-edit"></i>
							 | 
						|
								                                    </a>
							 | 
						|
								                                    <form action="{{ route('usuarios.destroy', $usuario->id) }}" method="POST" class="d-inline">
							 | 
						|
								                                        @csrf
							 | 
						|
								                                        @method('DELETE')
							 | 
						|
								                                        <a href="#" onclick="event.preventDefault(); confirmarEliminacion(this);"
							 | 
						|
								                                           class="text-red-600 hover:text-red-700 transition-colors duration-200"
							 | 
						|
								                                           title="Eliminar usuario">
							 | 
						|
								                                            <i class="fas fa-trash"></i>
							 | 
						|
								                                        </a>
							 | 
						|
								                                    </form>
							 | 
						|
								                                @endif
							 | 
						|
								                            </td>
							 | 
						|
								                        </tr>
							 | 
						|
								                        @endforeach
							 | 
						|
								                    @endif
							 | 
						|
								                </tbody>
							 | 
						|
								            </table>
							 | 
						|
								        </div>
							 | 
						|
								    </div>
							 | 
						|
								</div>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
								    // Desaparecer el mensaje después de 3 segundos
							 | 
						|
								    setTimeout(function() {
							 | 
						|
								        var message = document.getElementById('success-message');
							 | 
						|
								        if (message) {
							 | 
						|
								            message.style.transition = 'opacity 0.5s ease';
							 | 
						|
								            message.style.opacity = '0';
							 | 
						|
								            setTimeout(function() {
							 | 
						|
								                message.remove();
							 | 
						|
								            }, 500);
							 | 
						|
								        }
							 | 
						|
								    }, 3000);
							 | 
						|
								
							 | 
						|
								    function confirmarEliminacion(button) {
							 | 
						|
								        Swal.fire({
							 | 
						|
								            title: '¿Estás seguro?',
							 | 
						|
								            text: "Esta acción no se puede deshacer",
							 | 
						|
								            icon: 'warning',
							 | 
						|
								            showCancelButton: true,
							 | 
						|
								            confirmButtonColor: '#3085d6',
							 | 
						|
								            cancelButtonColor: '#d33',
							 | 
						|
								            confirmButtonText: 'Sí, eliminar',
							 | 
						|
								            cancelButtonText: 'Cancelar'
							 | 
						|
								        }).then((result) => {
							 | 
						|
								            if (result.isConfirmed) {
							 | 
						|
								                button.closest('form').submit();
							 | 
						|
								            }
							 | 
						|
								        });
							 | 
						|
								    }
							 | 
						|
								</script>
							 | 
						|
								@endsection
							 | 
						|
								
							 |