1+ using Refresh . Database . Models . Users ;
2+ using Refresh . Database . Models . Moderation ;
3+ using Refresh . Database . Models . Levels ;
4+ using Refresh . Database . Models . Levels . Scores ;
5+ using Refresh . Database . Models . Photos ;
6+ using Refresh . Database . Models . Comments ;
7+ using Refresh . Database . Models . Playlists ;
8+ using Refresh . Database . Models . Assets ;
9+ using Refresh . Database . Models . Levels . Challenges ;
10+
11+ namespace Refresh . Database ;
12+
13+ public partial class GameDatabaseContext // Moderation
14+ {
15+ private IQueryable < ModerationAction > ModerationActionsIncluded => this . ModerationActions
16+ . Include ( s => s . Actor )
17+ . Include ( s => s . InvolvedUser ) ;
18+
19+ #region Retrieval
20+
21+ public DatabaseList < ModerationAction > GetModerationActions ( int skip , int count )
22+ {
23+ return new ( this . ModerationActionsIncluded . OrderByDescending ( a => a . Timestamp ) , skip , count ) ;
24+ }
25+
26+ public DatabaseList < ModerationAction > GetModerationActionsByActor ( GameUser actor , int skip , int count )
27+ {
28+ return new ( this . ModerationActionsIncluded
29+ . Where ( a => a . ActorId == actor . UserId )
30+ . OrderByDescending ( a => a . Timestamp ) , skip , count ) ;
31+ }
32+
33+ public DatabaseList < ModerationAction > GetModerationActionsForInvolvedUser ( GameUser involvedUser , int skip , int count )
34+ {
35+ return new ( this . ModerationActionsIncluded
36+ . Where ( a => a . InvolvedUserId == involvedUser . UserId )
37+ . OrderByDescending ( a => a . Timestamp ) , skip , count ) ;
38+ }
39+
40+ public DatabaseList < ModerationAction > GetModerationActionsForObject ( string id , ModerationObjectType objectType , int skip , int count )
41+ {
42+ return new ( this . ModerationActionsIncluded
43+ . Where ( a => a . ModeratedObjectType == objectType && a . ModeratedObjectId == id )
44+ . OrderByDescending ( a => a . Timestamp ) , skip , count ) ;
45+ }
46+
47+ #endregion
48+
49+ #region Creation
50+
51+ public ModerationAction CreateModerationAction ( GameUser user , ModerationActionType actionType , GameUser actor , string description )
52+ => this . CreateModerationActionInternal ( user . UserId . ToString ( ) , ModerationObjectType . User , actionType , actor , user , description ) ;
53+
54+ public ModerationAction CreateModerationAction ( GameLevel level , ModerationActionType actionType , GameUser actor , string description )
55+ => this . CreateModerationActionInternal ( level . LevelId . ToString ( ) , ModerationObjectType . Level , actionType , actor , level . Publisher , description ) ;
56+
57+ public ModerationAction CreateModerationAction ( GameScore score , ModerationActionType actionType , GameUser actor , string description )
58+ => this . CreateModerationActionInternal ( score . ScoreId . ToString ( ) , ModerationObjectType . Score , actionType , actor , score . Publisher , description ) ;
59+
60+ public ModerationAction CreateModerationAction ( GamePhoto photo , ModerationActionType actionType , GameUser actor , string description )
61+ => this . CreateModerationActionInternal ( photo . PhotoId . ToString ( ) , ModerationObjectType . Photo , actionType , actor , photo . Publisher , description ) ;
62+
63+ public ModerationAction CreateModerationAction ( GameReview review , ModerationActionType actionType , GameUser actor , string description )
64+ => this . CreateModerationActionInternal ( review . ReviewId . ToString ( ) , ModerationObjectType . Review , actionType , actor , review . Publisher , description ) ;
65+
66+ public ModerationAction CreateModerationAction ( GameLevelComment comment , ModerationActionType actionType , GameUser actor , string description )
67+ => this . CreateModerationActionInternal ( comment . SequentialId . ToString ( ) , ModerationObjectType . LevelComment , actionType , actor , comment . Author , description ) ;
68+
69+ public ModerationAction CreateModerationAction ( GameProfileComment comment , ModerationActionType actionType , GameUser actor , string description )
70+ => this . CreateModerationActionInternal ( comment . SequentialId . ToString ( ) , ModerationObjectType . UserComment , actionType , actor , comment . Author , description ) ;
71+
72+ public ModerationAction CreateModerationAction ( GamePlaylist playlist , ModerationActionType actionType , GameUser actor , string description )
73+ => this . CreateModerationActionInternal ( playlist . PlaylistId . ToString ( ) , ModerationObjectType . Playlist , actionType , actor , playlist . Publisher , description ) ;
74+
75+ public ModerationAction CreateModerationAction ( GameAsset asset , ModerationActionType actionType , GameUser actor , string description )
76+ => this . CreateModerationActionInternal ( asset . AssetHash , ModerationObjectType . Asset , actionType , actor , asset . OriginalUploader , description ) ;
77+
78+ public ModerationAction CreateModerationAction ( GameChallenge challenge , ModerationActionType actionType , GameUser actor , string description )
79+ => this . CreateModerationActionInternal ( challenge . ChallengeId . ToString ( ) , ModerationObjectType . Challenge , actionType , actor , challenge . Publisher , description ) ;
80+
81+ public ModerationAction CreateModerationAction ( GameChallengeScore score , ModerationActionType actionType , GameUser actor , string description )
82+ => this . CreateModerationActionInternal ( score . ScoreId . ToString ( ) , ModerationObjectType . Score , actionType , actor , score . Publisher , description ) ;
83+
84+ private ModerationAction CreateModerationActionInternal ( string id , ModerationObjectType objectType , ModerationActionType actionType , GameUser actor , GameUser ? involvedUser , string description )
85+ {
86+ ModerationAction moderationAction = new ( )
87+ {
88+ ModeratedObjectId = id ,
89+ ModeratedObjectType = objectType ,
90+ ActionType = actionType ,
91+ Actor = actor ,
92+ InvolvedUser = involvedUser ,
93+ Description = description ,
94+ Timestamp = this . _time . Now ,
95+ } ;
96+
97+ this . ModerationActions . Add ( moderationAction ) ;
98+ this . SaveChanges ( ) ;
99+
100+ return moderationAction ;
101+ }
102+
103+ #endregion
104+ }
0 commit comments