Downgrade to C# 5 - remove interpolation, null-conditional, expression-bodied members
This commit is contained in:
@@ -12,9 +12,9 @@ namespace Disco.Plugins.ADCompare.WebHandler
|
|||||||
{
|
{
|
||||||
public override ActionResult ExecuteAction(string ActionName)
|
public override ActionResult ExecuteAction(string ActionName)
|
||||||
{
|
{
|
||||||
switch (ActionName?.ToLower())
|
var action = ActionName != null ? ActionName.ToLower() : "";
|
||||||
|
switch (action)
|
||||||
{
|
{
|
||||||
case null:
|
|
||||||
case "":
|
case "":
|
||||||
case "index":
|
case "index":
|
||||||
return Index();
|
return Index();
|
||||||
@@ -58,28 +58,39 @@ namespace Disco.Plugins.ADCompare.WebHandler
|
|||||||
foreach (var r in summary.Results.Where(r => !r.IsMatch))
|
foreach (var r in summary.Results.Where(r => !r.IsMatch))
|
||||||
{
|
{
|
||||||
sb.AppendLine(string.Join(",",
|
sb.AppendLine(string.Join(",",
|
||||||
Csv(r.SerialNumber), Csv(r.ComputerName),
|
CsvEscape(r.SerialNumber), CsvEscape(r.ComputerName),
|
||||||
Csv(r.DiscoAssignedUserId), Csv(r.DiscoAssignedUserDisplayName),
|
CsvEscape(r.DiscoAssignedUserId), CsvEscape(r.DiscoAssignedUserDisplayName),
|
||||||
Csv(r.ADManagedByUserId), Csv(r.ADManagedByDisplayName),
|
CsvEscape(r.ADManagedByUserId), CsvEscape(r.ADManagedByDisplayName),
|
||||||
r.IsMatch.ToString(), Csv(r.MismatchReason)));
|
r.IsMatch.ToString(), CsvEscape(r.MismatchReason)));
|
||||||
}
|
}
|
||||||
|
var fileName = "AD_ManagedBy_Compare_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".csv";
|
||||||
HostController.Response.Headers.Add("Content-Disposition",
|
HostController.Response.Headers.Add("Content-Disposition",
|
||||||
$"attachment; filename=\"AD_ManagedBy_Compare_{DateTime.Now:yyyyMMdd_HHmmss}.csv\"");
|
"attachment; filename=\"" + fileName + "\"");
|
||||||
return new ContentResult { Content = sb.ToString(), ContentType = "text/csv", ContentEncoding = Encoding.UTF8 };
|
return new ContentResult
|
||||||
|
{
|
||||||
|
Content = sb.ToString(),
|
||||||
|
ContentType = "text/csv",
|
||||||
|
ContentEncoding = Encoding.UTF8
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private string Csv(string v) => $"\"{(v ?? "").Replace("\"", "\"\"")}\"";
|
private string CsvEscape(string v)
|
||||||
|
{
|
||||||
|
if (v == null) v = "";
|
||||||
|
return "\"" + v.Replace("\"", "\"\"") + "\"";
|
||||||
|
}
|
||||||
|
|
||||||
private string BuildDashboardHtml()
|
private string BuildDashboardHtml()
|
||||||
{
|
{
|
||||||
var pluginUrl = Url.Action(MVC.API.Disco.Plugin.PluginWebAction(Manifest.Id, null));
|
var pluginUrl = Url.Action(MVC.API.Disco.Plugin.PluginWebAction(Manifest.Id, null));
|
||||||
return $@"
|
|
||||||
|
return @"
|
||||||
<div id='adcompare'>
|
<div id='adcompare'>
|
||||||
<h2><i class='fa fa-exchange'></i> AD Compare — Device Managed By</h2>
|
<h2><i class='fa fa-exchange'></i> AD Compare — Device Managed By</h2>
|
||||||
<p>Compares the AD computer <strong>Managed By</strong> field against the Disco <strong>Assigned User</strong>.</p>
|
<p>Compares the AD computer <strong>Managed By</strong> field against the Disco <strong>Assigned User</strong>.</p>
|
||||||
<div style='margin:15px 0;'>
|
<div style='margin:15px 0;'>
|
||||||
<button id='btnRun' class='btn btn-primary' onclick='runCompare()'><i class='fa fa-refresh'></i> Run Comparison</button>
|
<button id='btnRun' class='btn btn-primary' onclick='runCompare()'><i class='fa fa-refresh'></i> Run Comparison</button>
|
||||||
<button id='btnExport' class='btn btn-default' onclick='location.href=""{pluginUrl}/Export""' style='margin-left:10px;' disabled><i class='fa fa-download'></i> Export Mismatches CSV</button>
|
<button id='btnExport' class='btn btn-default' onclick='location.href=""" + pluginUrl + @"/Export""' style='margin-left:10px;' disabled><i class='fa fa-download'></i> Export Mismatches CSV</button>
|
||||||
<span id='loading' style='display:none;margin-left:15px;'><i class='fa fa-spinner fa-spin'></i> Querying AD for all devices…</span>
|
<span id='loading' style='display:none;margin-left:15px;'><i class='fa fa-spinner fa-spin'></i> Querying AD for all devices…</span>
|
||||||
</div>
|
</div>
|
||||||
<div id='summary' style='display:none;margin:15px 0;padding:15px;background:#f5f5f5;border-radius:4px;'>
|
<div id='summary' style='display:none;margin:15px 0;padding:15px;background:#f5f5f5;border-radius:4px;'>
|
||||||
@@ -106,30 +117,30 @@ namespace Disco.Plugins.ADCompare.WebHandler
|
|||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var data=[];
|
var data=[];
|
||||||
function runCompare(){{
|
function runCompare(){
|
||||||
$('#loading').show();$('#btnRun').prop('disabled',true);$('#tbl').hide();
|
$('#loading').show();$('#btnRun').prop('disabled',true);$('#tbl').hide();
|
||||||
$.getJSON('{pluginUrl}/Compare',function(d){{
|
$.getJSON('" + pluginUrl + @"/Compare',function(d){
|
||||||
data=d.Results;
|
data=d.Results;
|
||||||
$('#sTotal').text(d.TotalDevices);$('#sMatch').text(d.DevicesMatched);
|
$('#sTotal').text(d.TotalDevices);$('#sMatch').text(d.DevicesMatched);
|
||||||
$('#sMismatch').text(d.DevicesMismatched);$('#sNotAD').text(d.DevicesNotInAD);
|
$('#sMismatch').text(d.DevicesMismatched);$('#sNotAD').text(d.DevicesNotInAD);
|
||||||
$('#sNoMgr').text(d.DevicesNoManagedBy);$('#sNoAssign').text(d.DevicesNoAssignment);
|
$('#sNoMgr').text(d.DevicesNoManagedBy);$('#sNoAssign').text(d.DevicesNoAssignment);
|
||||||
$('#summary').show();$('#btnExport').prop('disabled',false);
|
$('#summary').show();$('#btnExport').prop('disabled',false);
|
||||||
renderTable();$('#tbl').show();
|
renderTable();$('#tbl').show();
|
||||||
}}).fail(function(x){{alert('Error: '+x.statusText);}})
|
}).fail(function(x){alert('Error: '+x.statusText);})
|
||||||
.always(function(){{$('#loading').hide();$('#btnRun').prop('disabled',false);}});
|
.always(function(){$('#loading').hide();$('#btnRun').prop('disabled',false);});
|
||||||
}}
|
}
|
||||||
function renderTable(){{
|
function renderTable(){
|
||||||
var mo=$('#chkMismatchOnly').is(':checked'),q=$('#txtFilter').val().toLowerCase(),tb=$('#tbody');tb.empty();
|
var mo=$('#chkMismatchOnly').is(':checked'),q=$('#txtFilter').val().toLowerCase(),tb=$('#tbody');tb.empty();
|
||||||
data.forEach(function(r){{
|
data.forEach(function(r){
|
||||||
if(mo&&r.IsMatch)return;
|
if(mo&&r.IsMatch)return;
|
||||||
if(q){{var hay=(r.SerialNumber+' '+r.ComputerName+' '+r.DiscoAssignedUserId+' '+r.ADManagedByUserId+' '+(r.DiscoAssignedUserDisplayName||'')+' '+(r.ADManagedByDisplayName||'')).toLowerCase();if(hay.indexOf(q)<0)return;}}
|
if(q){var hay=(r.SerialNumber+' '+r.ComputerName+' '+r.DiscoAssignedUserId+' '+r.ADManagedByUserId+' '+(r.DiscoAssignedUserDisplayName||'')+' '+(r.ADManagedByDisplayName||'')).toLowerCase();if(hay.indexOf(q)<0)return;}
|
||||||
var icon=r.IsMatch?'<i class=""fa fa-check text-success""></i>':(!r.FoundInAD?'<i class=""fa fa-times text-danger""></i>':'<i class=""fa fa-exclamation-triangle text-warning""></i>');
|
var icon=r.IsMatch?'<i class=""fa fa-check text-success""></i>':(!r.FoundInAD?'<i class=""fa fa-times text-danger""></i>':'<i class=""fa fa-exclamation-triangle text-warning""></i>');
|
||||||
var discoUser=r.DiscoAssignedUserId?(esc(r.DiscoAssignedUserId)+(r.DiscoAssignedUserDisplayName?'<br/><small class=""text-muted"">'+esc(r.DiscoAssignedUserDisplayName)+'</small>':'')):'<em class=""text-muted"">Not assigned</em>';
|
var discoUser=r.DiscoAssignedUserId?(esc(r.DiscoAssignedUserId)+(r.DiscoAssignedUserDisplayName?'<br/><small class=""text-muted"">'+esc(r.DiscoAssignedUserDisplayName)+'</small>':'')):'<em class=""text-muted"">Not assigned</em>';
|
||||||
var adUser=r.ADManagedByUserId?(esc(r.ADManagedByUserId)+(r.ADManagedByDisplayName?'<br/><small class=""text-muted"">'+esc(r.ADManagedByDisplayName)+'</small>':'')):(r.FoundInAD?'<em class=""text-muted"">Empty</em>':'<em class=""text-muted"">N/A</em>');
|
var adUser=r.ADManagedByUserId?(esc(r.ADManagedByUserId)+(r.ADManagedByDisplayName?'<br/><small class=""text-muted"">'+esc(r.ADManagedByDisplayName)+'</small>':'')):(r.FoundInAD?'<em class=""text-muted"">Empty</em>':'<em class=""text-muted"">N/A</em>');
|
||||||
tb.append('<tr class=""'+(r.IsMatch?'':'warning')+'"">'+'<td>'+icon+'</td><td>'+esc(r.SerialNumber)+'</td><td>'+esc(r.ComputerName||'')+'</td><td>'+discoUser+'</td><td>'+adUser+'</td><td>'+esc(r.MismatchReason||'')+'</td></tr>');
|
tb.append('<tr class=""'+(r.IsMatch?'':'warning')+'"">'+'<td>'+icon+'</td><td>'+esc(r.SerialNumber)+'</td><td>'+esc(r.ComputerName||'')+'</td><td>'+discoUser+'</td><td>'+adUser+'</td><td>'+esc(r.MismatchReason||'')+'</td></tr>');
|
||||||
}});
|
});
|
||||||
}}
|
}
|
||||||
function esc(t){{if(!t)return'';var d=document.createElement('div');d.appendChild(document.createTextNode(t));return d.innerHTML;}}
|
function esc(t){if(!t)return'';var d=document.createElement('div');d.appendChild(document.createTextNode(t));return d.innerHTML;}
|
||||||
</script>";
|
</script>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user