@startuml
skinparam maxMessageSize 150
title Sequence Diagram: Review Report, Remove Comment & Ban User
actor Admin as adminActor
participant ":Admin" as adminClass
participant "r:Report" as reportClass
participant "target:Comment" as commentClass
participant "target:User" as userClass
participant "n:Notification" as notificationClass
group Moderation Flow: Review & Resolve Report
' 1. Admin reviews the pending report
adminActor -> adminClass : reviewReport(reportId)
activate adminClass
adminClass -> reportClass : <<fetch report details>>
activate reportClass
reportClass --> adminClass : report data
deactivate reportClass
adminClass --> adminActor : display report
deactivate adminClass
' 2. Admin decides on an outcome and resolves it
adminActor -> adminClass : resolveReport(reportId, outcome)
activate adminClass
adminClass -> reportClass : resolve(outcome)
activate reportClass
' Updates status to RESOLVED based on the ReportStatus enum
reportClass --> adminClass : void
deactivate reportClass
' 3. Execute extensions based on the resolution outcome
alt outcome requires removing content
adminClass -> adminClass : removeContent(contentId, reason)
activate adminClass
adminClass -> commentClass : delete()
activate commentClass
commentClass --> adminClass : void
deactivate commentClass
' System generates a notification for the moderation action
adminClass -> notificationClass ** : <<create>> Notification(reason, MODERATION_ACTION)
adminClass -> userClass : receives(n: Notification)
activate userClass
userClass --> adminClass : void
deactivate userClass
deactivate adminClass
else outcome requires banning user
adminClass -> adminClass : banUser(userId)
activate adminClass
' Logic to disable or delete the user account
adminClass -> userClass : deleteAccount() / <<update ban status>>
activate userClass
userClass --> adminClass : void
deactivate userClass
deactivate adminClass
end
adminClass --> adminActor : resolution success
deactivate adminClass
end
@enduml