diff --git a/Models/UserComparisonResult.cs b/Models/UserComparisonResult.cs new file mode 100644 index 0000000..710b3ac --- /dev/null +++ b/Models/UserComparisonResult.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; + +namespace Disco.Plugins.ADCompare.Models +{ + public class UserComparisonResult + { + public string UserId { get; set; } + public string DisplayName { get; set; } + public bool UserFoundInAD { get; set; } + public bool ADAccountDisabled { get; set; } + public List Mismatches { get; set; } = new List(); + + public bool HasMismatches => Mismatches.Count > 0; + } + + public class FieldMismatch + { + public string FieldName { get; set; } + public string DiscoValue { get; set; } + public string ADValue { get; set; } + + public FieldMismatch(string fieldName, string discoValue, string adValue) + { + FieldName = fieldName; + DiscoValue = discoValue; + ADValue = adValue; + } + } + + public class ComparisonSummary + { + public int TotalDiscoUsers { get; set; } + public int UsersCompared { get; set; } + public int UsersNotFoundInAD { get; set; } + public int UsersWithMismatches { get; set; } + public int UsersInSync { get; set; } + public int ADAccountsDisabled { get; set; } + public List Results { get; set; } = new List(); + + /// + /// Filter to only show results with issues (mismatches, not found, or disabled) + /// + public List IssuesOnly + { + get + { + return Results.FindAll(r => r.HasMismatches || !r.UserFoundInAD || r.ADAccountDisabled); + } + } + } +}