feat: add edit reservas + gestao de frota - #103

Merged
rbxyz merged 1 commit into
mainfrom
102-editar-carros
Sep 18, 2025
Merged

feat: add edit reservas + gestao de frota#103
rbxyz merged 1 commit into
mainfrom
102-editar-carros

Conversation

@rbxyz

@rbxyzrbxyz commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • New Admin Vehicles section: create/edit/delete vehicles, search, and tabs for Metrics, Usage History, and User Ranking with visual stats.
    • Cars: filter available vehicles by specific date and time; improved empty states and loading skeletons.
    • Edit existing reservations in a modal with prefilled data.
    • Vehicle availability now respects chosen date/time across listings.
  • Improvements
    • Simplified filters and messaging on vehicle details.
    • More consistent access checks for admin and form creation pages.
  • Chores
    • Added UI progress dependency for visual indicators.

@rbxyzrbxyz linked an issue Sep 18, 2025 that may be closed by this pull request
@vercel

vercelBot commented Sep 18, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloBuildingBuildingPreviewCommentSep 18, 2025 8:51pm

@rbxyz
rbxyz merged commit 2ca7771 into mainSep 18, 2025
2 of 3 checks passed
@coderabbitai

coderabbitaiBot commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a vehicles admin module (UI pages and components), client-side filtering and edit flow for car reservations, new server-side access-control helpers, availability filtering in vehicle API, an edit mutation for vehicle rents, and a Progress UI primitive. Several pages switch to server-side access helpers. Adds server-only guards and updates schemas/constants.

Changes

Cohort / File(s)Summary of changes
Dependencies & UI Primitive
package.json, src/components/ui/progress.tsx
Added dependency @radix-ui/react-progress; introduced Progress component built on Radix primitives.
Access Control Split (Server vs. Pure Predicates)
src/lib/access-control-server.ts, src/lib/access-control.ts
New server-side helpers performing redirects (checkAdminAccess, checkFormAccess, checkFormCreationAccess). Converted client module to stateless permission predicates (can*, canView*, hasAdminAccess, getAccessibleForms); removed redirecting helpers.
Access Helper Import Switch (Admin/Form Pages)
src/app/(authenticated)/admin/birthday/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/(authenticated)/admin/rooms/page.tsx, src/app/(authenticated)/forms/new/page.tsx
Changed imports from @/lib/access-control to @/lib/access-control-server; usage unchanged.
Admin Vehicles Feature (UI + Navigation)
src/app/(authenticated)/admin/vehicles/page.tsx, src/components/admin/vehicles/vehicle-form.tsx, src/components/admin/vehicles/vehicle-metrics.tsx, src/components/admin/vehicles/vehicle-usage-history.tsx, src/components/admin/vehicles/user-ranking.tsx, src/const/admin-routes.ts
Added admin vehicles page with tabs (list, metrics, history, ranking). Created form for create/update, metrics dashboard, usage history, and user ranking components. Appended /admin/vehicles to admin routes.
Schemas (Vehicles & Rents)
src/schemas/vehicle.schema.ts, src/schemas/vehicle-rent.schema.ts
Vehicle schema: added Box_Filial to EnterpriseEnum; tightened plate max length to 7. New editVehicleRentSchema and EditVehicleRentInput.
Cars Pages: Client Filters & Edit Flow
src/app/(authenticated)/cars/page.tsx, src/app/(authenticated)/cars/details/page.tsx, src/components/rent-form.tsx
Migrated cars page to client component; added date/time filter UI, gated fetch via api.vehicle.getAll with checkDate/checkTime; introduced edit reservation modal and edit-capable RentForm. Simplified details page filters to explicit date/time.
Server API: Availability & Edit Rent
src/server/api/routers/vehicle.ts, src/server/api/routers/vehicle-rent.ts
vehicle.getAll: added checkDate/checkTime inputs and conflict filtering vs. existing rents. vehicleRent.edit: new mutation validating ownership, timing, overlaps, and updating fields.
Server-only Annotations & Import Order
src/server/api/root.ts, src/server/api/routers/user.ts, src/server/api/trpc.ts, src/trpc/server.ts
Added import "server-only" to server modules; reordered an import in trpc/server.ts; no API changes.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor U as User
participant C as Cars Page (Client)
participant API as TRPC vehicle.getAll
participant DB as DB (vehicles+rents)
U->>C: Enter date + time, Apply Filter
C->>API: getAll({ limit, availble, checkDate, checkTime })
API->>DB: Query vehicles + rents
DB-->>API: Vehicles + reservations
API->>API: Filter by overlaps at checkDate/time
API-->>C: Filtered vehicles
C-->>U: Show results or empty state
Loading
sequenceDiagram
autonumber
actor Admin as Admin
participant V as Admin Vehicles Page
participant TR as TRPC vehicle.create/update/delete
participant DB as DB
Admin->>V: Open Create/Edit/Delete
V->>TR: create/update/delete (vehicle)
TR->>DB: Persist change
DB-->>TR: OK / Error
TR-->>V: Success/Error
V-->>Admin: Toast + Refetch list
Loading
sequenceDiagram
autonumber
actor U as User
participant P as Cars Page (Client)
participant M as Modal RentForm (editMode)
participant R as TRPC vehicleRent.edit
participant DB as DB
U->>P: Click "Editar Reserva"
P->>M: Open modal with existingRent
U->>M: Submit updates
M->>R: edit(input)
R->>DB: Validate + update + conflict check
DB-->>R: Updated rent
R-->>M: Success
M->>P: onCloseModal()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • jdalmeida

Poem

