Xgenious/ docs

User Reports & Moderation

Clients and freelancers can report issues related to orders, projects, profiles, or chat conversations. Report and share buttons appear on gig, profile, and chat pages.

Purpose

Report abuse, scams, policy violations, or disputes so admins can review and act.

Database Schema

reports table:

ColumnTypeNotes
idbigint PK—
order_idbigint, nullableFor order-related reports
project_idbigint, nullableFor project-related reports
client_idbigint—
freelancer_idbigint—
reportable_user_idbigint, nullableThe user being reported (profile/chat)
reporterstring, nullablefreelancer or client
contextstring, nullableorder, project, profile, or chat
titlestring(190)Report title
descriptionlongTextRich text (summernote)
statustinyInteger0=in review, 1=closed, 2=rejected
notetext, nullableAdmin note
created_at / updated_attimestamps—

Models

App\Models\Report:

  • Fillable: order_id, project_id, client_id, freelancer_id, reportable_user_id, reporter, context, title, description, status, note
  • Relationships: client() → User, freelancer() → User, project() → Project, reportableUser() → User

Controllers

Frontend (Client): App\Http\Controllers\Frontend\Client\ReportController

  • report_submit() — Validates and creates report with reporter => 'client'
  • all() — Lists the client's own reports

Frontend (Freelancer): App\Http\Controllers\Frontend\Freelancer\ReportController

  • report_submit() — Validates and creates report with reporter => 'freelancer'

Admin: App\Http\Controllers\Backend\UserReportController

  • all_reports() — Paginated list of all reports
  • report_update() — Sets status and note, notifies reporter

Routes

MethodURINameRole
POST/report/submitclient.report.submitClient
GET/reports/allclient.reports.allClient
POST/report/submitfreelancer.report.submitFreelancer
GET/admin/user-report/alladmin.user.report.allAdmin
POST/admin/user-report/updateadmin.user.report.updateAdmin

Admin Report Status

StatusMeaning
0In Review
1Closed
2Rejected

Report Modal Component

<x-frontend.report-modal> — Reusable dialog with title/description fields, AJAX POST.

Props: uniqueId, reportType (order/project/profile/chat), targetId, targetUserId


Last updated: September 2026

Still stuck?
Our support team is ready to help you get set up.
Get support