SequenceDiagramsDraft - bounswe/bounswe2025group5 GitHub Wiki
sequenceDiagram
actor Registered User
participant Profile
participant Database
Registered User->>Profile: setPhoto(photo)
activate Profile
Profile->>Database: update data
activate Database
Database-->>Profile: response
deactivate Database
alt Response: response = True
Profile-->>Registered User: Your photo is changed !!
else Response : response = False
Profile-->>Registered User: Error: Photo does not meet requirements
end
deactivate Profile
@startuml
actor User
participant "User Class" as UserClass
participant "Database" as Database
User -> UserClass: Register (email, username, password)
activate UserClass
UserClass-> UserClass: response= appropriatePassword(password)
alt response: false
UserClass--> User: Error: Password does not meet requirements
deactivate UserClass
else response: true
UserClass-> Database: addUser(email, username, password)
activate Database
Database --> UserClass: databaseResponse
deactivate Database
alt databaseResponse: Success
UserClass--> User: Registration Successful
else databaseResponse: Failure
UserClass--> User: Error: Registration Failed
end
deactivate UserClass
end
@enduml
sequenceDiagram
actor Moderator
participant ModeratorClass as Moderator Class
participant Database
Moderator->>ModeratorClass: approveRequestedChallenge(challengeId)
activate ModeratorClass
ModeratorClass->>Database: activate(challengeId)
activate Database
Database-->>ModeratorClass: status
deactivate Database
alt status = 2
ModeratorClass-->>Moderator: Already active challenge
else status = 0
ModeratorClass-->>Moderator: No requested challenge
else status = 1
ModeratorClass-->>Moderator: Activated
end
deactivate ModeratorClass
sequenceDiagram
participant User
participant App
participant Challenge
participant Database
User ->> App: Request to Join Challenge (challengeId)
App ->> Database: Check if Challenge Exists (challengeId)
Database -->> App: Challenge Exists? (Yes/No)
alt Challenge Not Found
App -->> User: Error: Challenge Not Found
else Challenge Exists
App ->> Challenge: addParticipant(userId)
Challenge ->> Database: Store Participant Entry
Database -->> Challenge: Confirmation
Challenge -->> App: Success
App -->> User: Successfully Joined Challenge
end
@startuml
actor "Registered User" as RU
participant "Forum Feed" as FF
participant "Post" as P
database "Database" as DB
RU -> FF: createPost(content, attachments)
activate FF
FF -> P: newPost(content, attachments, timestamp)
activate P
note right of P: Creates a new Post instance with provided data
P -> DB: savePost(post)
activate DB
DB --> P: confirmation (postId)
deactivate DB
P --> FF: return Post instance
deactivate P
FF --> RU: return true (post created)
deactivate FF
@enduml
sequenceDiagram
actor U as User
participant RU as RegisteredUser
participant WG as WasteGoal
U ->> RU: viewGoals(userId)
activate RU
RU -->> U: return List<WasteGoal>
deactivate RU
U ->> RU: createWasteGoal(name, duration, type, amount)
activate RU
RU ->> WG: new WasteGoal(...)
activate WG
WG -->> RU: return instance
deactivate WG
RU -->> U: return "Goal created successfully"
deactivate RU
sequenceDiagram
actor Registered User
participant ForumFeed as ForumFeed
participant Wikidata
Registered User->>ForumFeed: search(prompt)
activate ForumFeed
ForumFeed->>Wikidata: semanticSearch(prompt)
activate Wikidata
Wikidata-->>ForumFeed: response
deactivate Wikidata
alt response=no result
ForumFeed-->>Registered User: "No result found"
else response=result
ForumFeed-->>Registered User: results
end
deactivate ForumFeed
@startuml
actor "Registered User" as RU
participant "Profile" as Profile
participant "Database" as Database
RU -> Profile: selectBadges(badges)
activate Profile
Profile -> Database: saveBadges(badges)
deactivate Profile
activate Database
Database --> Profile: databaseResponse
deactivate Database
alt databaseResponse: Success
Profile -> Profile: updateDispBadges(badges)
Profile --> RU: msg: New badges selected for display
else databaseResponse: Failure
Profile --> RU: msg: Error
end
@enduml
@startuml
actor "Registered User" as RU
participant "RegisteredUser" as CC
participant "Challenge" as LC
participant "Database" as Database
note right of CC: Views challenges
RU -> CC: viewChallenges()
activate CC
CC -> Database: getChallenges()
activate Database
Database --> CC: databaseResponse
deactivate Database
alt databaseResponse: Failure
CC -> RU: error("Try again later.")
else databaseResponse: Success
CC -> RU: display(challenges)
deactivate CC
note right of CC: Selects a challenge among displayed challenges
RU -> CC: selectChallenge(challengeID)
activate CC
CC -> Database: getChallenge(challengeID)
activate Database
Database --> CC: databaseResponse
deactivate Database
alt databaseResponse: Failure
CC -> RU: error("Try again later.")
else databaseResponse: Success
CC -> RU: display(challenge)
deactivate CC
note right of CC: Views the leaderboard of the selected challenge
RU -> LC: viewLeaderboard(leaderboardID)
activate LC
LC -> Database: getLeaderboard(leaderboardID)
activate Database
Database --> LC: databaseResponse
deactivate Database
alt databaseResponse: Failure
LC -> RU: error("Try again later.")
else databaseResponse: Success
LC -> RU: display(leaderboard)
deactivate LC
end
end
end
@enduml
@startuml
actor RegisteredUser
participant "WasteLogManager" as WasteLogManager
participant "Database" as Database
RegisteredUser -> WasteLogManager: LogWaste (wasteAmount, category, unit)
activate WasteLogManager
WasteLogManager -> WasteLogManager: validateWasteEntry(wasteAmount, category, unit)
alt invalid entry
WasteLogManager --> RegisteredUser: Error: Invalid Waste Data
deactivate WasteLogManager
else valid entry
WasteLogManager -> Database: storeWasteLog(wasteAmount, category, unit)
activate Database
Database --> WasteLogManager: storageResponse
deactivate Database
alt storageResponse: Success
WasteLogManager --> RegisteredUser: Waste Log Successful
else storageResponse: Failure
WasteLogManager --> RegisteredUser: Error: Logging Failed
end
deactivate WasteLogManager
end
@enduml