Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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}'");
        }