Javier Braña
90630379fb
chore: cleanup dead code + format with Pint
...
- Remove unused FeaturesController (empty stubs, no routes)
- Remove ConvertSpatialFile CLI command (unused; service used in LayerManager)
- Remove MigrateGeojsonToFeatures CLI command (one-shot migration, not referenced)
- Remove .claude/worktrees/ (11 old agent worktrees from June)
- Apply Laravel Pint formatting across 219 files (style only, no functional changes)
Tests: 101 passing (319 assertions)
API routes: unchanged (8 routes intact)
2026-08-28 13:04:28 +02:00
Javier Braña
2dccd59385
fix(reports): use Livewire::mount in controller to avoid layout conflict; remove #[Layout] from ReportBuilder component
2026-08-24 13:22:31 +02:00
Javier Braña
e7aea3f69f
fix(reports): remove middleware() from controller constructor - auth already applied via route group
2026-08-24 13:08:56 +02:00
Javier Braña
1ac2df9454
fix(reports): ReportBuilder::generateReport return type - remove void, return redirect
2026-08-24 12:36:33 +02:00
Javier Braña
ee32544525
feat(reports): complete reporting system with deviations, progress curves, multi-format export
...
- Added planned/actual/baseline dates to Phase and Feature models
- Created ProgressSnapshot model + migration for historical tracking
- Implemented CaptureDailyProgressSnapshot job (scheduled daily at 06:30)
- Added DeviationCalculator logic (SPI, planned progress, deviation days)
- ReportGenerator service with complete data aggregation
- ReportController with builder, preview, generate (HTML/Excel)
- ReportBuilder Livewire component with date range, entity selection, format
- ProjectReportExport with 10 sheets (Summary, Phases, Features, Inspections, Issues, Tasks, Deviations, Media, Progress Curve, Parameters)
- Blade partials for all sections (header, summary, phases, features, inspections, issues, tasks, media, deviations, progress curve)
- New routes: /projects/{project}/reports/*
- Added 'generate reports' permission
- All 101 tests passing
2026-08-24 12:32:08 +02:00
Javier Braña
c58a49f22d
fix(map): selectFeature event handling - unify payload format for map click and feature table
...
- FeatureTable: dispatch { featureId } object instead of raw ID
- ProjectMap: selectFeature listener accepts both formats (direct ID or { featureId })
- project-map.blade.php: move selectFeature inside livewire:init handler so Livewire.emit is available
- Added logging for debugging
Fixes: 'Livewire.emit is not a function' on map click and 'Only arrays and Traversables can be unpacked' on table button
2026-08-24 11:12:32 +02:00
Javier Braña
534d9f8eab
Fix Livewire BindingResolutionException: replace @this calls in pushed scripts with #[On] + Livewire.emit
...
- Add #[On] attributes to 5 Livewire component methods:
- LayerManager::saveManualGeojson
- ProjectForm::setLocation
- ProjectMap::selectFeature (already had #[On])
- TaskForm::closeModal
- TaskKanban::updateTaskStatus
- Replace @this.method() in @push('scripts') with Livewire.emit() calls
- Fix DataTable event payloads from objects {id: X} to scalars X for:
- FeatureTable::map-select-feature
- InspectionTable::map-view-inspection, edit-inspection, delete-inspection
2026-08-04 13:58:56 +02:00
Javier Braña
f566d370be
fix(route): fix implicit route model binding for Project
...
- Move Route::model to register() in AppServiceProvider so it persists in route cache
- Re-register in boot() for runtime
- Fix navigation spacing for language/notification/user menu
All 101 tests pass
2026-08-04 12:18:54 +02:00
Javier Braña
16efe381c5
fix(tasks): auto-open create modal when accessing /projects/{project}/tasks/create
2026-08-04 09:53:57 +02:00
Javier Braña
1a61e219c6
style(nav): reduce spacing between language switcher, notification bell, and user menu
2026-08-04 09:30:15 +02:00
Javier Braña
0af98fb49d
fix: add tasks button to project dashboard, verify kanban/calendar routes
2026-08-04 08:30:33 +02:00
Javier Braña
ba614bddbc
feat(tasks): complete task management system with Kanban, Calendar, notifications
...
- Add Task model with subtasks, priorities, status transitions, dates, hours
- Add Comment polymorphic model for tasks/issues/projects
- Livewire components: TaskManager (list+filters), TaskForm (modal), TaskDetail, TaskKanban (drag&drop), TaskCalendar (FullCalendar)
- TaskPolicy with permissions (view/create/edit/delete/assign/manage all)
- Notifications: assigned, status change, overdue, comment added
- Daily overdue notification job scheduled
- Dashboard widget unifies IssueTask + Task
- i18n: en/es/fr/ru (393 keys each)
- Routes, navigation, offline sync support
- 101 tests passing, Pint compliant on new files
2026-08-03 13:44:10 +02:00
Javier Braña
a65d4b12f2
feat(inspections): add photos support with edit + lightbox
...
- Validación robusta fotos (10MB, jpeg/png/webp, max 10)
- Editar inspección existente: botón en historial, modal y tabla
- Eliminación individual de fotos en edición (marcar + guardar)
- Lightbox/carousel en modal ver + editar (Alpine.js)
- Columna 'Fotos' en InspectionTable con thumbnails + contador
- Permiso 'edit inspections' en seeders + checks en componente
- Test actualizado: seed roles/permisos + attach template pivot
- Fix: removed unsupported filterable() on secondaryHeaderFilter
2026-07-29 01:44:38 +02:00