Feature #42: Active Directory Interop Upgrade

AD Interop moved to Disco.Services; Supports multi-domain environments,
sites, and searching restricted with OUs.
This commit is contained in:
Gary Sharp
2014-04-10 17:58:04 +10:00
parent b841c6b2c0
commit db73cc1a12
218 changed files with 6383 additions and 2535 deletions
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Job.JobParts
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -34,6 +34,7 @@ namespace Disco.Web.Views.Job.JobParts
#line default
#line hidden
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,7 +29,7 @@
@foreach (var jl in Model.Job.JobLogs.OrderBy(m => m.Timestamp))
{
<div data-logid="@jl.Id">
<span class="author">@jl.TechUser.ToString()</span>@if (canRemoveAnyLogs || (canRemoveOwnLogs && jl.TechUserId == CurrentUser.Id))
<span class="author">@jl.TechUser.ToString()</span>@if (canRemoveAnyLogs || (canRemoveOwnLogs && jl.TechUserId == CurrentUser.UserId))
{<text><span class="remove fa fa-times-circle"></span></text>}<span class="timestamp" data-livestamp="@(jl.Timestamp.ToUnixEpoc())" title="@jl.Timestamp.ToFullDateTime()">@jl.Timestamp.ToFullDateTime()</span>
<span class="comment">@jl.Comments.ToMultilineJobRefString()</span>
</div>
@@ -58,7 +58,7 @@
{ @ja.DocumentTemplate.Description}
else
{ @ja.Comments }}
</span><span class="author">@ja.TechUser.ToString()</span>@if (canRemoveAnyAttachments || (canRemoveOwnAttachments && ja.TechUserId == CurrentUser.Id))
</span><span class="author">@ja.TechUser.ToString()</span>@if (canRemoveAnyAttachments || (canRemoveOwnAttachments && ja.TechUserId == CurrentUser.UserId))
{<text><span class="remove fa fa-times-circle"></span></text>}<span class="timestamp" data-livestamp="@(ja.Timestamp.ToUnixEpoc())" title="@ja.Timestamp.ToFullDateTime()">@ja.Timestamp.ToFullDateTime()</span>
</a>
}
@@ -230,7 +230,7 @@
@if (canRemoveAnyLogs)
{<text>addComment(d, false, true);</text>}
else if (canRemoveOwnLogs)
{<text>addComment(d, false, (d.AuthorId === '@(CurrentUser.Id)'));</text>}
{<text>addComment(d, false, (d.AuthorId === '@(CurrentUser.UserId)'));</text>}
else
{<text>addComment(d, false, false);</text>}
@@ -447,7 +447,7 @@
}
else if (canRemoveOwnAttachments)
{
<text>buildAttachment(a, (a.AuthorId === '@(CurrentUser.Id)'), quick);</text>
<text>buildAttachment(a, (a.AuthorId === '@(CurrentUser.UserId)'), quick);</text>
}
else
{
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -173,7 +173,7 @@ WriteLiteral("</span>");
#line 32 "..\..\Views\Job\JobParts\Resources.cshtml"
if (canRemoveAnyLogs || (canRemoveOwnLogs && jl.TechUserId == CurrentUser.Id))
if (canRemoveAnyLogs || (canRemoveOwnLogs && jl.TechUserId == CurrentUser.UserId))
{
#line default
@@ -205,14 +205,14 @@ WriteLiteral(" data-livestamp=\"");
#line hidden
WriteLiteral("\"");
WriteAttribute("title", Tuple.Create(" title=\"", 1877), Tuple.Create("\"", 1915)
WriteAttribute("title", Tuple.Create(" title=\"", 1881), Tuple.Create("\"", 1919)
#line 33 "..\..\Views\Job\JobParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 1885), Tuple.Create<System.Object, System.Int32>(jl.Timestamp.ToFullDateTime()
, Tuple.Create(Tuple.Create("", 1889), Tuple.Create<System.Object, System.Int32>(jl.Timestamp.ToFullDateTime()
#line default
#line hidden
, 1885), false)
, 1889), false)
);
WriteLiteral(">");
@@ -312,14 +312,14 @@ WriteLiteral(" <td");
WriteLiteral(" id=\"Attachments\"");
WriteAttribute("class", Tuple.Create(" class=\"", 2620), Tuple.Create("\"", 2695)
WriteAttribute("class", Tuple.Create(" class=\"", 2624), Tuple.Create("\"", 2699)
#line 49 "..\..\Views\Job\JobParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 2628), Tuple.Create<System.Object, System.Int32>(canAddAttachments ? "canAddAttachments" : "cannotAddAttachments"
, Tuple.Create(Tuple.Create("", 2632), Tuple.Create<System.Object, System.Int32>(canAddAttachments ? "canAddAttachments" : "cannotAddAttachments"
#line default
#line hidden
, 2628), false)
, 2632), false)
);
WriteLiteral(">\r\n <div");
@@ -344,14 +344,14 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <a");
WriteAttribute("href", Tuple.Create(" href=\"", 2863), Tuple.Create("\"", 2920)
WriteAttribute("href", Tuple.Create(" href=\"", 2867), Tuple.Create("\"", 2924)
#line 53 "..\..\Views\Job\JobParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 2870), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Job.AttachmentDownload(ja.Id))
, Tuple.Create(Tuple.Create("", 2874), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Job.AttachmentDownload(ja.Id))
#line default
#line hidden
, 2870), false)
, 2874), false)
);
WriteLiteral(" data-attachmentid=\"");
@@ -380,42 +380,42 @@ WriteLiteral(">\r\n <span");
WriteLiteral(" class=\"icon\"");
WriteAttribute("title", Tuple.Create(" title=\"", 3026), Tuple.Create("\"", 3046)
WriteAttribute("title", Tuple.Create(" title=\"", 3030), Tuple.Create("\"", 3050)
#line 54 "..\..\Views\Job\JobParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 3034), Tuple.Create<System.Object, System.Int32>(ja.Filename
, Tuple.Create(Tuple.Create("", 3038), Tuple.Create<System.Object, System.Int32>(ja.Filename
#line default
#line hidden
, 3034), false)
, 3038), false)
);
WriteLiteral(">\r\n <img");
WriteLiteral(" alt=\"Attachment Thumbnail\"");
WriteAttribute("src", Tuple.Create(" src=\"", 3113), Tuple.Create("\"", 3172)
WriteAttribute("src", Tuple.Create(" src=\"", 3117), Tuple.Create("\"", 3176)
#line 55 "..\..\Views\Job\JobParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 3119), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Job.AttachmentThumbnail(ja.Id))
, Tuple.Create(Tuple.Create("", 3123), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.Job.AttachmentThumbnail(ja.Id))
#line default
#line hidden
, 3119), false)
, 3123), false)
);
WriteLiteral(" /></span>\r\n <span");
WriteLiteral(" class=\"comments\"");
WriteAttribute("title", Tuple.Create(" title=\"", 3235), Tuple.Create("\"", 3255)
WriteAttribute("title", Tuple.Create(" title=\"", 3239), Tuple.Create("\"", 3259)
#line 56 "..\..\Views\Job\JobParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 3243), Tuple.Create<System.Object, System.Int32>(ja.Comments
, Tuple.Create(Tuple.Create("", 3247), Tuple.Create<System.Object, System.Int32>(ja.Comments
#line default
#line hidden
, 3243), false)
, 3247), false)
);
WriteLiteral(">\r\n");
@@ -478,7 +478,7 @@ WriteLiteral("</span>");
#line 61 "..\..\Views\Job\JobParts\Resources.cshtml"
if (canRemoveAnyAttachments || (canRemoveOwnAttachments && ja.TechUserId == CurrentUser.Id))
if (canRemoveAnyAttachments || (canRemoveOwnAttachments && ja.TechUserId == CurrentUser.UserId))
{
#line default
@@ -510,14 +510,14 @@ WriteLiteral(" data-livestamp=\"");
#line hidden
WriteLiteral("\"");
WriteAttribute("title", Tuple.Create(" title=\"", 3906), Tuple.Create("\"", 3944)
WriteAttribute("title", Tuple.Create(" title=\"", 3914), Tuple.Create("\"", 3952)
#line 62 "..\..\Views\Job\JobParts\Resources.cshtml"
, Tuple.Create(Tuple.Create("", 3914), Tuple.Create<System.Object, System.Int32>(ja.Timestamp.ToFullDateTime()
, Tuple.Create(Tuple.Create("", 3922), Tuple.Create<System.Object, System.Int32>(ja.Timestamp.ToFullDateTime()
#line default
#line hidden
, 3914), false)
, 3922), false)
);
WriteLiteral(">");
@@ -907,7 +907,7 @@ WriteLiteral("addComment(d, false, (d.AuthorId === \'");
#line 233 "..\..\Views\Job\JobParts\Resources.cshtml"
Write(CurrentUser.Id);
Write(CurrentUser.UserId);
#line default
@@ -916,7 +916,7 @@ WriteLiteral("\'));");
#line 233 "..\..\Views\Job\JobParts\Resources.cshtml"
}
}
else
{
@@ -1250,7 +1250,7 @@ WriteLiteral("buildAttachment(a, (a.AuthorId === \'");
#line 450 "..\..\Views\Job\JobParts\Resources.cshtml"
Write(CurrentUser.Id);
Write(CurrentUser.UserId);
#line default
+1 -1
View File
@@ -438,7 +438,7 @@
else
{@Model.Job.User.DisplayName}
</h2>
<div id="Job_Show_User_Id" title="Id">@Model.Job.UserId</div>
<div id="Job_Show_User_Id" title="Id">@Model.Job.User.FriendlyId()</div>
@if (Authorization.Has(Claims.User.ShowDetails))
{
if (!string.IsNullOrWhiteSpace(Model.Job.User.PhoneNumber))
@@ -753,7 +753,7 @@ WriteLiteral(">");
#line 192 "..\..\Views\Job\JobParts\_Subject.cshtml"
Write(Model.Job.Device.ComputerName);
Write(Model.Job.Device.DeviceDomainId);
#line default
@@ -1601,7 +1601,7 @@ WriteLiteral(">");
#line 441 "..\..\Views\Job\JobParts\_Subject.cshtml"
Write(Model.Job.UserId);
Write(Model.Job.User.FriendlyId());
#line default
@@ -1656,15 +1656,15 @@ WriteLiteral(" title=\"Email Address\"");
WriteLiteral(">Email: <a");
WriteAttribute("href", Tuple.Create(" href=\"", 31579), Tuple.Create("\"", 31623)
, Tuple.Create(Tuple.Create("", 31586), Tuple.Create("mailto:", 31586), true)
WriteAttribute("href", Tuple.Create(" href=\"", 31590), Tuple.Create("\"", 31634)
, Tuple.Create(Tuple.Create("", 31597), Tuple.Create("mailto:", 31597), true)
#line 447 "..\..\Views\Job\JobParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 31593), Tuple.Create<System.Object, System.Int32>(Model.Job.User.EmailAddress
, Tuple.Create(Tuple.Create("", 31604), Tuple.Create<System.Object, System.Int32>(Model.Job.User.EmailAddress
#line default
#line hidden
, 31593), false)
, 31604), false)
);
WriteLiteral(">");
@@ -2152,14 +2152,14 @@ WriteLiteral(" type=\"hidden\"");
WriteLiteral(" name=\"JobId\"");
WriteAttribute("value", Tuple.Create(" value=\"", 42282), Tuple.Create("\"", 42303)
WriteAttribute("value", Tuple.Create(" value=\"", 42293), Tuple.Create("\"", 42314)
#line 645 "..\..\Views\Job\JobParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 42290), Tuple.Create<System.Object, System.Int32>(Model.Job.Id
, Tuple.Create(Tuple.Create("", 42301), Tuple.Create<System.Object, System.Int32>(Model.Job.Id
#line default
#line hidden
, 42290), false)
, 42301), false)
);
WriteLiteral(" />\r\n");
@@ -2223,26 +2223,26 @@ WriteLiteral("\"");
WriteLiteral(">\r\n <i");
WriteAttribute("class", Tuple.Create(" class=\"", 42772), Tuple.Create("\"", 42839)
, Tuple.Create(Tuple.Create("", 42780), Tuple.Create("fa", 42780), true)
, Tuple.Create(Tuple.Create(" ", 42782), Tuple.Create("fa-", 42783), true)
WriteAttribute("class", Tuple.Create(" class=\"", 42783), Tuple.Create("\"", 42850)
, Tuple.Create(Tuple.Create("", 42791), Tuple.Create("fa", 42791), true)
, Tuple.Create(Tuple.Create(" ", 42793), Tuple.Create("fa-", 42794), true)
#line 650 "..\..\Views\Job\JobParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 42786), Tuple.Create<System.Object, System.Int32>(jobQueue.Icon
, Tuple.Create(Tuple.Create("", 42797), Tuple.Create<System.Object, System.Int32>(jobQueue.Icon
#line default
#line hidden
, 42786), false)
, Tuple.Create(Tuple.Create(" ", 42802), Tuple.Create("fa-fw", 42803), true)
, Tuple.Create(Tuple.Create(" ", 42808), Tuple.Create("fa-lg", 42809), true)
, Tuple.Create(Tuple.Create(" ", 42814), Tuple.Create("d-", 42815), true)
, 42797), false)
, Tuple.Create(Tuple.Create(" ", 42813), Tuple.Create("fa-fw", 42814), true)
, Tuple.Create(Tuple.Create(" ", 42819), Tuple.Create("fa-lg", 42820), true)
, Tuple.Create(Tuple.Create(" ", 42825), Tuple.Create("d-", 42826), true)
#line 650 "..\..\Views\Job\JobParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 42817), Tuple.Create<System.Object, System.Int32>(jobQueue.IconColour
, Tuple.Create(Tuple.Create("", 42828), Tuple.Create<System.Object, System.Int32>(jobQueue.IconColour
#line default
#line hidden
, 42817), false)
, 42828), false)
);
WriteLiteral("></i>");
@@ -2283,27 +2283,27 @@ WriteLiteral(" ");
#line hidden
WriteLiteral(" <i");
WriteAttribute("class", Tuple.Create(" class=\"", 43181), Tuple.Create("\"", 43229)
, Tuple.Create(Tuple.Create("", 43189), Tuple.Create("fa", 43189), true)
, Tuple.Create(Tuple.Create(" ", 43191), Tuple.Create("d-priority-", 43192), true)
WriteAttribute("class", Tuple.Create(" class=\"", 43192), Tuple.Create("\"", 43240)
, Tuple.Create(Tuple.Create("", 43200), Tuple.Create("fa", 43200), true)
, Tuple.Create(Tuple.Create(" ", 43202), Tuple.Create("d-priority-", 43203), true)
#line 657 "..\..\Views\Job\JobParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 43203), Tuple.Create<System.Object, System.Int32>(priorityValue.ToLower()
, Tuple.Create(Tuple.Create("", 43214), Tuple.Create<System.Object, System.Int32>(priorityValue.ToLower()
#line default
#line hidden
, 43203), false)
, 43214), false)
);
WriteAttribute("title", Tuple.Create(" title=\"", 43230), Tuple.Create("\"", 43263)
WriteAttribute("title", Tuple.Create(" title=\"", 43241), Tuple.Create("\"", 43274)
#line 657 "..\..\Views\Job\JobParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 43238), Tuple.Create<System.Object, System.Int32>(priorityValue
, Tuple.Create(Tuple.Create("", 43249), Tuple.Create<System.Object, System.Int32>(priorityValue
#line default
#line hidden
, 43238), false)
, Tuple.Create(Tuple.Create(" ", 43254), Tuple.Create("Priority", 43255), true)
, 43249), false)
, Tuple.Create(Tuple.Create(" ", 43265), Tuple.Create("Priority", 43266), true)
);
WriteLiteral("></i>\r\n </div>\r\n <div>\r\n " +
+1 -1
View File
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
+2 -1
View File
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Job
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Job
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Job
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
+1 -1
View File
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Job
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
+1 -1
View File
@@ -35,7 +35,7 @@
}
else
{
<span><strong>Id:</strong> @Model.User.Id</span><br />
<span><strong>Id:</strong> @Model.User.UserId</span><br />
<span><strong>Name:</strong> @Model.User.DisplayName</span>
}
</td>
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Job
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;
@@ -148,7 +149,7 @@ WriteLiteral(" <span><strong>Name:</strong> ");
#line 24 "..\..\Views\Job\_CreateSubject.cshtml"
Write(Model.Device.ComputerName);
Write(Model.Device.DeviceDomainId);
#line default
@@ -215,7 +216,7 @@ WriteLiteral(" <span><strong>Id:</strong> ");
#line 38 "..\..\Views\Job\_CreateSubject.cshtml"
Write(Model.User.Id);
Write(Model.User.UserId);
#line default
+2 -1
View File
@@ -2,7 +2,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34003
// Runtime Version:4.0.30319.34011
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -29,6 +29,7 @@ namespace Disco.Web.Views.Job
using Disco;
using Disco.BI.Extensions;
using Disco.Models.Repository;
using Disco.Services;
using Disco.Services.Authorization;
using Disco.Services.Web;
using Disco.Web;