Update: UserHeldDevices to Repository Monitor
This commit is contained in:
@@ -13,13 +13,6 @@ namespace Disco.BI.Extensions
|
||||
{
|
||||
public static class JobExtensions
|
||||
{
|
||||
|
||||
public static void BroadcastUpdate(this Job j)
|
||||
{
|
||||
if (j.UserId != null)
|
||||
Interop.SignalRHandlers.UserHeldDevices.UserJobUpdated(j.UserId);
|
||||
}
|
||||
|
||||
public static JobAttachment CreateAttachment(this Job Job, DiscoDataContext dbContext, User CreatorUser, string Filename, string MimeType, string Comments, Stream Content, DocumentTemplate DocumentTemplate = null, byte[] PdfThumbnail = null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(MimeType) || MimeType.Equals("unknown/unknown", StringComparison.InvariantCultureIgnoreCase))
|
||||
|
||||
@@ -3,19 +3,39 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.AspNet.SignalR;
|
||||
using System.Reactive.Linq;
|
||||
using Disco.Data.Repository.Monitor;
|
||||
using Disco.Models.Repository;
|
||||
|
||||
namespace Disco.BI.Interop.SignalRHandlers
|
||||
{
|
||||
public class UserHeldDevices : PersistentConnection
|
||||
{
|
||||
private static bool subscribed = false;
|
||||
private static object subscribeLock = new object();
|
||||
|
||||
internal static void UserJobUpdated(string JobUserId)
|
||||
static UserHeldDevices()
|
||||
{
|
||||
if (!subscribed)
|
||||
lock (subscribeLock)
|
||||
if (!subscribed)
|
||||
{
|
||||
Disco.Data.Repository.Monitor.RepositoryMonitor.StreamAfterCommit.Where(e => e.EntityType == typeof(Job)).Subscribe(UserJobUpdated);
|
||||
subscribed = true;
|
||||
}
|
||||
}
|
||||
|
||||
private static void UserJobUpdated(RepositoryMonitorEvent e)
|
||||
{
|
||||
Job j = (Job)e.Entity;
|
||||
|
||||
if (j.UserId != null)
|
||||
{
|
||||
var connectionManager = GlobalHost.ConnectionManager;
|
||||
var connectionContext = connectionManager.GetConnectionContext<UserHeldDevices>();
|
||||
if (connectionContext != null)
|
||||
connectionContext.Connection.Broadcast(JobUserId);
|
||||
}
|
||||
|
||||
connectionContext.Connection.Broadcast(j.UserId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.2.0506.1904")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.1904")]
|
||||
[assembly: AssemblyVersion("1.2.0506.2022")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.2022")]
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.2.0506.1845")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.1845")]
|
||||
[assembly: AssemblyVersion("1.2.0506.2004")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.2004")]
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.2.0506.1904")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.1904")]
|
||||
[assembly: AssemblyVersion("1.2.0506.2022")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.2022")]
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.2.0506.1904")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.1904")]
|
||||
[assembly: AssemblyVersion("1.2.0506.2022")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.2022")]
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.2.0506.1904")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.1904")]
|
||||
[assembly: AssemblyVersion("1.2.0506.2022")]
|
||||
[assembly: AssemblyFileVersion("1.2.0506.2022")]
|
||||
@@ -443,7 +443,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
job.ExpectedClosedDate = null;
|
||||
}
|
||||
dbContext.SaveChanges();
|
||||
job.BroadcastUpdate();
|
||||
}
|
||||
private void UpdateDeviceHeldLocation(Job job, string DeviceHeldLocation)
|
||||
{
|
||||
@@ -577,7 +576,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
job.JobMetaNonWarranty.AccountingChargeRequiredUserId = DiscoApplication.CurrentUser.Id;
|
||||
dbContext.SaveChanges();
|
||||
job.BroadcastUpdate();
|
||||
return new Models.Job._DateChangeModel()
|
||||
{
|
||||
Id = job.Id,
|
||||
@@ -612,7 +610,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
job.JobMetaNonWarranty.AccountingChargeAddedUserId = DiscoApplication.CurrentUser.Id;
|
||||
dbContext.SaveChanges();
|
||||
job.BroadcastUpdate();
|
||||
return new Models.Job._DateChangeModel()
|
||||
{
|
||||
Id = job.Id,
|
||||
@@ -647,7 +644,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
job.JobMetaNonWarranty.AccountingChargePaidUserId = DiscoApplication.CurrentUser.Id;
|
||||
dbContext.SaveChanges();
|
||||
job.BroadcastUpdate();
|
||||
return new Models.Job._DateChangeModel()
|
||||
{
|
||||
Id = job.Id,
|
||||
@@ -1462,7 +1458,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
job.OnWaitingForUserAction(dbContext, DiscoApplication.CurrentUser, Reason);
|
||||
dbContext.SaveChanges();
|
||||
job.BroadcastUpdate();
|
||||
if (redirect.HasValue && redirect.Value)
|
||||
return RedirectToAction(MVC.Job.Show(job.Id));
|
||||
else
|
||||
@@ -1492,7 +1487,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
|
||||
job.OnNotWaitingForUserAction(dbContext, DiscoApplication.CurrentUser, Resolution);
|
||||
dbContext.SaveChanges();
|
||||
job.BroadcastUpdate();
|
||||
if (redirect.HasValue && redirect.Value)
|
||||
return RedirectToAction(MVC.Job.Show(job.Id));
|
||||
else
|
||||
@@ -1540,7 +1534,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
j.OnDeviceReadyForReturn(DiscoApplication.CurrentUser);
|
||||
|
||||
dbContext.SaveChanges();
|
||||
j.BroadcastUpdate();
|
||||
if (redirect)
|
||||
return RedirectToAction(MVC.Job.Show(id));
|
||||
else
|
||||
@@ -1563,7 +1556,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
j.OnDeviceHeld(DiscoApplication.CurrentUser);
|
||||
|
||||
dbContext.SaveChanges();
|
||||
j.BroadcastUpdate();
|
||||
if (redirect)
|
||||
return RedirectToAction(MVC.Job.Show(id));
|
||||
else
|
||||
@@ -1586,7 +1578,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
j.OnDeviceReturned(DiscoApplication.CurrentUser);
|
||||
|
||||
dbContext.SaveChanges();
|
||||
j.BroadcastUpdate();
|
||||
if (redirect)
|
||||
return RedirectToAction(MVC.Job.Show(id));
|
||||
else
|
||||
@@ -1655,7 +1646,6 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
j.OnReopen();
|
||||
|
||||
dbContext.SaveChanges();
|
||||
j.BroadcastUpdate();
|
||||
if (redirect)
|
||||
return RedirectToAction(MVC.Job.Show(id));
|
||||
else
|
||||
|
||||
@@ -453,10 +453,20 @@
|
||||
};
|
||||
|
||||
var updatedModel = function (id) {
|
||||
var UserId = id.toString();
|
||||
$.getJSON('@(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevice()))', { id: UserId }, function (data) {
|
||||
processModel(UserId, data, false);
|
||||
});
|
||||
var userId = id.toString();
|
||||
|
||||
$.ajax({
|
||||
dataType: 'json',
|
||||
url: '@(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevice()))',
|
||||
data: { id: userId },
|
||||
success: function (data) {
|
||||
processModel(userId, data, false);
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown){
|
||||
if (textStatus == 'parsererror') // null Result
|
||||
processModel(userId, null, false);
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
var connectionError = function () {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
// Runtime Version:4.0.30319.18033
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -31,9 +31,9 @@ namespace Disco.Web.Areas.Public.Views.UserHeldDevices
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.0.0")]
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.5.4.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Public/Views/UserHeldDevices/Noticeboard.cshtml")]
|
||||
public class Noticeboard : System.Web.Mvc.WebViewPage<dynamic>
|
||||
public partial class Noticeboard : System.Web.Mvc.WebViewPage<dynamic>
|
||||
{
|
||||
public Noticeboard()
|
||||
{
|
||||
@@ -412,19 +412,26 @@ WriteLiteral(">\r\n $(function () {\r\n var models = {};\r\n
|
||||
" (model.htmlLi && model.IsAlert) {\r\n model.htmlLi.addClas" +
|
||||
"s(\'alert\');\r\n }\r\n scheduleModelUpdate(mode" +
|
||||
"l);\r\n }\r\n };\r\n\r\n var updatedModel = functio" +
|
||||
"n (id) {\r\n var UserId = id.toString();\r\n $.getJSON" +
|
||||
"(\'");
|
||||
"n (id) {\r\n var userId = id.toString();\r\n\r\n $.ajax(" +
|
||||
"{\r\n dataType: \'json\',\r\n url: \'");
|
||||
|
||||
|
||||
#line 457 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
#line 460 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
Write(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevice()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(@"', { id: UserId }, function (data) {
|
||||
processModel(UserId, data, false);
|
||||
});
|
||||
WriteLiteral(@"',
|
||||
data: { id: userId },
|
||||
success: function (data) {
|
||||
processModel(userId, data, false);
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown){
|
||||
if (textStatus == 'parsererror') // null Result
|
||||
processModel(userId, null, false);
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
var connectionError = function () {
|
||||
@@ -435,7 +442,7 @@ WriteLiteral(@"', { id: UserId }, function (data) {
|
||||
window.location.href = '");
|
||||
|
||||
|
||||
#line 467 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
#line 477 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
Write(Url.Action(MVC.Public.UserHeldDevices.Noticeboard()));
|
||||
|
||||
|
||||
@@ -446,7 +453,7 @@ WriteLiteral("\';\r\n }, 10000);\r\n }\r\n
|
||||
"rsistantConnection = $.connection(\'");
|
||||
|
||||
|
||||
#line 474 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
#line 484 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
Write(Url.Content("~/Public/UserHeldDevices/Notifications"));
|
||||
|
||||
|
||||
@@ -457,7 +464,7 @@ WriteLiteral("\');\r\n persistantConnection.received(updatedModel
|
||||
"tion.start(function () {\r\n $.getJSON(\'");
|
||||
|
||||
|
||||
#line 478 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
#line 488 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
Write(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevices()));
|
||||
|
||||
|
||||
@@ -482,14 +489,14 @@ WriteLiteral(">\r\n <img");
|
||||
|
||||
WriteLiteral(" style=\"width: 32px; height: 32px; margin-top: -5px; margin-bottom: -15px;\"");
|
||||
|
||||
WriteAttribute("src", Tuple.Create(" src=\"", 23515), Tuple.Create("\"", 23564)
|
||||
WriteAttribute("src", Tuple.Create(" src=\"", 23895), Tuple.Create("\"", 23944)
|
||||
|
||||
#line 490 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 23521), Tuple.Create<System.Object, System.Int32>(Links.ClientSource.Style.Images.Icon32_png
|
||||
#line 500 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 23901), Tuple.Create<System.Object, System.Int32>(Links.ClientSource.Style.Images.Icon32_png
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 23521), false)
|
||||
, 23901), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" alt=\"Disco Logo\"");
|
||||
|
||||
Reference in New Issue
Block a user