Company Admin (Non-Filament) Full Inventory & Gap Analysis

📄 General
← Back to Documentation
# Company Admin (Non-Filament) Full Inventory & Gap Analysis ## Scope This inventory covers the **non-Filament** company admin panel. It is based on: - `routes/web.php` company-admin route group (lines 592-1112) - `resources/views/company-admin/layouts/app.blade.php` navigation menu - `app/Http/Controllers/CompanyAdminController.php` public methods - Existing documentation (`COMPANY_PANEL_POLICIES_SUMMARY.md`, `CODE_REDUNDANCY_ANALYSIS.md`) Excluded from this inventory: Filament v4 admin resources, API routes under `routes/api.php`. --- ## 1. Full Module Inventory | # | Module | Route Prefix | Controller(s) | Views Count* | Status | |---|--------|--------------|---------------|--------------|--------| | 1 | Dashboard | `company-admin.dashboard` | `CompanyAdminController` | 1 | Implemented | | 2 | Company Switcher | `company-admin.switch-company` | `CompanyAdminController` | - | Implemented | | 3 | Profile | `company-admin.profile` | `CompanyAdminController` | 4 | Implemented | | 4 | Venues | `company-admin.venues.*` | `CompanyAdminController` | 6 | Implemented | | 5 | Venue Objects | `company-admin.venue-objects.*` | `CompanyAdminController` | 7 | Implemented | | 6 | Bookings | `company-admin.bookings.*` | `CompanyAdminController` | 9 | Implemented | | 7 | Stays | `company-admin.stays.*` | `CompanyAdminController` | 6 | Implemented | | 8 | Invoices | `company-admin.invoices.*` | `CompanyAdminController` | 7 | Implemented | | 9 | Fiscal Receipts | `company-admin.fiscal-receipts.*` | `CompanyAdminController` | 3 | Implemented | | 10 | Payments | `company-admin.payments.*` | `CompanyAdminController` | 6 | Implemented | | 11 | In-Person Payment | `company-admin.payment.in-person` | Livewire (`CompanyAdminTremolPaymentProcessor`) | 1 | Implemented | | 12 | Clients | `company-admin.clients.*` | `CompanyAdminController` | 5 | Implemented | | 13 | Documents | `company-admin.documents.*` | `DocumentController` | 8 | Implemented | | 14 | Users | `company-admin.users.*` | `CompanyAdminController` | 5 | Implemented | | 15 | Facilities | `company-admin.facilities.*` | `CompanyAdminController` | 6 | Implemented | | 16 | Roles | `company-admin.roles.*` | `CompanyAdminController` | 5 | Implemented | | 17 | Role Permissions | `company-admin.role-permissions.*` | `CompanyRolePermissionController` | 2 | Implemented | | 18 | Services | `company-admin.services.*` | `CompanyAdminController` | 6 | Implemented | | 19 | Packages | `company-admin.packages.*` | `CompanyAdminController` | 6 | Implemented | | 20 | Products | `company-admin.products.*` | `CompanyAdminController` | 6 | Implemented | | 21 | ESTI Export | `company-admin.esti.*` | `CompanyAdminController` | 2 | Implemented | | 22 | Settings | `company-admin.settings.*` | `CompanyAdminController` | 2 | Implemented | | 23 | Cancellation Policies | `company-admin.cancellation-policies.*` | `CompanyAdminController` | 5 | Implemented | | 24 | Cancellation Settings | `company-admin.cancellation-settings.*` | `CompanyAdminController` | 2 | Implemented | | 25 | Settlements | `company-admin.settlements.*` | `CompanyAdminController` | 3 | Implemented | | 26 | B2B Invoices | `company-admin.b2b-invoices.*` | `CompanyAdminController` | 2 | Implemented | | 27 | Subscriptions | `company-admin.subscriptions.*` | `SubscriptionController` | 4 | Implemented | | 28 | Financials | `company-admin.financials.*` | `FinancialManagementController` | 5 | Implemented | | 29 | Statistics | `company-admin.statistics.*` | `CompanyAdminController` | 2 | Implemented | | 30 | Rates | `company-admin.rates.*` | `RateManagerController` | 7 | Implemented | | 31 | Housekeeping (Operations) | `company-admin.housekeeping.*` | `HousekeepingController`, `HousekeepingManagerController` | 15 | Implemented | | 32 | Housekeeping Staff (Mobile) | `company-admin.housekeeping-staff.*` | `HousekeepingStaffController` | 5 | Implemented | | 33 | Inventory | `company-admin.inventory.*` | `InventoryController` | 10 | Implemented | | 34 | Inspections | `company-admin.inspections.*` | `InspectionController` | 6 | Implemented | | 35 | Gantt Chart | `company-admin.gantt-chart.*` | `GanttChartController` | 2 | Implemented | | 36 | Front Desk | `company-admin.front-desk.*` | `FrontDeskController` | 8 | Implemented | | 37 | Reporting | `company-admin.reporting.*` | `ReportingController` | 7 | Implemented | | 38 | Custom Report Builder | `company-admin.reports.*` | `CustomReportController` | 3 | Implemented | | 39 | Employee Attendance | `company-admin.attendance.*` | `EmployeeAttendanceController` | 3 | Implemented | | 40 | Employee Time | `company-admin.employee-time.*` | `EmployeeTimeController` | 6 | Implemented | | 41 | Message Templates | `company-admin.message-templates.*` | `MessageTemplateController` | 5 | Implemented | | 42 | Guest Messaging | `company-admin.guest-messaging.*` | `GuestMessagingController` | 4 | Implemented | | 43 | Messaging | `company-admin.messaging.*` | `MessagingController` | 4 | Implemented | | 44 | Notification Preferences | `company-admin.notification-preferences.*` | `CompanyNotificationPreferenceController` | 2 | Implemented | *View counts are approximate based on `resources/views/company-admin/**/*.blade.php`. --- ## 2. Navigation Menu vs. Routes Cross-Check Navigation links present in `resources/views/company-admin/layouts/app.blade.php`: ### Main Menu Group - `company-admin.dashboard` ✅ - `company-admin.statistics.index` ✅ ### Operations Group - `company-admin.rates.index` ✅ - `company-admin.housekeeping.dashboard` ✅ - `company-admin.housekeeping.maintenance` ✅ - `company-admin.inventory.index` ✅ - `company-admin.inspections.index` ✅ - `company-admin.gantt-chart.index` ✅ - `company-admin.front-desk.dashboard` ✅ - `company-admin.reporting.dashboard` ✅ - `company-admin.reports.custom-builder` ✅ - `company-admin.venues.index` ✅ ### Bookings Group - `company-admin.bookings.dashboard` ✅ - `company-admin.bookings.calendar` ✅ - `company-admin.bookings.index` ✅ - `company-admin.stays.index` ✅ - `company-admin.esti.export` ✅ - `company-admin.invoices.index` ✅ - `company-admin.payments.index` ✅ - `company-admin.fiscal-receipts.index` ✅ - `company-admin.payment.in-person` ✅ ### Management Group - `company-admin.clients.index` ✅ - `company-admin.users.index` ✅ - `company-admin.documents.index` ✅ - `company-admin.profile` ✅ ### Employee Management Group - `company-admin.employee-time.clock-in-times` ✅ - `company-admin.employee-time.shift-management` ✅ - `company-admin.employee-time.occupancy` ✅ - `company-admin.employee-time.day-offs` ✅ - `company-admin.facilities.index` ✅ - `company-admin.roles.index` ✅ - `company-admin.role-permissions.index` ✅ - `company-admin.attendance.manager` ✅ ### Other Header/Sidebar Links - `company-admin.switch-company` ✅ (in header) - `company-admin.b2b-invoices.index` ✅ (appears in sidebar) - `company-admin.subscriptions.index` ✅ (appears in sidebar) - `company-admin.financials.dashboard` ✅ (appears in sidebar) - `company-admin.guest-messaging.index` ✅ (appears in sidebar) - `company-admin.messaging.index` ✅ (appears in sidebar) - `company-admin.message-templates.index` ✅ (appears in sidebar) - `company-admin.notification-preferences.index` ✅ (appears in sidebar) - `company-admin.venue-objects.index` ✅ (appears in sidebar) - `company-admin.cancellation-policies.index` ✅ (appears in sidebar) - `company-admin.cancellation-settings.index` ✅ (appears in sidebar) - `company-admin.housekeeping-staff.dashboard` ✅ (appears in sidebar) --- ## 3. Identified Gaps & Issues ### A. Missing Navigation Links (Routes exist but not in main sidebar menu) | # | Route | Module | Impact | |---|-------|--------|--------| | 1 | `company-admin.housekeeping.tasks` | Housekeeping task management | Only `/housekeeping` dashboard and `/maintenance` linked; full task CRUD not in main nav | | 2 | `company-admin.housekeeping.schedules` | Housekeeping schedules | Not linked in main nav | | 3 | `company-admin.housekeeping.checklists` | Checklists | Linked, but checklist CRUD create route not directly reachable from nav | | 4 | `company-admin.housekeeping.lost-found` | Lost & found | Linked | | 5 | `company-admin.housekeeping.qr-codes` | QR code generation | Linked | | 6 | `company-admin.housekeeping.performance` | Performance reports | Linked | | 7 | `company-admin.housekeeping.staff-tracking` | Staff tracking | Linked | | 8 | `company-admin.inventory.low-stock` | Low stock alerts | No direct nav link | | 9 | `company-admin.inventory.transactions` | Inventory transactions | No direct nav link | | 10 | `company-admin.inventory.analytics` | Inventory analytics | No direct nav link | | 11 | `company-admin.inventory.export` | Inventory export | No direct nav link | | 12 | `company-admin.statistics.export.pdf` / `.csv` | Statistics export | No direct nav link | | 13 | `company-admin.subscriptions.plans` / `.current` / `.usage` | Subscription details | Only index linked | | 14 | `company-admin.financials.revenue` / `.expenses` / `.profit-loss` / `.reports` | Financial reports | Only dashboard linked | | 15 | `company-admin.reporting.occupancy` / `.revenue` / `.comparison` / `.forecast` / `.export` / `.realtime` | Reporting sub-pages | Only dashboard linked | | 16 | `company-admin.front-desk.operations` / `.night-audits` / `.room-blocks` | Front desk sub-features | Only dashboard linked | **Verdict:** These are mostly **sub-pages** accessed from their parent index views. This is a common and acceptable pattern, but worth verifying that index views provide clear navigation to these sub-routes. ### B. Potential Controller/Route Mismatches | # | Issue | Details | |---|-------|---------| | 1 | **Housekeeping double route prefix** | `HousekeepingController` routes (lines 922-946) and `HousekeepingManagerController` routes (lines 1006-1024) both use `company-admin.housekeeping.*` prefix. This creates potential route name collisions (`tasks`, `create-task`, `schedules`, etc.) depending on load order. | | 2 | **Messaging vs Guest Messaging** | `company-admin.messaging.*` and `company-admin.guest-messaging.*` are separate modules with overlapping purpose. Need to verify both are intentionally distinct and linked. | | 3 | **Venue Objects `show` route missing in nav** | `company-admin.venue-objects.show` exists but only `index`, `dashboard`, `create`, `edit`, `update`, `destroy` are linked/used. | ### C. Missing Functional Gaps | # | Gap | Evidence | |---|-----|----------| | 1 | **No centralized role/permission UI for company admins** | `role-permissions.index` exists but `CompanyRolePermissionController` may not fully expose granular permission management. | | 2 | **No dedicated company settings vs panel settings separation** | `company-admin.settings` exists but may overlap with Filament-based company settings. | | 3 | **No bulk actions consistency** | Some modules have `bulk-delete`, others do not (e.g., `documents` has bulk-delete, `products` does not in routes, `invoices` has it, `stays` has it). | | 4 | **Products missing `destroy` in nav** | `company-admin.products.destroy` route exists but products group in nav may not show delete. | | 5 | **Statistics sub-reports not surfaced** | Statistics has many API routes (`api.bookings`, `api.clients`, etc.) but the UI may not expose all reports. | | 6 | **Financials not grouped in sidebar** | Financials dashboard is present but revenue/expenses/profit-loss reports may not be linked from sidebar. | ### D. Documentation & Maintenance Gaps | # | Gap | Evidence | |---|-----|----------| | 1 | **No single company admin feature map** | This inventory is the first consolidated overview. | | 2 | **Code redundancy in data formatting** | `CODE_REDUNDANCY_ANALYSIS.md` highlights 1,000+ lines of duplicated venue/category/data mapping across controllers. | | 3 | **Policy integration incomplete** | `COMPANY_PANEL_POLICIES_SUMMARY.md` states next step: "Integrate policies into CompanyAdminController methods" — policy classes exist but may not yet be used in all controller methods. | | 4 | **Permission seeder missing** | Policies summary recommends creating permission seeder for default roles. | | 5 | **No permission-based UI conditionals** | Blade templates may not use `@can` directives consistently. | --- ## 4. Summary of Findings ### Strengths - **44+ modules** are implemented in the non-Filament company admin. - **Navigation is comprehensive** for top-level features. - **Route coverage is broad** with CRUD, bulk actions, exports, reports, and settings. - **RBAC policies** exist for most modules. - **125 Blade views** provide substantial UI coverage. ### Weaknesses / Gaps 1. **Sub-page navigation** for deep modules (housekeeping, inventory, financials, reporting, front desk, subscriptions) may be buried inside parent views or missing. 2. **Route name collision risk** in `housekeeping.*` due to two controllers sharing the same prefix. 3. **House overlap** between `messaging` and `guest-messaging` modules. 4. **Policy integration** may not yet be wired into all controller methods or Blade templates. 5. **Code redundancy** across controllers (venue formatting, image URLs, booking type filtering, category filtering). 6. **No consolidated feature map or documentation** for company admin. --- ## 5. Recommendations ### Immediate (High Priority) 1. **Resolve `housekeeping.*` route name collision** by renaming one group to `housekeeping-operations.*` or `housekeeping-manager.*`. 2. **Verify and fix any missing `destroy` route actions** (e.g., `products.destroy` if missing from nav). 3. **Add missing sub-page navigation** for: - Housekeeping tasks, schedules, checklists - Inventory low-stock, transactions, analytics, export - Financials revenue/expenses/profit-loss/reports - Reporting occupancy/revenue/comparison/forecast/export/realtime - Front desk operations/night-audits/room-blocks - Subscriptions plans/current/usage ### Short-term (Medium Priority) 4. **Integrate policies** into `CompanyAdminController` methods and Blade templates (`@can`, `@cannot`). 5. **Create permission seeder** for default company admin roles. 6. **Consolidate `messaging` vs `guest-messaging`** or clearly document the difference. ### Long-term (Low Priority) 7. **Refactor duplicated code** using API Resources (`VenueResource`, `VenueObjectResource`, etc.) and centralized filtering services. 8. **Create a single company admin feature documentation** to replace ad-hoc MD files. 9. **Add automated route tests** for all company admin endpoints to detect broken or orphaned routes. --- ## 6. Quick Reference: All Route Groups ``` company-admin. ├── dashboard ├── switch-company ├── profile ├── profile.update ├── profile.password ├── payment.in-person ├── venues.* ├── bookings.* ├── fiscal-receipts.* ├── invoices.* ├── clients.* ├── documents.* ├── users.* ├── stays.* ├── payments.* ├── facilities.* ├── roles.* ├── role-permissions.* ├── venue-objects.* ├── attendance.* ├── employee-time.* ├── services.* ├── packages.* ├── products.* ├── esti.* ├── settings.* ├── cancellation-policies.* ├── cancellation-settings.* ├── settlements.* ├── b2b-invoices.* ├── subscriptions.* ├── financials.* ├── statistics.* ├── rates.* ├── housekeeping.* ├── housekeeping-staff.* ├── inventory.* ├── inspections.* ├── gantt-chart.* ├── front-desk.* ├── reporting.* ├── reports.* ├── message-templates.* ├── guest-messaging.* ├── messaging.* └── notification-preferences.* ``` Generated: 2026-08-07