public async Task AddLogBuffer(IEnumerable <LogEntry> logBuffer) { using TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); using var connection = _connectionFactory.CreateConnection(); foreach (var logEntry in logBuffer) { string query = @"INSERT INTO [app].[Logs] ([Severity] ,[Message] ,[Logger] ,[ExceptionType] ,[Timestamp] ,[ExceptionMessage] ,[SourceName] ,[UserLogin]) VALUES (@Severity ,@Message ,@Logger ,@ExceptionType ,@Timestamp ,@ExceptionMessage ,@SourceName ,@UserLogin)"; await connection.ExecuteAsync(query, new { Severity = logEntry.Severity.ToUpper(), logEntry.Message, Logger = !string.IsNullOrWhiteSpace(logEntry.Logger) ? logEntry.Logger : "Angular.Gui", logEntry.ExceptionMessage, logEntry.Timestamp, logEntry.ExceptionType, SourceName = "Angular.Gui", userLogin = _userContext.CurrentUser.Login }); } scope.Complete(); }
public async Task <IEnumerable <User> > GetUsers(IEnumerable <long> departmentIds, bool?active = false) { using var connection = _connectionFactory.CreateConnection(); string departments = string.Empty; var query = string.Empty; if (departmentIds != null) { foreach (var d in departmentIds) { departments += $"{d},"; } } query = active.HasValue && active.Value ? @"SELECT * FROM app.Users AS u WHERE IsActive = 1 AND GETDATE() Between u.ValidFrom AND u.ValidTo " : @"SELECT * FROM [dbo].[workflowuser] AS u WHERE userIsBlocked = 0 AND d.departActive = 1 AND ad.IsActive = 1 AND u.userIsFromAd = 1"; if (departmentIds != null) { query += " AND d.departId IN (" + departments.TrimEnd(',') + ")"; } var result = await connection.QueryAsync <User, Department, User>(query, (user, department) => { user.Department = department; return(user); }, new { IsActive = active }, splitOn : "Name").ConfigureAwait(false); return(result); }
public async Task UpdateUserSession() { using var connection = _connectionFactory.CreateConnection(); string query = @"MERGE[app].[UsersSession] AS target USING(SELECT @SessionId, @SessionKey, @Login, @UserId) AS source(SessionId, SessionKey, Login, UserId) ON target.UserId = source.UserId WHEN MATCHED THEN UPDATE SET SessionId = @SessionId, SessionKey = @SessionKey, Login = @Login, UserId = @UserId, TimeStamp = SYSDATETIMEOFFSET() WHEN NOT MATCHED THEN INSERT(SessionKey, SessionId, Login, UserId, TimeStamp) VALUES(@SessionKey, @SessionId, @Login, @UserId, SYSDATETIMEOFFSET());"; await connection.ExecuteAsync(query, new { _userContext.SessionId, _userContext.SessionKey, _userContext.CurrentUser.Login, UserId = _userContext.CurrentUser.Id }).ConfigureAwait(false); _logger.Info($"Update user session. SessionId: '{_userContext.SessionId}'. SessionKey: '{_userContext.SessionKey}'"); }