|  |  |  | @@ -4,8 +4,11 @@ from cpl_discord.service import DiscordBotServiceABC | 
		
	
		
			
				|  |  |  |  | from bot_data.abc.level_repository_abc import LevelRepositoryABC | 
		
	
		
			
				|  |  |  |  | from bot_data.abc.server_repository_abc import ServerRepositoryABC | 
		
	
		
			
				|  |  |  |  | from bot_data.abc.user_repository_abc import UserRepositoryABC | 
		
	
		
			
				|  |  |  |  | from bot_data.abc.user_warnings_repository_abc import UserWarningsRepositoryABC | 
		
	
		
			
				|  |  |  |  | from bot_data.model.user import User | 
		
	
		
			
				|  |  |  |  | from bot_data.model.user_role_enum import UserRoleEnum | 
		
	
		
			
				|  |  |  |  | from bot_graphql.abc.query_abc import QueryABC | 
		
	
		
			
				|  |  |  |  | from modules.base.service.user_warnings_service import UserWarningsService | 
		
	
		
			
				|  |  |  |  | from modules.level.service.level_service import LevelService | 
		
	
		
			
				|  |  |  |  | from modules.permission.service.permission_service import PermissionService | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -20,6 +23,8 @@ class UserMutation(QueryABC): | 
		
	
		
			
				|  |  |  |  |         permissions: PermissionService, | 
		
	
		
			
				|  |  |  |  |         levels: LevelRepositoryABC, | 
		
	
		
			
				|  |  |  |  |         level_service: LevelService, | 
		
	
		
			
				|  |  |  |  |         user_warnings: UserWarningsRepositoryABC, | 
		
	
		
			
				|  |  |  |  |         user_warning_service: UserWarningsService, | 
		
	
		
			
				|  |  |  |  |     ): | 
		
	
		
			
				|  |  |  |  |         QueryABC.__init__(self, "UserMutation") | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -30,6 +35,8 @@ class UserMutation(QueryABC): | 
		
	
		
			
				|  |  |  |  |         self._permissions = permissions | 
		
	
		
			
				|  |  |  |  |         self._levels = levels | 
		
	
		
			
				|  |  |  |  |         self._level_service = level_service | 
		
	
		
			
				|  |  |  |  |         self._user_warnings = user_warnings | 
		
	
		
			
				|  |  |  |  |         self._user_warning_service = user_warning_service | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         self.set_field("updateUser", self.resolve_update_user) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -45,9 +52,28 @@ class UserMutation(QueryABC): | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         user.xp = new_xp if new_xp is not None else input["xp"] if "xp" in input else user.xp | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         if "userWarnings" in input: | 
		
	
		
			
				|  |  |  |  |             self._update_user_warning(user, input["userWarnings"]) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         self._users.update_user(user) | 
		
	
		
			
				|  |  |  |  |         self._db.save_changes() | 
		
	
		
			
				|  |  |  |  |         self._bot.loop.create_task(self._level_service.set_level(user)) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         user = self._users.get_user_by_id(input["id"]) | 
		
	
		
			
				|  |  |  |  |         return user | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     def _update_user_warning(self, user: User, new_warnings: dict): | 
		
	
		
			
				|  |  |  |  |         old_warnings = self._user_warnings.get_user_warnings_by_user_id(user.id) | 
		
	
		
			
				|  |  |  |  |         for warning in old_warnings: | 
		
	
		
			
				|  |  |  |  |             if warning.id in [int(x["id"]) if "id" in x else None for x in new_warnings]: | 
		
	
		
			
				|  |  |  |  |                 continue | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |             self._user_warning_service.remove_warnings(warning.id) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         for warning in new_warnings: | 
		
	
		
			
				|  |  |  |  |             if "id" in warning and int(warning["id"]) in old_warnings.select(lambda x: x.id): | 
		
	
		
			
				|  |  |  |  |                 continue | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |             member = self._bot.get_guild(user.server.discord_id).get_member(user.discord_id) | 
		
	
		
			
				|  |  |  |  |             author = self._users.get_user_by_id(int(warning["author"])) | 
		
	
		
			
				|  |  |  |  |             self._user_warning_service.add_warnings(member, warning["description"], author.discord_id) | 
		
	
	
		
			
				
					
					| 
							
							
							
						 |  |  |   |