Overview
The Calendar & Activities module provides comprehensive scheduling and tracking for all time-based activities in Sistema de Abogados. The system manages three distinct activity types: general activities, case-specific activities, and expediente-specific activities. All activities are visualized in a unified calendar interface powered by FullCalendar.js, with color coding to distinguish activity types.Unified Calendar View
View all activities in one calendar interface with FullCalendar.js integration and color-coded event types.
Three Activity Types
Manage general activities, case activities (ActividadCaso), and expediente activities (ActividadConciliacion) with type-specific features.
Searchable Activities
All activity types use Laravel Scout for fast, accurate searching across titles, descriptions, and dates.
Role-Based Scheduling
Different team roles can create and manage activities appropriate to their workflow (cases vs expedientes).
Activity Types
The system manages three distinct activity categories:General Activities (Actividad)
- Purpose: Standalone activities not linked to cases or expedientes
- Examples: Office meetings, training sessions, administrative tasks, holidays
- Calendar Color: Red (
rgb(239, 68, 68)) - Access: All authenticated users
Case Activities (ActividadCaso)
- Purpose: Activities specifically related to legal cases
- Examples: Court hearings, client meetings, filing deadlines, case reviews
- Calendar Color: Green (
rgb(34, 197, 94)) - Access: Encargado, Admin, Abogado
- Linked To: Specific caso via
id_caso
Expediente Activities (ActividadConciliacion)
- Purpose: Activities related to conciliation expedientes
- Examples: Conciliation sessions, party meetings, negotiation deadlines
- Calendar Color: Blue (
rgb(59, 130, 246)) - Access: Encargado, Admin, Asistente
- Linked To: Specific expediente via
id_expediente
The color coding in the calendar helps users quickly identify activity types at a glance, improving schedule management and coordination.
Activity Data Structure
General Activities (Actividad)
Each general activity contains:| Field | Description | Required |
|---|---|---|
| titulo | Activity title or name | Yes |
| descripcion | Detailed description of the activity | Optional |
| direccion | Location or address where activity occurs | Optional |
| fecha | Activity date | Yes |
| hora | Activity time | Yes |
Case Activities (ActividadCaso)
Each case activity contains:| Field | Description | Required |
|---|---|---|
| titulo | Activity title | Yes |
| descripcion | Activity description | Optional |
| direccion | Location or address | Optional |
| fecha | Activity date | Yes |
| hora | Activity time | Yes |
| id_caso | Associated case ID (foreign key) | Yes |
Expediente Activities (ActividadConciliacion)
Each expediente activity contains:| Field | Description | Required |
|---|---|---|
| titulo | Activity title | Yes |
| descripcion | Activity description | Optional |
| direccion | Location or address | Optional |
| fecha | Activity date | Yes |
| hora | Activity time | Yes |
| id_expediente | Associated expediente ID (foreign key) | Yes |
Creating Activities
Creating General Activities
-
Navigate to Activities Module
- Access via route:
/agenda/actividad - Click “Create New Activity”
- Access via route:
-
Enter Activity Details
- Title (
titulo): Enter descriptive title - Description (
descripcion): Add detailed information - Location (
direccion): Specify where activity occurs - Date (
fecha): Select activity date - Time (
hora): Set activity time
- Title (
-
Save Activity
- Submit the form
- Activity is created and immediately appears on calendar
- Activity becomes searchable
Creating Case Activities
-
Navigate to Case Activities Module
- Access via route:
/agenda/actividadCaso - Click “Create New Activity”
- Access via route:
-
Select Associated Case
- Choose the case from dropdown list
- Only cases you have access to are shown
-
Enter Activity Details
- Title: E.g., “Court Hearing - Case 2024-001”
- Description: Add details about the hearing or meeting
- Location: Court address or meeting location
- Date: Hearing or meeting date
- Time: Scheduled time
-
Save Activity
- Activity is linked to selected case
- Appears on calendar with case number in title
- Format: ” del expediente “
Creating Expediente Activities
-
Navigate to Expediente Activities
- Access via route:
/agenda/actividadConciliacion - Click “Create New Activity”
- Access via route:
-
Select Associated Expediente
- Choose expediente from dropdown
- Only expedientes you can access are shown
-
Enter Activity Details
- Title: E.g., “Conciliation Session 1”
- Description: Session agenda or notes
- Location: Conciliation center address
- Date: Session date
- Time: Session time
-
Save Activity
- Activity is linked to selected expediente
- Appears on calendar with expediente number
- Format: ” del expediente ”
When creating case or expediente activities, the system automatically appends the case/expediente number to the title in the calendar view, making it easy to identify which matter the activity relates to.
Calendar View
The unified calendar provides comprehensive activity visualization:Accessing the Calendar
- Route:
/agenda/calendar - Available to all authenticated users
- Displays all three activity types in one view
Calendar Interface Features
Powered by FullCalendar.js, the calendar offers:- Month View: See entire month at a glance
- Week View: Detailed weekly schedule
- Day View: Hourly breakdown of single day
- Event Display: Color-coded events with titles
- Event Details: Click events to view full information
- Navigation: Previous/next buttons and date picker
- Today Button: Quick return to current date
Event Color Coding
| Activity Type | Color | RGB Value |
|---|---|---|
| General Activities | Red | rgb(239, 68, 68) |
| Case Activities | Green | rgb(34, 197, 94) |
| Expediente Activities | Blue | rgb(59, 130, 246) |
Calendar Event Format
General Activities Display:Viewing Activity Details
Access comprehensive information for each activity:General Activity Details
- Navigate to
/agenda/actividad - View list of all general activities
- Click on any activity to see full details
- Information displayed:
- Title and description
- Date and time
- Location
Case Activity Details
- Navigate to
/agenda/actividadCaso - View list of case activities
- Each activity shows:
- Activity details
- Associated case information
- Link to case detail page
Expediente Activity Details
- Navigate to
/agenda/actividadConciliacion - View list of expediente activities
- Each activity shows:
- Activity details
- Associated expediente information
- Link to expediente detail page
Editing Activities
Update activity information as schedules change:General Activities
-
Access Edit Form
- From activities list, click “Edit”
- Route:
GET /agenda/actividad/{actividad}/edit
-
Update Fields
- Modify any field: title, description, location, date, time
- All fields maintain same validation rules
-
Save Changes
- Route:
PUT /agenda/actividad/{actividad} - Calendar automatically updates with new information
- Search index is updated
- Route:
Case Activities
-
Access Edit Form
- Route:
GET /agenda/actividadCaso/{cas_actividad}/edit
- Route:
-
Update Information
- Modify activity details
- Case association typically remains unchanged
-
Save Changes
- Route:
PUT /agenda/actividadCaso/{cas_actividad} - Calendar reflects updates immediately
- Route:
Expediente Activities
-
Access Edit Form
- Route:
GET /agenda/actividadConciliacion/{con_actividad}/edit
- Route:
-
Update Details
- Modify any field as needed
- Expediente association typically unchanged
-
Save Changes
- Route:
PUT /agenda/actividadConciliacion/{con_actividad} - Updates appear in calendar
- Route:
Deleting Activities
Remove activities that are cancelled or no longer needed:Deletion Process
General Activities:- Route:
DELETE /agenda/actividad/{actividad} - Click “Delete” from activity list
- Confirmation prompt appears
- Activity is permanently removed
- Removed from calendar immediately
- Route:
DELETE /agenda/actividadCaso/{cas_actividad} - Delete from case activities list
- Permanent deletion
- Calendar updates automatically
- Route:
DELETE /agenda/actividadConciliacion/{con_actividad} - Delete from expediente activities list
- Permanent removal
- Calendar reflects change
Searching Activities
All activity types use Laravel Scout for powerful search:Search Fields
General Activities search across:- Title (
titulo) - Description (
descripcion) - Date (
fecha)
- Title (
titulo) - Description (
descripcion) - Date (
fecha)
- Title (
titulo) - Description (
descripcion) - Date (
fecha)
Search Interface
- Enter search terms in activity list search box
- Results display matching activities
- Search is case-insensitive with partial matching
- Date searches support multiple formats
Role-Based Access Control
General Activities
| Role | Access Level |
|---|---|
| All Authenticated Users | Full access - create, view, edit, delete |
Case Activities
| Role | Access Level |
|---|---|
| Encargado | Full access - create, view, edit, delete |
| Admin | Full access - create, view, edit, delete |
| Abogado | Full access - create, view, edit, delete |
| Asistente | No access |
Expediente Activities
| Role | Access Level |
|---|---|
| Encargado | Full access - create, view, edit, delete |
| Admin | Full access - create, view, edit, delete |
| Asistente | Full access - create, view, edit, delete |
| Abogado | No access |
The role restrictions for activities match those of their parent modules. If you can manage cases, you can manage case activities. If you can manage expedientes, you can manage expediente activities.
Integration with Other Modules
Case Integration
- Case activities are linked via
id_casoforeign key - Relationship defined in ActividadCaso model as
BelongsTo - View case activities from case detail page
- Calendar shows activity with case number
Expediente Integration
- Expediente activities linked via
id_expedienteforeign key - Relationship defined in ActividadConciliacion model as
BelongsTo - Expediente model has
HasManyrelationship to activities - View expediente activities from expediente detail page
- Calendar shows activity with expediente number
Calendar Integration
- CalendarController aggregates all three activity types
- Combines activities into single events array
- Passes to FullCalendar.js for rendering
- Color coding distinguishes activity types
Best Practices
Use Descriptive Titles
Use Descriptive Titles
Create clear, specific titles that identify the activity at a glance:
- Good: “Client Meeting - Discovery Phase - Johnson Case”
- Poor: “Meeting”
Always Add Location Information
Always Add Location Information
Fill in the
direccion field for every activity:- Court addresses for hearings
- Client offices for meetings
- Conference room names for internal meetings
- Virtual meeting links for online sessions
Detailed Descriptions
Detailed Descriptions
Use the description field to add:
- Purpose of the activity
- Participants expected to attend
- Preparation required
- Documents to bring
- Special instructions
Create Activities Early
Create Activities Early
Schedule activities as soon as dates are confirmed:
- Don’t wait until the last minute
- Early scheduling prevents conflicts
- Team members can plan around scheduled activities
- Reduces missed deadlines and hearings
Regular Calendar Review
Regular Calendar Review
Make calendar review a daily habit:
- Check upcoming activities each morning
- Review weekly schedule at start of week
- Look ahead for major deadlines
- Update activities as information changes
Coordinate Case and Expediente Activities
Coordinate Case and Expediente Activities
Be aware of scheduling conflicts:
- Check calendar before scheduling new activities
- Consider team member availability
- Avoid overlapping case and expediente activities
- Leave time for travel between locations
Common Workflows
Scheduling a Court Hearing
- Create Case Activity
- Title: “Court Hearing - Motion to Dismiss - Case 2024-045”
- Description: “Hearing on defendant’s motion to dismiss. Judge Martinez presiding. Bring evidence binder and witness list.”
- Location: “Superior Court, Courtroom 3, 100 Main Street”
- Date: Hearing date
- Time: Hearing time (arrive 30 minutes early)
- Save and verify appears on calendar in green
Scheduling a Conciliation Session
- Create Expediente Activity
- Title: “Conciliation Session 1 - Initial Proposals”
- Description: “First session. Both parties present initial positions. Conciliator will outline process.”
- Location: “Conciliation Center, Room B, 50 Peace Avenue”
- Date: Session date
- Time: Session start time
- Save and verify appears on calendar in blue
Scheduling Team Meeting
- Create General Activity
- Title: “Weekly Team Meeting - Case Review”
- Description: “Review all active cases, discuss strategy, assign tasks for upcoming week.”
- Location: “Conference Room A”
- Date: Meeting date
- Time: Meeting time
- Save and verify appears on calendar in red
Technical Implementation
For developers and system administrators:Models
app/Models/Actividad.php- General activitiesapp/Models/ActividadCaso.php- Case activitiesapp/Models/ActividadConciliacion.php- Expediente activities
Controllers
app/Http/Controllers/ActividadController.phpapp/Http/Controllers/ActividadCasoController.phpapp/Http/Controllers/ActividadConciliacionController.phpapp/Http/Controllers/CalendarController.php
Routes - General Activities
- List:
GET /agenda/actividad - Create:
POST /agenda/actividad - Edit form:
GET /agenda/actividad/{actividad}/edit - Update:
PUT /agenda/actividad/{actividad} - Delete:
DELETE /agenda/actividad/{actividad}
Routes - Case Activities
- List:
GET /agenda/actividadCaso - Create:
POST /agenda/actividadCaso - Edit form:
GET /agenda/actividadCaso/{cas_actividad}/edit - Update:
PUT /agenda/actividadCaso/{cas_actividad} - Delete:
DELETE /agenda/actividadCaso/{cas_actividad}
Routes - Expediente Activities
- List:
GET /agenda/actividadConciliacion - Create:
POST /agenda/actividadConciliacion - Edit form:
GET /agenda/actividadConciliacion/{con_actividad}/edit - Update:
PUT /agenda/actividadConciliacion/{con_actividad} - Delete:
DELETE /agenda/actividadConciliacion/{con_actividad}
Calendar Route
- Calendar view:
GET /agenda/calendar
Database Tables
actividads- General activitiesactividad_casos- Case activitiesactividad_conciliacions- Expediente activities
FullCalendar.js Integration
The calendar view uses FullCalendar.js:- Events array built in CalendarController
- Each event includes: title, start, end, color, textColor
- Passed to view as
['events' => $events] - Rendered by FullCalendar.js in the browser
Relationships
ActividadCaso:BelongsTorelationship with Casos viaid_caso
BelongsTorelationship with Expedientes viaid_expediente
HasManyrelationship with ActividadConciliacion asconActividades
Search Implementation
All three models use Laravel Scout:use Searchable;trait includedtoSearchableArray()method defines searchable fields- Indexed fields: titulo, descripcion, fecha
- Search route parameter:
request('search')