# 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