public async Task <GetMtaLogsResponse> Handle(GetMtaLogsRequest request, CancellationToken cancellationToken) { if (request.Actions.All(l => l == LogAction.PhoneSms) && request.SourceAffectedLogType != SourceAffectedLogType.PhoneNumber) { throw new NoPermissionsException(ErrorMessages.NotAllowedMessage); } foreach (var logAction in request.Actions) { if (!await LogActionPermissionSmartEnum.FromValue((int)logAction) .IsPermitted(rolesService, httpContextReader.CurrentUserId)) { throw new NoPermissionsException(ErrorMessages.NotAllowedMessage); } } IEnumerable <SourceAffectedModel> sourceAffectedModels = request.SourceAffectedLogType switch { SourceAffectedLogType.Account => (await userService.GetUsersByUsername(request.SourceAffected)) .Select(u => new SourceAffectedModel(u.Id, u.Username, SourceAffectedLogType.Account)), SourceAffectedLogType.Character => (await characterService.GetCharactersByCharactername( request.SourceAffected)) .Select(c => new SourceAffectedModel(c.Id, c.Name, SourceAffectedLogType.Character)), _ => new List <SourceAffectedModel>() }; var mtaLogs = await logReader.GetMtaLogsFromDatabase(request, sourceAffectedModels); return(new GetMtaLogsResponse { MtaLogs = mtaLogs }); } }