Hop-hop, new wheels in the admin lot,
Charts and ranks—look what we’ve got! 🚗📊
Filters tick and rentals mend,
Progress bars that smoothly blend. ▓▓▓░
Permissions split, the routes aligned—
A tidy warren, finely designed. 🐇✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 102-editar-carros

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58475d6 and 454ea5e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • package.json (1 hunks)
  • src/app/(authenticated)/admin/birthday/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/rooms/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/vehicles/page.tsx (1 hunks)
  • src/app/(authenticated)/cars/details/page.tsx (3 hunks)
  • src/app/(authenticated)/cars/page.tsx (5 hunks)
  • src/app/(authenticated)/forms/new/page.tsx (1 hunks)
  • src/components/admin/vehicles/user-ranking.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-form.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-metrics.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-usage-history.tsx (1 hunks)
  • src/components/rent-form.tsx (7 hunks)
  • src/components/ui/progress.tsx (1 hunks)
  • src/const/admin-routes.ts (2 hunks)
  • src/lib/access-control-server.ts (1 hunks)
  • src/lib/access-control.ts (0 hunks)
  • src/schemas/vehicle-rent.schema.ts (2 hunks)
  • src/schemas/vehicle.schema.ts (1 hunks)
  • src/server/api/root.ts (1 hunks)
  • src/server/api/routers/user.ts (1 hunks)
  • src/server/api/routers/vehicle-rent.ts (2 hunks)
  • src/server/api/routers/vehicle.ts (4 hunks)
  • src/server/api/trpc.ts (1 hunks)
  • src/trpc/server.ts (1 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Editar carros

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: add edit reservas + gestao de frota - #103

Merged
rbxyz merged 1 commit into
mainfrom
102-editar-carros
Sep 18, 2025
Merged

feat: add edit reservas + gestao de frota#103
rbxyz merged 1 commit into
mainfrom
102-editar-carros

Conversation

@rbxyz

@rbxyzrbxyz commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • New Admin Vehicles section: create/edit/delete vehicles, search, and tabs for Metrics, Usage History, and User Ranking with visual stats.
    • Cars: filter available vehicles by specific date and time; improved empty states and loading skeletons.
    • Edit existing reservations in a modal with prefilled data.
    • Vehicle availability now respects chosen date/time across listings.
  • Improvements
    • Simplified filters and messaging on vehicle details.
    • More consistent access checks for admin and form creation pages.
  • Chores
    • Added UI progress dependency for visual indicators.

@rbxyzrbxyz linked an issue Sep 18, 2025 that may be closed by this pull request
@vercel

vercelBot commented Sep 18, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloBuildingBuildingPreviewCommentSep 18, 2025 8:51pm

@rbxyz
rbxyz merged commit 2ca7771 into mainSep 18, 2025
2 of 3 checks passed
@coderabbitai

coderabbitaiBot commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a vehicles admin module (UI pages and components), client-side filtering and edit flow for car reservations, new server-side access-control helpers, availability filtering in vehicle API, an edit mutation for vehicle rents, and a Progress UI primitive. Several pages switch to server-side access helpers. Adds server-only guards and updates schemas/constants.

Changes

Cohort / File(s)Summary of changes
Dependencies & UI Primitive
package.json, src/components/ui/progress.tsx
Added dependency @radix-ui/react-progress; introduced Progress component built on Radix primitives.
Access Control Split (Server vs. Pure Predicates)
src/lib/access-control-server.ts, src/lib/access-control.ts
New server-side helpers performing redirects (checkAdminAccess, checkFormAccess, checkFormCreationAccess). Converted client module to stateless permission predicates (can*, canView*, hasAdminAccess, getAccessibleForms); removed redirecting helpers.
Access Helper Import Switch (Admin/Form Pages)
src/app/(authenticated)/admin/birthday/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/(authenticated)/admin/rooms/page.tsx, src/app/(authenticated)/forms/new/page.tsx
Changed imports from @/lib/access-control to @/lib/access-control-server; usage unchanged.
Admin Vehicles Feature (UI + Navigation)
src/app/(authenticated)/admin/vehicles/page.tsx, src/components/admin/vehicles/vehicle-form.tsx, src/components/admin/vehicles/vehicle-metrics.tsx, src/components/admin/vehicles/vehicle-usage-history.tsx, src/components/admin/vehicles/user-ranking.tsx, src/const/admin-routes.ts
Added admin vehicles page with tabs (list, metrics, history, ranking). Created form for create/update, metrics dashboard, usage history, and user ranking components. Appended /admin/vehicles to admin routes.
Schemas (Vehicles & Rents)
src/schemas/vehicle.schema.ts, src/schemas/vehicle-rent.schema.ts
Vehicle schema: added Box_Filial to EnterpriseEnum; tightened plate max length to 7. New editVehicleRentSchema and EditVehicleRentInput.
Cars Pages: Client Filters & Edit Flow
src/app/(authenticated)/cars/page.tsx, src/app/(authenticated)/cars/details/page.tsx, src/components/rent-form.tsx
Migrated cars page to client component; added date/time filter UI, gated fetch via api.vehicle.getAll with checkDate/checkTime; introduced edit reservation modal and edit-capable RentForm. Simplified details page filters to explicit date/time.
Server API: Availability & Edit Rent
src/server/api/routers/vehicle.ts, src/server/api/routers/vehicle-rent.ts
vehicle.getAll: added checkDate/checkTime inputs and conflict filtering vs. existing rents. vehicleRent.edit: new mutation validating ownership, timing, overlaps, and updating fields.
Server-only Annotations & Import Order
src/server/api/root.ts, src/server/api/routers/user.ts, src/server/api/trpc.ts, src/trpc/server.ts
Added import "server-only" to server modules; reordered an import in trpc/server.ts; no API changes.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor U as User
participant C as Cars Page (Client)
participant API as TRPC vehicle.getAll
participant DB as DB (vehicles+rents)
U->>C: Enter date + time, Apply Filter
C->>API: getAll({ limit, availble, checkDate, checkTime })
API->>DB: Query vehicles + rents
DB-->>API: Vehicles + reservations
API->>API: Filter by overlaps at checkDate/time
API-->>C: Filtered vehicles
C-->>U: Show results or empty state
Loading
sequenceDiagram
autonumber
actor Admin as Admin
participant V as Admin Vehicles Page
participant TR as TRPC vehicle.create/update/delete
participant DB as DB
Admin->>V: Open Create/Edit/Delete
V->>TR: create/update/delete (vehicle)
TR->>DB: Persist change
DB-->>TR: OK / Error
TR-->>V: Success/Error
V-->>Admin: Toast + Refetch list
Loading
sequenceDiagram
autonumber
actor U as User
participant P as Cars Page (Client)
participant M as Modal RentForm (editMode)
participant R as TRPC vehicleRent.edit
participant DB as DB
U->>P: Click "Editar Reserva"
P->>M: Open modal with existingRent
U->>M: Submit updates
M->>R: edit(input)
R->>DB: Validate + update + conflict check
DB-->>R: Updated rent
R-->>M: Success
M->>P: onCloseModal()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • jdalmeida

Poem

Hop-hop, new wheels in the admin lot,
Charts and ranks—look what we’ve got! 🚗📊
Filters tick and rentals mend,
Progress bars that smoothly blend. ▓▓▓░
Permissions split, the routes aligned—
A tidy warren, finely designed. 🐇✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 102-editar-carros

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58475d6 and 454ea5e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • package.json (1 hunks)
  • src/app/(authenticated)/admin/birthday/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/rooms/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/vehicles/page.tsx (1 hunks)
  • src/app/(authenticated)/cars/details/page.tsx (3 hunks)
  • src/app/(authenticated)/cars/page.tsx (5 hunks)
  • src/app/(authenticated)/forms/new/page.tsx (1 hunks)
  • src/components/admin/vehicles/user-ranking.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-form.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-metrics.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-usage-history.tsx (1 hunks)
  • src/components/rent-form.tsx (7 hunks)
  • src/components/ui/progress.tsx (1 hunks)
  • src/const/admin-routes.ts (2 hunks)
  • src/lib/access-control-server.ts (1 hunks)
  • src/lib/access-control.ts (0 hunks)
  • src/schemas/vehicle-rent.schema.ts (2 hunks)
  • src/schemas/vehicle.schema.ts (1 hunks)
  • src/server/api/root.ts (1 hunks)
  • src/server/api/routers/user.ts (1 hunks)
  • src/server/api/routers/vehicle-rent.ts (2 hunks)
  • src/server/api/routers/vehicle.ts (4 hunks)
  • src/server/api/trpc.ts (1 hunks)
  • src/trpc/server.ts (1 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Editar carros

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add edit reservas + gestao de frota - #103

Merged
rbxyz merged 1 commit into
mainfrom
102-editar-carros
Sep 18, 2025
Merged

feat: add edit reservas + gestao de frota#103
rbxyz merged 1 commit into
mainfrom
102-editar-carros

Conversation

@rbxyz

@rbxyzrbxyz commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • New Admin Vehicles section: create/edit/delete vehicles, search, and tabs for Metrics, Usage History, and User Ranking with visual stats.
    • Cars: filter available vehicles by specific date and time; improved empty states and loading skeletons.
    • Edit existing reservations in a modal with prefilled data.
    • Vehicle availability now respects chosen date/time across listings.
  • Improvements
    • Simplified filters and messaging on vehicle details.
    • More consistent access checks for admin and form creation pages.
  • Chores
    • Added UI progress dependency for visual indicators.

@rbxyzrbxyz linked an issue Sep 18, 2025 that may be closed by this pull request
@vercel

vercelBot commented Sep 18, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloBuildingBuildingPreviewCommentSep 18, 2025 8:51pm

@rbxyz
rbxyz merged commit 2ca7771 into mainSep 18, 2025
2 of 3 checks passed
@coderabbitai

coderabbitaiBot commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a vehicles admin module (UI pages and components), client-side filtering and edit flow for car reservations, new server-side access-control helpers, availability filtering in vehicle API, an edit mutation for vehicle rents, and a Progress UI primitive. Several pages switch to server-side access helpers. Adds server-only guards and updates schemas/constants.

Changes

Cohort / File(s)Summary of changes
Dependencies & UI Primitive
package.json, src/components/ui/progress.tsx
Added dependency @radix-ui/react-progress; introduced Progress component built on Radix primitives.
Access Control Split (Server vs. Pure Predicates)
src/lib/access-control-server.ts, src/lib/access-control.ts
New server-side helpers performing redirects (checkAdminAccess, checkFormAccess, checkFormCreationAccess). Converted client module to stateless permission predicates (can*, canView*, hasAdminAccess, getAccessibleForms); removed redirecting helpers.
Access Helper Import Switch (Admin/Form Pages)
src/app/(authenticated)/admin/birthday/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/(authenticated)/admin/rooms/page.tsx, src/app/(authenticated)/forms/new/page.tsx
Changed imports from @/lib/access-control to @/lib/access-control-server; usage unchanged.
Admin Vehicles Feature (UI + Navigation)
src/app/(authenticated)/admin/vehicles/page.tsx, src/components/admin/vehicles/vehicle-form.tsx, src/components/admin/vehicles/vehicle-metrics.tsx, src/components/admin/vehicles/vehicle-usage-history.tsx, src/components/admin/vehicles/user-ranking.tsx, src/const/admin-routes.ts
Added admin vehicles page with tabs (list, metrics, history, ranking). Created form for create/update, metrics dashboard, usage history, and user ranking components. Appended /admin/vehicles to admin routes.
Schemas (Vehicles & Rents)
src/schemas/vehicle.schema.ts, src/schemas/vehicle-rent.schema.ts
Vehicle schema: added Box_Filial to EnterpriseEnum; tightened plate max length to 7. New editVehicleRentSchema and EditVehicleRentInput.
Cars Pages: Client Filters & Edit Flow
src/app/(authenticated)/cars/page.tsx, src/app/(authenticated)/cars/details/page.tsx, src/components/rent-form.tsx
Migrated cars page to client component; added date/time filter UI, gated fetch via api.vehicle.getAll with checkDate/checkTime; introduced edit reservation modal and edit-capable RentForm. Simplified details page filters to explicit date/time.
Server API: Availability & Edit Rent
src/server/api/routers/vehicle.ts, src/server/api/routers/vehicle-rent.ts
vehicle.getAll: added checkDate/checkTime inputs and conflict filtering vs. existing rents. vehicleRent.edit: new mutation validating ownership, timing, overlaps, and updating fields.
Server-only Annotations & Import Order
src/server/api/root.ts, src/server/api/routers/user.ts, src/server/api/trpc.ts, src/trpc/server.ts
Added import "server-only" to server modules; reordered an import in trpc/server.ts; no API changes.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor U as User
participant C as Cars Page (Client)
participant API as TRPC vehicle.getAll
participant DB as DB (vehicles+rents)
U->>C: Enter date + time, Apply Filter
C->>API: getAll({ limit, availble, checkDate, checkTime })
API->>DB: Query vehicles + rents
DB-->>API: Vehicles + reservations
API->>API: Filter by overlaps at checkDate/time
API-->>C: Filtered vehicles
C-->>U: Show results or empty state
Loading
sequenceDiagram
autonumber
actor Admin as Admin
participant V as Admin Vehicles Page
participant TR as TRPC vehicle.create/update/delete
participant DB as DB
Admin->>V: Open Create/Edit/Delete
V->>TR: create/update/delete (vehicle)
TR->>DB: Persist change
DB-->>TR: OK / Error
TR-->>V: Success/Error
V-->>Admin: Toast + Refetch list
Loading
sequenceDiagram
autonumber
actor U as User
participant P as Cars Page (Client)
participant M as Modal RentForm (editMode)
participant R as TRPC vehicleRent.edit
participant DB as DB
U->>P: Click "Editar Reserva"
P->>M: Open modal with existingRent
U->>M: Submit updates
M->>R: edit(input)
R->>DB: Validate + update + conflict check
DB-->>R: Updated rent
R-->>M: Success
M->>P: onCloseModal()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • jdalmeida

Poem

Hop-hop, new wheels in the admin lot,
Charts and ranks—look what we’ve got! 🚗📊
Filters tick and rentals mend,
Progress bars that smoothly blend. ▓▓▓░
Permissions split, the routes aligned—
A tidy warren, finely designed. 🐇✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 102-editar-carros

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58475d6 and 454ea5e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • package.json (1 hunks)
  • src/app/(authenticated)/admin/birthday/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/rooms/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/vehicles/page.tsx (1 hunks)
  • src/app/(authenticated)/cars/details/page.tsx (3 hunks)
  • src/app/(authenticated)/cars/page.tsx (5 hunks)
  • src/app/(authenticated)/forms/new/page.tsx (1 hunks)
  • src/components/admin/vehicles/user-ranking.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-form.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-metrics.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-usage-history.tsx (1 hunks)
  • src/components/rent-form.tsx (7 hunks)
  • src/components/ui/progress.tsx (1 hunks)
  • src/const/admin-routes.ts (2 hunks)
  • src/lib/access-control-server.ts (1 hunks)
  • src/lib/access-control.ts (0 hunks)
  • src/schemas/vehicle-rent.schema.ts (2 hunks)
  • src/schemas/vehicle.schema.ts (1 hunks)
  • src/server/api/root.ts (1 hunks)
  • src/server/api/routers/user.ts (1 hunks)
  • src/server/api/routers/vehicle-rent.ts (2 hunks)
  • src/server/api/routers/vehicle.ts (4 hunks)
  • src/server/api/trpc.ts (1 hunks)
  • src/trpc/server.ts (1 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Editar carros

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add edit reservas + gestao de frota - #103

Merged
rbxyz merged 1 commit into
mainfrom
102-editar-carros
Sep 18, 2025
Merged

feat: add edit reservas + gestao de frota#103
rbxyz merged 1 commit into
mainfrom
102-editar-carros

Conversation

@rbxyz

@rbxyzrbxyz commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • New Admin Vehicles section: create/edit/delete vehicles, search, and tabs for Metrics, Usage History, and User Ranking with visual stats.
    • Cars: filter available vehicles by specific date and time; improved empty states and loading skeletons.
    • Edit existing reservations in a modal with prefilled data.
    • Vehicle availability now respects chosen date/time across listings.
  • Improvements
    • Simplified filters and messaging on vehicle details.
    • More consistent access checks for admin and form creation pages.
  • Chores
    • Added UI progress dependency for visual indicators.

@rbxyzrbxyz linked an issue Sep 18, 2025 that may be closed by this pull request
@vercel

vercelBot commented Sep 18, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloBuildingBuildingPreviewCommentSep 18, 2025 8:51pm

@rbxyz
rbxyz merged commit 2ca7771 into mainSep 18, 2025
2 of 3 checks passed
@coderabbitai

coderabbitaiBot commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a vehicles admin module (UI pages and components), client-side filtering and edit flow for car reservations, new server-side access-control helpers, availability filtering in vehicle API, an edit mutation for vehicle rents, and a Progress UI primitive. Several pages switch to server-side access helpers. Adds server-only guards and updates schemas/constants.

Changes

Cohort / File(s)Summary of changes
Dependencies & UI Primitive
package.json, src/components/ui/progress.tsx
Added dependency @radix-ui/react-progress; introduced Progress component built on Radix primitives.
Access Control Split (Server vs. Pure Predicates)
src/lib/access-control-server.ts, src/lib/access-control.ts
New server-side helpers performing redirects (checkAdminAccess, checkFormAccess, checkFormCreationAccess). Converted client module to stateless permission predicates (can*, canView*, hasAdminAccess, getAccessibleForms); removed redirecting helpers.
Access Helper Import Switch (Admin/Form Pages)
src/app/(authenticated)/admin/birthday/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/(authenticated)/admin/rooms/page.tsx, src/app/(authenticated)/forms/new/page.tsx
Changed imports from @/lib/access-control to @/lib/access-control-server; usage unchanged.
Admin Vehicles Feature (UI + Navigation)
src/app/(authenticated)/admin/vehicles/page.tsx, src/components/admin/vehicles/vehicle-form.tsx, src/components/admin/vehicles/vehicle-metrics.tsx, src/components/admin/vehicles/vehicle-usage-history.tsx, src/components/admin/vehicles/user-ranking.tsx, src/const/admin-routes.ts
Added admin vehicles page with tabs (list, metrics, history, ranking). Created form for create/update, metrics dashboard, usage history, and user ranking components. Appended /admin/vehicles to admin routes.
Schemas (Vehicles & Rents)
src/schemas/vehicle.schema.ts, src/schemas/vehicle-rent.schema.ts
Vehicle schema: added Box_Filial to EnterpriseEnum; tightened plate max length to 7. New editVehicleRentSchema and EditVehicleRentInput.
Cars Pages: Client Filters & Edit Flow
src/app/(authenticated)/cars/page.tsx, src/app/(authenticated)/cars/details/page.tsx, src/components/rent-form.tsx
Migrated cars page to client component; added date/time filter UI, gated fetch via api.vehicle.getAll with checkDate/checkTime; introduced edit reservation modal and edit-capable RentForm. Simplified details page filters to explicit date/time.
Server API: Availability & Edit Rent
src/server/api/routers/vehicle.ts, src/server/api/routers/vehicle-rent.ts
vehicle.getAll: added checkDate/checkTime inputs and conflict filtering vs. existing rents. vehicleRent.edit: new mutation validating ownership, timing, overlaps, and updating fields.
Server-only Annotations & Import Order
src/server/api/root.ts, src/server/api/routers/user.ts, src/server/api/trpc.ts, src/trpc/server.ts
Added import "server-only" to server modules; reordered an import in trpc/server.ts; no API changes.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor U as User
participant C as Cars Page (Client)
participant API as TRPC vehicle.getAll
participant DB as DB (vehicles+rents)
U->>C: Enter date + time, Apply Filter
C->>API: getAll({ limit, availble, checkDate, checkTime })
API->>DB: Query vehicles + rents
DB-->>API: Vehicles + reservations
API->>API: Filter by overlaps at checkDate/time
API-->>C: Filtered vehicles
C-->>U: Show results or empty state
Loading
sequenceDiagram
autonumber
actor Admin as Admin
participant V as Admin Vehicles Page
participant TR as TRPC vehicle.create/update/delete
participant DB as DB
Admin->>V: Open Create/Edit/Delete
V->>TR: create/update/delete (vehicle)
TR->>DB: Persist change
DB-->>TR: OK / Error
TR-->>V: Success/Error
V-->>Admin: Toast + Refetch list
Loading
sequenceDiagram
autonumber
actor U as User
participant P as Cars Page (Client)
participant M as Modal RentForm (editMode)
participant R as TRPC vehicleRent.edit
participant DB as DB
U->>P: Click "Editar Reserva"
P->>M: Open modal with existingRent
U->>M: Submit updates
M->>R: edit(input)
R->>DB: Validate + update + conflict check
DB-->>R: Updated rent
R-->>M: Success
M->>P: onCloseModal()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • jdalmeida

Poem

Hop-hop, new wheels in the admin lot,
Charts and ranks—look what we’ve got! 🚗📊
Filters tick and rentals mend,
Progress bars that smoothly blend. ▓▓▓░
Permissions split, the routes aligned—
A tidy warren, finely designed. 🐇✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 102-editar-carros

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58475d6 and 454ea5e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • package.json (1 hunks)
  • src/app/(authenticated)/admin/birthday/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/rooms/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/vehicles/page.tsx (1 hunks)
  • src/app/(authenticated)/cars/details/page.tsx (3 hunks)
  • src/app/(authenticated)/cars/page.tsx (5 hunks)
  • src/app/(authenticated)/forms/new/page.tsx (1 hunks)
  • src/components/admin/vehicles/user-ranking.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-form.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-metrics.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-usage-history.tsx (1 hunks)
  • src/components/rent-form.tsx (7 hunks)
  • src/components/ui/progress.tsx (1 hunks)
  • src/const/admin-routes.ts (2 hunks)
  • src/lib/access-control-server.ts (1 hunks)
  • src/lib/access-control.ts (0 hunks)
  • src/schemas/vehicle-rent.schema.ts (2 hunks)
  • src/schemas/vehicle.schema.ts (1 hunks)
  • src/server/api/root.ts (1 hunks)
  • src/server/api/routers/user.ts (1 hunks)
  • src/server/api/routers/vehicle-rent.ts (2 hunks)
  • src/server/api/routers/vehicle.ts (4 hunks)
  • src/server/api/trpc.ts (1 hunks)
  • src/trpc/server.ts (1 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Editar carros

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: add edit reservas + gestao de frota - #103

Merged
rbxyz merged 1 commit into
mainfrom
102-editar-carros
Sep 18, 2025
Merged

feat: add edit reservas + gestao de frota#103
rbxyz merged 1 commit into
mainfrom
102-editar-carros

Conversation

@rbxyz

@rbxyzrbxyz commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • New Admin Vehicles section: create/edit/delete vehicles, search, and tabs for Metrics, Usage History, and User Ranking with visual stats.
    • Cars: filter available vehicles by specific date and time; improved empty states and loading skeletons.
    • Edit existing reservations in a modal with prefilled data.
    • Vehicle availability now respects chosen date/time across listings.
  • Improvements
    • Simplified filters and messaging on vehicle details.
    • More consistent access checks for admin and form creation pages.
  • Chores
    • Added UI progress dependency for visual indicators.

@rbxyzrbxyz linked an issue Sep 18, 2025 that may be closed by this pull request
@vercel

vercelBot commented Sep 18, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloBuildingBuildingPreviewCommentSep 18, 2025 8:51pm

@rbxyz
rbxyz merged commit 2ca7771 into mainSep 18, 2025
2 of 3 checks passed
@coderabbitai

coderabbitaiBot commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a vehicles admin module (UI pages and components), client-side filtering and edit flow for car reservations, new server-side access-control helpers, availability filtering in vehicle API, an edit mutation for vehicle rents, and a Progress UI primitive. Several pages switch to server-side access helpers. Adds server-only guards and updates schemas/constants.

Changes

Cohort / File(s)Summary of changes
Dependencies & UI Primitive
package.json, src/components/ui/progress.tsx
Added dependency @radix-ui/react-progress; introduced Progress component built on Radix primitives.
Access Control Split (Server vs. Pure Predicates)
src/lib/access-control-server.ts, src/lib/access-control.ts
New server-side helpers performing redirects (checkAdminAccess, checkFormAccess, checkFormCreationAccess). Converted client module to stateless permission predicates (can*, canView*, hasAdminAccess, getAccessibleForms); removed redirecting helpers.
Access Helper Import Switch (Admin/Form Pages)
src/app/(authenticated)/admin/birthday/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/(authenticated)/admin/rooms/page.tsx, src/app/(authenticated)/forms/new/page.tsx
Changed imports from @/lib/access-control to @/lib/access-control-server; usage unchanged.
Admin Vehicles Feature (UI + Navigation)
src/app/(authenticated)/admin/vehicles/page.tsx, src/components/admin/vehicles/vehicle-form.tsx, src/components/admin/vehicles/vehicle-metrics.tsx, src/components/admin/vehicles/vehicle-usage-history.tsx, src/components/admin/vehicles/user-ranking.tsx, src/const/admin-routes.ts
Added admin vehicles page with tabs (list, metrics, history, ranking). Created form for create/update, metrics dashboard, usage history, and user ranking components. Appended /admin/vehicles to admin routes.
Schemas (Vehicles & Rents)
src/schemas/vehicle.schema.ts, src/schemas/vehicle-rent.schema.ts
Vehicle schema: added Box_Filial to EnterpriseEnum; tightened plate max length to 7. New editVehicleRentSchema and EditVehicleRentInput.
Cars Pages: Client Filters & Edit Flow
src/app/(authenticated)/cars/page.tsx, src/app/(authenticated)/cars/details/page.tsx, src/components/rent-form.tsx
Migrated cars page to client component; added date/time filter UI, gated fetch via api.vehicle.getAll with checkDate/checkTime; introduced edit reservation modal and edit-capable RentForm. Simplified details page filters to explicit date/time.
Server API: Availability & Edit Rent
src/server/api/routers/vehicle.ts, src/server/api/routers/vehicle-rent.ts
vehicle.getAll: added checkDate/checkTime inputs and conflict filtering vs. existing rents. vehicleRent.edit: new mutation validating ownership, timing, overlaps, and updating fields.
Server-only Annotations & Import Order
src/server/api/root.ts, src/server/api/routers/user.ts, src/server/api/trpc.ts, src/trpc/server.ts
Added import "server-only" to server modules; reordered an import in trpc/server.ts; no API changes.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor U as User
participant C as Cars Page (Client)
participant API as TRPC vehicle.getAll
participant DB as DB (vehicles+rents)
U->>C: Enter date + time, Apply Filter
C->>API: getAll({ limit, availble, checkDate, checkTime })
API->>DB: Query vehicles + rents
DB-->>API: Vehicles + reservations
API->>API: Filter by overlaps at checkDate/time
API-->>C: Filtered vehicles
C-->>U: Show results or empty state
Loading
sequenceDiagram
autonumber
actor Admin as Admin
participant V as Admin Vehicles Page
participant TR as TRPC vehicle.create/update/delete
participant DB as DB
Admin->>V: Open Create/Edit/Delete
V->>TR: create/update/delete (vehicle)
TR->>DB: Persist change
DB-->>TR: OK / Error
TR-->>V: Success/Error
V-->>Admin: Toast + Refetch list
Loading
sequenceDiagram
autonumber
actor U as User
participant P as Cars Page (Client)
participant M as Modal RentForm (editMode)
participant R as TRPC vehicleRent.edit
participant DB as DB
U->>P: Click "Editar Reserva"
P->>M: Open modal with existingRent
U->>M: Submit updates
M->>R: edit(input)
R->>DB: Validate + update + conflict check
DB-->>R: Updated rent
R-->>M: Success
M->>P: onCloseModal()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • jdalmeida

Poem

Hop-hop, new wheels in the admin lot,
Charts and ranks—look what we’ve got! 🚗📊
Filters tick and rentals mend,
Progress bars that smoothly blend. ▓▓▓░
Permissions split, the routes aligned—
A tidy warren, finely designed. 🐇✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 102-editar-carros

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58475d6 and 454ea5e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • package.json (1 hunks)
  • src/app/(authenticated)/admin/birthday/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/rooms/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/vehicles/page.tsx (1 hunks)
  • src/app/(authenticated)/cars/details/page.tsx (3 hunks)
  • src/app/(authenticated)/cars/page.tsx (5 hunks)
  • src/app/(authenticated)/forms/new/page.tsx (1 hunks)
  • src/components/admin/vehicles/user-ranking.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-form.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-metrics.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-usage-history.tsx (1 hunks)
  • src/components/rent-form.tsx (7 hunks)
  • src/components/ui/progress.tsx (1 hunks)
  • src/const/admin-routes.ts (2 hunks)
  • src/lib/access-control-server.ts (1 hunks)
  • src/lib/access-control.ts (0 hunks)
  • src/schemas/vehicle-rent.schema.ts (2 hunks)
  • src/schemas/vehicle.schema.ts (1 hunks)
  • src/server/api/root.ts (1 hunks)
  • src/server/api/routers/user.ts (1 hunks)
  • src/server/api/routers/vehicle-rent.ts (2 hunks)
  • src/server/api/routers/vehicle.ts (4 hunks)
  • src/server/api/trpc.ts (1 hunks)
  • src/trpc/server.ts (1 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Editar carros

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add edit reservas + gestao de frota - #103

Merged
rbxyz merged 1 commit into
mainfrom
102-editar-carros
Sep 18, 2025
Merged

feat: add edit reservas + gestao de frota#103
rbxyz merged 1 commit into
mainfrom
102-editar-carros

Conversation

@rbxyz

@rbxyzrbxyz commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • New Admin Vehicles section: create/edit/delete vehicles, search, and tabs for Metrics, Usage History, and User Ranking with visual stats.
    • Cars: filter available vehicles by specific date and time; improved empty states and loading skeletons.
    • Edit existing reservations in a modal with prefilled data.
    • Vehicle availability now respects chosen date/time across listings.
  • Improvements
    • Simplified filters and messaging on vehicle details.
    • More consistent access checks for admin and form creation pages.
  • Chores
    • Added UI progress dependency for visual indicators.

@rbxyzrbxyz linked an issue Sep 18, 2025 that may be closed by this pull request
@vercel

vercelBot commented Sep 18, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloBuildingBuildingPreviewCommentSep 18, 2025 8:51pm

@rbxyz
rbxyz merged commit 2ca7771 into mainSep 18, 2025
2 of 3 checks passed
@coderabbitai

coderabbitaiBot commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a vehicles admin module (UI pages and components), client-side filtering and edit flow for car reservations, new server-side access-control helpers, availability filtering in vehicle API, an edit mutation for vehicle rents, and a Progress UI primitive. Several pages switch to server-side access helpers. Adds server-only guards and updates schemas/constants.

Changes

Cohort / File(s)Summary of changes
Dependencies & UI Primitive
package.json, src/components/ui/progress.tsx
Added dependency @radix-ui/react-progress; introduced Progress component built on Radix primitives.
Access Control Split (Server vs. Pure Predicates)
src/lib/access-control-server.ts, src/lib/access-control.ts
New server-side helpers performing redirects (checkAdminAccess, checkFormAccess, checkFormCreationAccess). Converted client module to stateless permission predicates (can*, canView*, hasAdminAccess, getAccessibleForms); removed redirecting helpers.
Access Helper Import Switch (Admin/Form Pages)
src/app/(authenticated)/admin/birthday/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/(authenticated)/admin/rooms/page.tsx, src/app/(authenticated)/forms/new/page.tsx
Changed imports from @/lib/access-control to @/lib/access-control-server; usage unchanged.
Admin Vehicles Feature (UI + Navigation)
src/app/(authenticated)/admin/vehicles/page.tsx, src/components/admin/vehicles/vehicle-form.tsx, src/components/admin/vehicles/vehicle-metrics.tsx, src/components/admin/vehicles/vehicle-usage-history.tsx, src/components/admin/vehicles/user-ranking.tsx, src/const/admin-routes.ts
Added admin vehicles page with tabs (list, metrics, history, ranking). Created form for create/update, metrics dashboard, usage history, and user ranking components. Appended /admin/vehicles to admin routes.
Schemas (Vehicles & Rents)
src/schemas/vehicle.schema.ts, src/schemas/vehicle-rent.schema.ts
Vehicle schema: added Box_Filial to EnterpriseEnum; tightened plate max length to 7. New editVehicleRentSchema and EditVehicleRentInput.
Cars Pages: Client Filters & Edit Flow
src/app/(authenticated)/cars/page.tsx, src/app/(authenticated)/cars/details/page.tsx, src/components/rent-form.tsx
Migrated cars page to client component; added date/time filter UI, gated fetch via api.vehicle.getAll with checkDate/checkTime; introduced edit reservation modal and edit-capable RentForm. Simplified details page filters to explicit date/time.
Server API: Availability & Edit Rent
src/server/api/routers/vehicle.ts, src/server/api/routers/vehicle-rent.ts
vehicle.getAll: added checkDate/checkTime inputs and conflict filtering vs. existing rents. vehicleRent.edit: new mutation validating ownership, timing, overlaps, and updating fields.
Server-only Annotations & Import Order
src/server/api/root.ts, src/server/api/routers/user.ts, src/server/api/trpc.ts, src/trpc/server.ts
Added import "server-only" to server modules; reordered an import in trpc/server.ts; no API changes.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor U as User
participant C as Cars Page (Client)
participant API as TRPC vehicle.getAll
participant DB as DB (vehicles+rents)
U->>C: Enter date + time, Apply Filter
C->>API: getAll({ limit, availble, checkDate, checkTime })
API->>DB: Query vehicles + rents
DB-->>API: Vehicles + reservations
API->>API: Filter by overlaps at checkDate/time
API-->>C: Filtered vehicles
C-->>U: Show results or empty state
Loading
sequenceDiagram
autonumber
actor Admin as Admin
participant V as Admin Vehicles Page
participant TR as TRPC vehicle.create/update/delete
participant DB as DB
Admin->>V: Open Create/Edit/Delete
V->>TR: create/update/delete (vehicle)
TR->>DB: Persist change
DB-->>TR: OK / Error
TR-->>V: Success/Error
V-->>Admin: Toast + Refetch list
Loading
sequenceDiagram
autonumber
actor U as User
participant P as Cars Page (Client)
participant M as Modal RentForm (editMode)
participant R as TRPC vehicleRent.edit
participant DB as DB
U->>P: Click "Editar Reserva"
P->>M: Open modal with existingRent
U->>M: Submit updates
M->>R: edit(input)
R->>DB: Validate + update + conflict check
DB-->>R: Updated rent
R-->>M: Success
M->>P: onCloseModal()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • jdalmeida

Poem

Hop-hop, new wheels in the admin lot,
Charts and ranks—look what we’ve got! 🚗📊
Filters tick and rentals mend,
Progress bars that smoothly blend. ▓▓▓░
Permissions split, the routes aligned—
A tidy warren, finely designed. 🐇✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 102-editar-carros

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58475d6 and 454ea5e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • package.json (1 hunks)
  • src/app/(authenticated)/admin/birthday/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/rooms/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/vehicles/page.tsx (1 hunks)
  • src/app/(authenticated)/cars/details/page.tsx (3 hunks)
  • src/app/(authenticated)/cars/page.tsx (5 hunks)
  • src/app/(authenticated)/forms/new/page.tsx (1 hunks)
  • src/components/admin/vehicles/user-ranking.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-form.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-metrics.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-usage-history.tsx (1 hunks)
  • src/components/rent-form.tsx (7 hunks)
  • src/components/ui/progress.tsx (1 hunks)
  • src/const/admin-routes.ts (2 hunks)
  • src/lib/access-control-server.ts (1 hunks)
  • src/lib/access-control.ts (0 hunks)
  • src/schemas/vehicle-rent.schema.ts (2 hunks)
  • src/schemas/vehicle.schema.ts (1 hunks)
  • src/server/api/root.ts (1 hunks)
  • src/server/api/routers/user.ts (1 hunks)
  • src/server/api/routers/vehicle-rent.ts (2 hunks)
  • src/server/api/routers/vehicle.ts (4 hunks)
  • src/server/api/trpc.ts (1 hunks)
  • src/trpc/server.ts (1 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Editar carros

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add edit reservas + gestao de frota - #103

Merged
rbxyz merged 1 commit into
mainfrom
102-editar-carros
Sep 18, 2025
Merged

feat: add edit reservas + gestao de frota#103
rbxyz merged 1 commit into
mainfrom
102-editar-carros

Conversation

@rbxyz

@rbxyzrbxyz commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • New Admin Vehicles section: create/edit/delete vehicles, search, and tabs for Metrics, Usage History, and User Ranking with visual stats.
    • Cars: filter available vehicles by specific date and time; improved empty states and loading skeletons.
    • Edit existing reservations in a modal with prefilled data.
    • Vehicle availability now respects chosen date/time across listings.
  • Improvements
    • Simplified filters and messaging on vehicle details.
    • More consistent access checks for admin and form creation pages.
  • Chores
    • Added UI progress dependency for visual indicators.

@rbxyzrbxyz linked an issue Sep 18, 2025 that may be closed by this pull request
@vercel

vercelBot commented Sep 18, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloBuildingBuildingPreviewCommentSep 18, 2025 8:51pm

@rbxyz
rbxyz merged commit 2ca7771 into mainSep 18, 2025
2 of 3 checks passed
@coderabbitai

coderabbitaiBot commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a vehicles admin module (UI pages and components), client-side filtering and edit flow for car reservations, new server-side access-control helpers, availability filtering in vehicle API, an edit mutation for vehicle rents, and a Progress UI primitive. Several pages switch to server-side access helpers. Adds server-only guards and updates schemas/constants.

Changes

Cohort / File(s)Summary of changes
Dependencies & UI Primitive
package.json, src/components/ui/progress.tsx
Added dependency @radix-ui/react-progress; introduced Progress component built on Radix primitives.
Access Control Split (Server vs. Pure Predicates)
src/lib/access-control-server.ts, src/lib/access-control.ts
New server-side helpers performing redirects (checkAdminAccess, checkFormAccess, checkFormCreationAccess). Converted client module to stateless permission predicates (can*, canView*, hasAdminAccess, getAccessibleForms); removed redirecting helpers.
Access Helper Import Switch (Admin/Form Pages)
src/app/(authenticated)/admin/birthday/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/(authenticated)/admin/rooms/page.tsx, src/app/(authenticated)/forms/new/page.tsx
Changed imports from @/lib/access-control to @/lib/access-control-server; usage unchanged.
Admin Vehicles Feature (UI + Navigation)
src/app/(authenticated)/admin/vehicles/page.tsx, src/components/admin/vehicles/vehicle-form.tsx, src/components/admin/vehicles/vehicle-metrics.tsx, src/components/admin/vehicles/vehicle-usage-history.tsx, src/components/admin/vehicles/user-ranking.tsx, src/const/admin-routes.ts
Added admin vehicles page with tabs (list, metrics, history, ranking). Created form for create/update, metrics dashboard, usage history, and user ranking components. Appended /admin/vehicles to admin routes.
Schemas (Vehicles & Rents)
src/schemas/vehicle.schema.ts, src/schemas/vehicle-rent.schema.ts
Vehicle schema: added Box_Filial to EnterpriseEnum; tightened plate max length to 7. New editVehicleRentSchema and EditVehicleRentInput.
Cars Pages: Client Filters & Edit Flow
src/app/(authenticated)/cars/page.tsx, src/app/(authenticated)/cars/details/page.tsx, src/components/rent-form.tsx
Migrated cars page to client component; added date/time filter UI, gated fetch via api.vehicle.getAll with checkDate/checkTime; introduced edit reservation modal and edit-capable RentForm. Simplified details page filters to explicit date/time.
Server API: Availability & Edit Rent
src/server/api/routers/vehicle.ts, src/server/api/routers/vehicle-rent.ts
vehicle.getAll: added checkDate/checkTime inputs and conflict filtering vs. existing rents. vehicleRent.edit: new mutation validating ownership, timing, overlaps, and updating fields.
Server-only Annotations & Import Order
src/server/api/root.ts, src/server/api/routers/user.ts, src/server/api/trpc.ts, src/trpc/server.ts
Added import "server-only" to server modules; reordered an import in trpc/server.ts; no API changes.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor U as User
participant C as Cars Page (Client)
participant API as TRPC vehicle.getAll
participant DB as DB (vehicles+rents)
U->>C: Enter date + time, Apply Filter
C->>API: getAll({ limit, availble, checkDate, checkTime })
API->>DB: Query vehicles + rents
DB-->>API: Vehicles + reservations
API->>API: Filter by overlaps at checkDate/time
API-->>C: Filtered vehicles
C-->>U: Show results or empty state
Loading
sequenceDiagram
autonumber
actor Admin as Admin
participant V as Admin Vehicles Page
participant TR as TRPC vehicle.create/update/delete
participant DB as DB
Admin->>V: Open Create/Edit/Delete
V->>TR: create/update/delete (vehicle)
TR->>DB: Persist change
DB-->>TR: OK / Error
TR-->>V: Success/Error
V-->>Admin: Toast + Refetch list
Loading
sequenceDiagram
autonumber
actor U as User
participant P as Cars Page (Client)
participant M as Modal RentForm (editMode)
participant R as TRPC vehicleRent.edit
participant DB as DB
U->>P: Click "Editar Reserva"
P->>M: Open modal with existingRent
U->>M: Submit updates
M->>R: edit(input)
R->>DB: Validate + update + conflict check
DB-->>R: Updated rent
R-->>M: Success
M->>P: onCloseModal()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • jdalmeida

Poem

Hop-hop, new wheels in the admin lot,
Charts and ranks—look what we’ve got! 🚗📊
Filters tick and rentals mend,
Progress bars that smoothly blend. ▓▓▓░
Permissions split, the routes aligned—
A tidy warren, finely designed. 🐇✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 102-editar-carros

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58475d6 and 454ea5e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • package.json (1 hunks)
  • src/app/(authenticated)/admin/birthday/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/rooms/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/vehicles/page.tsx (1 hunks)
  • src/app/(authenticated)/cars/details/page.tsx (3 hunks)
  • src/app/(authenticated)/cars/page.tsx (5 hunks)
  • src/app/(authenticated)/forms/new/page.tsx (1 hunks)
  • src/components/admin/vehicles/user-ranking.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-form.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-metrics.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-usage-history.tsx (1 hunks)
  • src/components/rent-form.tsx (7 hunks)
  • src/components/ui/progress.tsx (1 hunks)
  • src/const/admin-routes.ts (2 hunks)
  • src/lib/access-control-server.ts (1 hunks)
  • src/lib/access-control.ts (0 hunks)
  • src/schemas/vehicle-rent.schema.ts (2 hunks)
  • src/schemas/vehicle.schema.ts (1 hunks)
  • src/server/api/root.ts (1 hunks)
  • src/server/api/routers/user.ts (1 hunks)
  • src/server/api/routers/vehicle-rent.ts (2 hunks)
  • src/server/api/routers/vehicle.ts (4 hunks)
  • src/server/api/trpc.ts (1 hunks)
  • src/trpc/server.ts (1 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Editar carros

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: add edit reservas + gestao de frota - #103

Merged
rbxyz merged 1 commit into
mainfrom
102-editar-carros
Sep 18, 2025
Merged

feat: add edit reservas + gestao de frota#103
rbxyz merged 1 commit into
mainfrom
102-editar-carros

Conversation

@rbxyz

@rbxyzrbxyz commented Sep 18, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • New Admin Vehicles section: create/edit/delete vehicles, search, and tabs for Metrics, Usage History, and User Ranking with visual stats.
    • Cars: filter available vehicles by specific date and time; improved empty states and loading skeletons.
    • Edit existing reservations in a modal with prefilled data.
    • Vehicle availability now respects chosen date/time across listings.
  • Improvements
    • Simplified filters and messaging on vehicle details.
    • More consistent access checks for admin and form creation pages.
  • Chores
    • Added UI progress dependency for visual indicators.

@rbxyzrbxyz linked an issue Sep 18, 2025 that may be closed by this pull request
@vercel

vercelBot commented Sep 18, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloBuildingBuildingPreviewCommentSep 18, 2025 8:51pm

@rbxyz
rbxyz merged commit 2ca7771 into mainSep 18, 2025
2 of 3 checks passed
@coderabbitai

coderabbitaiBot commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a vehicles admin module (UI pages and components), client-side filtering and edit flow for car reservations, new server-side access-control helpers, availability filtering in vehicle API, an edit mutation for vehicle rents, and a Progress UI primitive. Several pages switch to server-side access helpers. Adds server-only guards and updates schemas/constants.

Changes

Cohort / File(s)Summary of changes
Dependencies & UI Primitive
package.json, src/components/ui/progress.tsx
Added dependency @radix-ui/react-progress; introduced Progress component built on Radix primitives.
Access Control Split (Server vs. Pure Predicates)
src/lib/access-control-server.ts, src/lib/access-control.ts
New server-side helpers performing redirects (checkAdminAccess, checkFormAccess, checkFormCreationAccess). Converted client module to stateless permission predicates (can*, canView*, hasAdminAccess, getAccessibleForms); removed redirecting helpers.
Access Helper Import Switch (Admin/Form Pages)
src/app/(authenticated)/admin/birthday/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/(authenticated)/admin/rooms/page.tsx, src/app/(authenticated)/forms/new/page.tsx
Changed imports from @/lib/access-control to @/lib/access-control-server; usage unchanged.
Admin Vehicles Feature (UI + Navigation)
src/app/(authenticated)/admin/vehicles/page.tsx, src/components/admin/vehicles/vehicle-form.tsx, src/components/admin/vehicles/vehicle-metrics.tsx, src/components/admin/vehicles/vehicle-usage-history.tsx, src/components/admin/vehicles/user-ranking.tsx, src/const/admin-routes.ts
Added admin vehicles page with tabs (list, metrics, history, ranking). Created form for create/update, metrics dashboard, usage history, and user ranking components. Appended /admin/vehicles to admin routes.
Schemas (Vehicles & Rents)
src/schemas/vehicle.schema.ts, src/schemas/vehicle-rent.schema.ts
Vehicle schema: added Box_Filial to EnterpriseEnum; tightened plate max length to 7. New editVehicleRentSchema and EditVehicleRentInput.
Cars Pages: Client Filters & Edit Flow
src/app/(authenticated)/cars/page.tsx, src/app/(authenticated)/cars/details/page.tsx, src/components/rent-form.tsx
Migrated cars page to client component; added date/time filter UI, gated fetch via api.vehicle.getAll with checkDate/checkTime; introduced edit reservation modal and edit-capable RentForm. Simplified details page filters to explicit date/time.
Server API: Availability & Edit Rent
src/server/api/routers/vehicle.ts, src/server/api/routers/vehicle-rent.ts
vehicle.getAll: added checkDate/checkTime inputs and conflict filtering vs. existing rents. vehicleRent.edit: new mutation validating ownership, timing, overlaps, and updating fields.
Server-only Annotations & Import Order
src/server/api/root.ts, src/server/api/routers/user.ts, src/server/api/trpc.ts, src/trpc/server.ts
Added import "server-only" to server modules; reordered an import in trpc/server.ts; no API changes.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor U as User
participant C as Cars Page (Client)
participant API as TRPC vehicle.getAll
participant DB as DB (vehicles+rents)
U->>C: Enter date + time, Apply Filter
C->>API: getAll({ limit, availble, checkDate, checkTime })
API->>DB: Query vehicles + rents
DB-->>API: Vehicles + reservations
API->>API: Filter by overlaps at checkDate/time
API-->>C: Filtered vehicles
C-->>U: Show results or empty state
Loading
sequenceDiagram
autonumber
actor Admin as Admin
participant V as Admin Vehicles Page
participant TR as TRPC vehicle.create/update/delete
participant DB as DB
Admin->>V: Open Create/Edit/Delete
V->>TR: create/update/delete (vehicle)
TR->>DB: Persist change
DB-->>TR: OK / Error
TR-->>V: Success/Error
V-->>Admin: Toast + Refetch list
Loading
sequenceDiagram
autonumber
actor U as User
participant P as Cars Page (Client)
participant M as Modal RentForm (editMode)
participant R as TRPC vehicleRent.edit
participant DB as DB
U->>P: Click "Editar Reserva"
P->>M: Open modal with existingRent
U->>M: Submit updates
M->>R: edit(input)
R->>DB: Validate + update + conflict check
DB-->>R: Updated rent
R-->>M: Success
M->>P: onCloseModal()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • jdalmeida

Poem

Hop-hop, new wheels in the admin lot,
Charts and ranks—look what we’ve got! 🚗📊
Filters tick and rentals mend,
Progress bars that smoothly blend. ▓▓▓░
Permissions split, the routes aligned—
A tidy warren, finely designed. 🐇✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 102-editar-carros

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58475d6 and 454ea5e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • package.json (1 hunks)
  • src/app/(authenticated)/admin/birthday/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/rooms/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/vehicles/page.tsx (1 hunks)
  • src/app/(authenticated)/cars/details/page.tsx (3 hunks)
  • src/app/(authenticated)/cars/page.tsx (5 hunks)
  • src/app/(authenticated)/forms/new/page.tsx (1 hunks)
  • src/components/admin/vehicles/user-ranking.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-form.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-metrics.tsx (1 hunks)
  • src/components/admin/vehicles/vehicle-usage-history.tsx (1 hunks)
  • src/components/rent-form.tsx (7 hunks)
  • src/components/ui/progress.tsx (1 hunks)
  • src/const/admin-routes.ts (2 hunks)
  • src/lib/access-control-server.ts (1 hunks)
  • src/lib/access-control.ts (0 hunks)
  • src/schemas/vehicle-rent.schema.ts (2 hunks)
  • src/schemas/vehicle.schema.ts (1 hunks)
  • src/server/api/root.ts (1 hunks)
  • src/server/api/routers/user.ts (1 hunks)
  • src/server/api/routers/vehicle-rent.ts (2 hunks)
  • src/server/api/routers/vehicle.ts (4 hunks)
  • src/server/api/trpc.ts (1 hunks)
  • src/trpc/server.ts (1 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Editar carros

1 participant

@rbxyz