示例#1
0
        /// <summary>
        /// Logs when a user is deleted.
        /// </summary>
        /// <param name="deletingUser">The deleting user.</param>
        /// <param name="deletedUser">The deleted user.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">
        /// </exception>
        /// <exception cref="ArgumentException">
        /// parameter cannot be empty
        /// or
        /// parameter cannot be empty
        /// </exception>
        public async Task LogUserDeleted(string deletingUser, string deletedUser)
        {
            if (deletingUser == null)
            {
                throw new ArgumentNullException(nameof(deletingUser));
            }
            if (deletedUser == null)
            {
                throw new ArgumentNullException(nameof(deletedUser));
            }

            if (string.IsNullOrWhiteSpace(deletingUser))
            {
                throw new ArgumentException("parameter cannot be empty", nameof(deletingUser));
            }

            if (string.IsNullOrWhiteSpace(deletedUser))
            {
                throw new ArgumentException("parameter cannot be empty", nameof(deletedUser));
            }

            var telemetry = new EventTelemetry(nameof(LogEventType.UserDeleted))
            {
                Timestamp = DateTimeOffset.Now
            };

            telemetry.Properties["SourceUser"] = deletingUser;
            telemetry.Properties["Username"]   = deletedUser;

            _client.TrackEvent(telemetry);

            var logEntry = new LogEntry
            {
                Date       = DateTimeOffset.Now,
                SourceUser = deletingUser,
                Type       = LogEventType.UserDeleted
            };
            var logProperty = new LogEntryProperty
            {
                PropertyType  = LogPropertyType.Username,
                PropertyValue = deletedUser
            };

            logEntry.Properties.Add(logProperty);

            _dataContext.LogEntries.Add(logEntry);
            await _dataContext.SaveChangesAsync();
        }
示例#2
0
        /// <summary>
        /// Logs when an IMEI is deleted from the system.
        /// </summary>
        /// <param name="registeringUser">The registering user.</param>
        /// <param name="imei">The IMEI that was deleted.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">
        /// Raised if the <paramref name="registeringUser"/> or <paramref name="imei"/> are null.
        /// </exception>
        /// <exception cref="System.ArgumentException">
        /// Raised if the <paramref name="registeringUser"/> or <paramref name="imei"/> are empty or whitespace.
        /// </exception>
        public async Task LogIMEIDeleted(string registeringUser, string imei)
        {
            if (registeringUser == null)
            {
                throw new ArgumentNullException(nameof(registeringUser));
            }
            if (string.IsNullOrWhiteSpace(registeringUser))
            {
                throw new ArgumentException("{0} cannot be empty", nameof(registeringUser));
            }
            if (imei == null)
            {
                throw new ArgumentNullException(nameof(imei));
            }
            if (string.IsNullOrWhiteSpace(imei))
            {
                throw new ArgumentException("{0} cannot be empty", nameof(imei));
            }

            var telemetry = new EventTelemetry(nameof(LogEventType.IMEIDeleted))
            {
                Timestamp = DateTimeOffset.Now
            };

            telemetry.Properties["SourceUser"] = registeringUser;
            telemetry.Properties["IMEI"]       = imei;

            _client.TrackEvent(telemetry);

            var logEntry = new LogEntry
            {
                Date       = DateTimeOffset.Now,
                SourceUser = registeringUser,
                Type       = LogEventType.IMEIDeleted
            };
            var logProperty = new LogEntryProperty
            {
                PropertyType  = LogPropertyType.IMEI,
                PropertyValue = imei
            };

            logEntry.Properties.Add(logProperty);

            _dataContext.LogEntries.Add(logEntry);
            await _dataContext.SaveChangesAsync();
        }
示例#3
0
        public async Task LogMapInUse(string user)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
            if (string.IsNullOrWhiteSpace(user))
            {
                throw new ArgumentException("{0} cannot be empty", nameof(user));
            }

            var telemetry = new EventTelemetry(nameof(LogEventType.MapInUse))
            {
                Timestamp = DateTimeOffset.Now
            };

            telemetry.Properties["SourceUser"] = user;

            _client.TrackEvent(telemetry);

            var logEntry = await _dataContext.LogEntries.OrderByDescending(l => l.Date).FirstOrDefaultAsync(l => l.SourceUser == user && l.Type == LogEventType.MapInUse);

            if (logEntry != null)
            {
                var prop = logEntry.Properties.FirstOrDefault(lp => lp.PropertyType == LogPropertyType.StartDate);

                if (prop == null)
                {
                    logEntry = null;
                }
                else
                {
                    var date = DateTimeOffset.ParseExact(prop.PropertyValue, "O", CultureInfo.InvariantCulture);

                    if (date > DateTimeOffset.Now.AddMinutes(-MapUseTimeout))
                    {
                        logEntry.Date = DateTimeOffset.Now;
                    }
                    else
                    {
                        logEntry = null;
                    }
                }
            }

            if (logEntry == null)
            {
                logEntry = new LogEntry
                {
                    Date       = DateTimeOffset.Now,
                    SourceUser = user,
                    Type       = LogEventType.MapInUse
                };
                var logProperty = new LogEntryProperty
                {
                    PropertyType  = LogPropertyType.StartDate,
                    PropertyValue = DateTimeOffset.Now.ToString("O")
                };
                logEntry.Properties.Add(logProperty);

                _dataContext.LogEntries.Add(logEntry);
            }

            await _dataContext.SaveChangesAsync();
        }