Overview
TheAdminController handles all administrative operations in NutriFit. It provides comprehensive management of users, nutritionists, patients, appointments, and system settings. This controller is restricted to users with the administrador role.
Namespace: App\Http\Controllers
Middleware: auth, verified, role:administrador
Route Prefix: /administrador
Dashboard & Statistics
index()
Displays the main administrator dashboard with system statistics.GET /administrador/dashboard
Route Name: admin.dashboard
Returns: View with statistics including:
- Total users count
- Total patients count
- Total nutritionists count
- Total appointments count
- Pending appointments count
User Management
users()
Displays the user management index page.GET /administrador/users
Route Name: admin.users.index
Returns: User listing view
createUser()
Shows the form to create a new user.GET /administrador/users/create
Route Name: admin.users.create
Returns: View with roles and user states for the creation form
storeUser(Request $request)
Stores a new user in the database.POST /administrador/users
Route Name: admin.users.store
Parameters:
name(string, required): User’s full name (max 255 chars)email(string, required): User’s email (must be unique)password(string, required): Password (min 8 chars, must be confirmed)password_confirmation(string, required): Password confirmationrole_id(integer, required): Role ID (must exist in roles table)user_state_id(integer, required): User state ID
editUser(User $user)
Displays the edit form for a specific user.GET /administrador/users/{user}/edit
Route Name: admin.users.edit
Parameters:
user(User): Route model binding
updateUser(Request user)
Updates an existing user’s information.PUT /administrador/users/{user}
Route Name: admin.users.update
Parameters:
user(User): Route model bindingname(string, required): User’s full nameemail(string, required): User’s emailpassword(string, optional): New password (min 8 chars, must be confirmed)user_state_id(integer, required): User state IDgender(string, optional): Gender (maleorfemale)birth_date(date, optional): Birth date (must be before today)
- Sends notification email when user state changes to inactive/active
- Updates or creates personal data for patients
toggleUserStatus(User $user)
Activates or deactivates a user account.POST /administrador/users/{user}/toggle-status
Route Name: admin.users.toggle-status
Parameters:
user(User): Route model binding
Nutritionist Management
nutricionistas(Request $request)
Lists all nutritionists with optional search filtering.GET /administrador/nutricionistas
Route Name: admin.nutricionistas.index
Query Parameters:
search(string, optional): Search by name or email
showNutricionista(User $nutricionista)
Displays detailed information about a specific nutritionist.GET /administrador/nutricionistas/{nutricionista}
Route Name: admin.nutricionistas.show
Parameters:
nutricionista(User): Route model binding
- Total appointments
- Completed appointments
- Pending appointments
- List of appointments with patient information
Patient Management
pacientes(Request $request)
Lists all patients with optional search filtering.GET /administrador/pacientes
Route Name: admin.pacientes.index
Query Parameters:
search(string, optional): Search by name or email
showPaciente(User $paciente)
Displays detailed information about a specific patient.GET /administrador/pacientes/{paciente}
Route Name: admin.pacientes.show
Parameters:
paciente(User): Route model binding
- Total appointments
- Completed appointments
- Pending appointments
- List of appointments with nutritionist information
Appointment Management
appointments(Request $request)
Lists all appointments with filtering options.GET /administrador/appointments
Route Name: admin.appointments.index
Query Parameters:
appointment_state_id(integer, optional): Filter by appointment statedate(date, optional): Filter by specific datenutricionista_id(integer, optional): Filter by nutritionist
showAppointment(Appointment $appointment)
Displays detailed information about a specific appointment.GET /administrador/appointments/{appointment}
Route Name: admin.appointments.show
Parameters:
appointment(Appointment): Route model binding
- Patient and nutritionist information
- Appointment state
- Attention data (if completed)
cancelAppointment(Appointment $appointment)
Cancels a specific appointment.POST /administrador/appointments/{appointment}/cancel
Route Name: admin.appointments.cancel
Parameters:
appointment(Appointment): Route model binding
Reports & Settings
reports()
Displays comprehensive system reports and statistics.GET /administrador/reports
Route Name: admin.reports.index
Returns: View with aggregated statistics:
- Users by role
- Users by state
- Appointments by state
- Appointments this month
- Appointments today
- Top 5 nutritionists by appointment count
- 10 most recent users
settings()
Manages roles, user states, and appointment states.GET /administrador/settings
Route Name: admin.settings.index
Returns: View with:
- All roles with user counts
- All user states with user counts
- All appointment states with appointment counts
systemSettings()
Displays system configuration page (contact information).GET /administrador/system-settings
Route Name: admin.system-settings.index
Returns: System settings view
Dependencies
The AdminController uses the following models:App\Models\UserApp\Models\RoleApp\Models\UserStateApp\Models\AppointmentApp\Models\AppointmentState
App\Notifications\UserAccountDisabledNotificationApp\Notifications\UserAccountEnabledNotification