Sequence Diagram (Kemal Mahmutoğulları) - bounswe/bounswe2026group4 GitHub Wiki


image

Suggested Improvements

  • Th system can only handle permanent bans which end up in deleting the account of a user. May want to change the User Class such that it will allow the admins to ban other users for a limited amount of time.
Code
@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
⚠️ **GitHub.com Fallback** ⚠️