feature: pending device enrollment approval
This commit is contained in:
@@ -1,27 +1,47 @@
|
||||
@{
|
||||
Authorization.Require(Claims.Config.Enrolment.ShowStatus);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Enrolment", MVC.Config.Enrolment.Index(), "Status");
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Enrollment", MVC.Config.Enrolment.Index(), "Status");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Knockout");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Isotope");
|
||||
}
|
||||
<div id="enrolStatus">
|
||||
<div id="noSessions" data-bind="visible: noSessions">
|
||||
<h2>No enrolment sessions today</h2>
|
||||
<h2>No enrollment sessions today</h2>
|
||||
</div>
|
||||
<div id="sessions" data-bind="visible: !noSessions(), foreach: { data: sessions, afterRender: sessionRendered, afterAdd: sessionAdded }" style="display: none">
|
||||
<div class="session" data-bind="style: { backgroundImage: deviceModelImageUrl }, click: select">
|
||||
<h3>
|
||||
<span data-bind="text: title"></span>
|
||||
<span class="details" data-bind="text: '(' + deviceModelDescription() + ')'"></span>
|
||||
<i class="fa fa-exclamation-circle" data-bind="visible: isPending"></i>
|
||||
</h3>
|
||||
<p class="sessionStart" data-bind="text: startTime"></p>
|
||||
<p class="sessionStatus" data-bind="text: progressStatus"></p>
|
||||
<div data-bind="visible: !sessionEnded(), progressValue: progressValue" class="sessionProgress"></div>
|
||||
<div data-bind="visible: !sessionEnded() && progressValue >= 0, progressValue: progressValue" class="sessionProgress"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dialogSession" data-bind="with: currentSession">
|
||||
<div class="sessionProgress clearfix">
|
||||
<p class="sessionStart" data-bind="text: startTime"></p>
|
||||
<p class="sessionStatus" data-bind="text: progressStatus"></p>
|
||||
<div data-bind="visible: !sessionEnded() && progressValue >= 0, progressValue: progressValue"></div>
|
||||
<div id="formResolveSessionPending" data-bind="visible: isPending">
|
||||
@using (Html.BeginForm(MVC.API.Enrollment.ResolveSessionPending(), FormMethod.Post))
|
||||
{
|
||||
@Html.AntiForgeryToken();
|
||||
<input type="hidden" name="sessionId" data-bind="value: id" />
|
||||
<div class="reason">
|
||||
<input type="text" name="reason" placeholder="Reason (optional)" />
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button type="button" value="True" class="button">Approve</button>
|
||||
<button type="button" value="False" class="button">Reject</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="sessionHeader clearfix" data-bind="style: { backgroundImage: deviceModelImageUrl }">
|
||||
<h2><a href="" target="_blank" data-bind="text: title, attr: { href: deviceUrl }"></a></h2>
|
||||
<h3 data-bind="text: deviceModelDescription"></h3>
|
||||
@@ -48,11 +68,6 @@
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="sessionProgress clearfix">
|
||||
<p class="sessionStart" data-bind="text: startTime"></p>
|
||||
<p class="sessionStatus" data-bind="text: progressStatus"></p>
|
||||
<div data-bind="visible: !sessionEnded(), progressValue: progressValue"></div>
|
||||
</div>
|
||||
<div class="sessionInfoContainer clearfix">
|
||||
<div class="sessionInfoMessages">
|
||||
<table class="logEventsViewport">
|
||||
@@ -134,7 +149,9 @@
|
||||
function sessionViewModel(id) {
|
||||
var self = this;
|
||||
|
||||
self.id = id;
|
||||
self.title = ko.observable(id);
|
||||
self.isPending = ko.observable(false);
|
||||
self.messages = ko.observableArray();
|
||||
self.console = ko.observableArray();
|
||||
self.serialNumber = ko.observable();
|
||||
@@ -187,7 +204,7 @@
|
||||
self.select = function (e, d) {
|
||||
vm.currentSession(self);
|
||||
hostDialogSessions.dialog('open');
|
||||
hostDialogSessions.dialog('option', 'title', 'Device Enrolment: ' + self.title());
|
||||
hostDialogSessions.dialog('option', 'title', 'Device Enrollment: ' + self.title());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -228,15 +245,38 @@
|
||||
if (log.Arguments.length >= 10 && log.Arguments[9])
|
||||
session.deviceModelId(log.Arguments[9]);
|
||||
break;
|
||||
case 14: // SessionPending
|
||||
session.isPending(true);
|
||||
session.messages.unshift(log);
|
||||
session.progressValue(-1);
|
||||
session.progressStatus('Pending enrollment approval');
|
||||
break;
|
||||
case 15: // SessionPendingApproved
|
||||
session.isPending(false);
|
||||
session.messages.unshift(log);
|
||||
session.progressValue(-1);
|
||||
session.progressStatus('Enrollment approval, waiting for client');
|
||||
break;
|
||||
case 16: // SessionPendingRejected
|
||||
session.isPending(false);
|
||||
session.messages.unshift(log);
|
||||
session.progressValue(-1);
|
||||
session.progressStatus('Enrollment rejected, waiting for client');
|
||||
break;
|
||||
case 17: // SessionContinuing
|
||||
session.isPending(false);
|
||||
session.messages.unshift(log);
|
||||
break;
|
||||
case 20: // SessionFinished
|
||||
session.sessionEnded(true);
|
||||
session.isPending(false);
|
||||
if (session.hasError())
|
||||
session.progressStatus('Enrolment Finished with an Error');
|
||||
session.progressStatus('Enrollment Finished with an Error');
|
||||
else
|
||||
if (session.hasWarning())
|
||||
session.progressStatus('Enrolment Finished with a Warning');
|
||||
session.progressStatus('Enrollment Finished with a Warning');
|
||||
else
|
||||
session.progressStatus('Enrolment Finished Successfully');
|
||||
session.progressStatus('Enrollment Finished Successfully');
|
||||
session.messages.unshift(log);
|
||||
break;
|
||||
case 21: // SessionDiagnosticInformation
|
||||
@@ -357,6 +397,20 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
$('#dialogSession').on('click', '#formResolveSessionPending button', function (e) {
|
||||
const $button = $(this);
|
||||
const $form = $button.closest('form');
|
||||
const body = new FormData($form[0]);
|
||||
body.append('approve', $button.val());
|
||||
fetch($form.attr('action'), {
|
||||
method: 'POST',
|
||||
body: body
|
||||
}).then(function (response) {
|
||||
if (!response.ok) {
|
||||
alert('Failed to resolve pending session: ' + response.statusText);
|
||||
}
|
||||
});
|
||||
});
|
||||
init();
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user