public static IEnumerable<BanDiff> DifferentiateBans(Ban[] oldbans, Ban[] newbans) { var CheckedIDs = new List<string>(); foreach (var ban in oldbans) { CheckedIDs.Add(ban.id); var counterpart = newbans.FirstOrDefault(nban => nban.id == ban.id); if (counterpart == null) { yield return new BanDiff { id = ban.id, cloud = ban.jurisdiction_id, isgone = true }; continue; } var bandiff = new BanDiff { id = ban.id, cloud = ban.jurisdiction_id }; var haschange = false; if (ban.due != counterpart.due) { bandiff.due = counterpart.due; haschange = true; } if (ban.reason != counterpart.reason) { bandiff.reason = counterpart.reason; haschange = true; } if (ban.is_active != counterpart.is_active) { bandiff.active = counterpart.is_active; haschange = true; } if (ban.revoke != counterpart.revoke) { bandiff.revoked = counterpart.revoke; haschange = true; } if (haschange) yield return bandiff; } foreach (var ban in newbans.Where(nban => !CheckedIDs.Contains(nban.id))) { yield return new BanDiff { id = ban.id, cloud = ban.jurisdiction_id, isnew = true, active = ban.is_active, revoked = ban.revoke, reason = ban.reason, due = ban.due, }; } }
public LoggedInUser() { bans = new Ban[0]; }