/// <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(); }
/// <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(); }
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(); }