Spaces:
Sleeping
Sleeping
| const mongoose = require('mongoose'); | |
| const reportSchema = new mongoose.Schema( | |
| { | |
| reportedBy: { | |
| type: mongoose.Schema.Types.ObjectId, | |
| ref: 'User', | |
| required: true, | |
| }, | |
| reportedUser: { | |
| type: mongoose.Schema.Types.ObjectId, | |
| ref: 'User', | |
| required: true, | |
| }, | |
| category: { | |
| type: String, | |
| enum: ['quality_issues', 'miscommunication', 'non_professional', 'payment_issue', 'harassment', 'scam', 'other'], | |
| required: true, | |
| }, | |
| title: { | |
| type: String, | |
| required: true, | |
| }, | |
| description: { | |
| type: String, | |
| required: true, | |
| }, | |
| bookingId: { | |
| type: mongoose.Schema.Types.ObjectId, | |
| ref: 'Booking', | |
| default: null, | |
| }, | |
| evidence: [ | |
| { | |
| type: String, // URL to screenshot/file | |
| }, | |
| ], | |
| status: { | |
| type: String, | |
| enum: ['pending', 'under_review', 'resolved', 'dismissed'], | |
| default: 'pending', | |
| }, | |
| severity: { | |
| type: String, | |
| enum: ['low', 'medium', 'high', 'critical'], | |
| default: 'medium', | |
| }, | |
| adminNotes: { | |
| type: String, | |
| default: '', | |
| }, | |
| resolution: { | |
| type: String, | |
| default: '', | |
| }, | |
| photographer_response: { | |
| type: String, | |
| default: '', | |
| maxlength: 1000, | |
| }, | |
| respondedAt: { | |
| type: Date, | |
| default: null, | |
| }, | |
| resolvedAt: { | |
| type: Date, | |
| default: null, | |
| }, | |
| submittedAt: { | |
| type: Date, | |
| default: Date.now, | |
| }, | |
| }, | |
| { timestamps: true } | |
| ); | |
| module.exports = mongoose.model('Report', reportSchema); | |