feature: job preferences - On Device Ready For Return expression

This commit is contained in:
Gary Sharp
2024-05-16 22:09:42 +10:00
parent 565e1707ce
commit bb846d14c5
14 changed files with 416 additions and 40 deletions
@@ -75,6 +75,12 @@ namespace Disco.Data.Configuration.Modules
set { Set(value); } set { Set(value); }
} }
public string OnDeviceReadyForReturnExpression
{
get { return Get<string>(null); }
set { Set(value); }
}
public string OnCloseExpression public string OnCloseExpression
{ {
get { return Get<string>(null); } get { return Get<string>(null); }
@@ -64,12 +64,34 @@ namespace Disco.Services
!j.DeviceReadyForReturn.HasValue && !j.DeviceReturnedDate.HasValue; !j.DeviceReadyForReturn.HasValue && !j.DeviceReturnedDate.HasValue;
} }
public static void OnDeviceReadyForReturn(this Job j, User Technician) public static void OnDeviceReadyForReturn(this Job j, User Technician)
public static void OnDeviceReadyForReturn(this Job j, DiscoDataContext Database, User Technician)
{ {
if (!j.CanDeviceReadyForReturn()) if (!j.CanDeviceReadyForReturn())
throw new InvalidOperationException("Device Ready for Return was Denied"); throw new InvalidOperationException("Device Ready for Return was Denied");
j.DeviceReadyForReturn = DateTime.Now; j.DeviceReadyForReturn = DateTime.Now;
j.DeviceReadyForReturnTechUserId = Technician.UserId; j.DeviceReadyForReturnTechUserId = Technician.UserId;
// Evaluate OnDeviceReadyForReturnExpression Expression
try
{
var result = j.EvaluateOnDeviceReadyForReturnExpression(Database);
if (!string.IsNullOrWhiteSpace(result))
{
var jl = new JobLog()
{
Job = j,
TechUser = Technician,
Timestamp = DateTime.Now,
Comments = result
};
Database.JobLogs.Add(jl);
}
}
catch (Exception ex)
{
SystemLog.LogException("Job Expression - OnDeviceReadyForReturnExpression", ex);
}
} }
#endregion #endregion
+15
View File
@@ -407,6 +407,21 @@ namespace Disco.Services
return null; return null;
} }
public static string EvaluateOnDeviceReadyForReturnExpression(this Job job, DiscoDataContext Database)
{
if (!string.IsNullOrEmpty(Database.DiscoConfiguration.JobPreferences.OnDeviceReadyForReturnExpression))
{
Expression compiledExpression = Jobs.Jobs.OnDeviceReadyForReturnExpressionFromCache(Database);
IDictionary evaluatorVariables = Expression.StandardVariables(null, Database, job.OpenedTechUser, DateTime.Now, null, job);
object result = compiledExpression.EvaluateFirst<object>(job, evaluatorVariables);
if (result == null)
return null;
else
return result.ToString();
}
return null;
}
public static string EvaluateOnCloseExpression(this Job job, DiscoDataContext Database) public static string EvaluateOnCloseExpression(this Job job, DiscoDataContext Database)
{ {
if (!string.IsNullOrEmpty(Database.DiscoConfiguration.JobPreferences.OnCloseExpression)) if (!string.IsNullOrEmpty(Database.DiscoConfiguration.JobPreferences.OnCloseExpression))
+10
View File
@@ -131,6 +131,16 @@ namespace Disco.Services.Jobs
ExpressionCache.InvalidateSingleCache("Job_OnCreateExpression"); ExpressionCache.InvalidateSingleCache("Job_OnCreateExpression");
} }
public static Expression OnDeviceReadyForReturnExpressionFromCache(DiscoDataContext Database)
{
return ExpressionCache.GetOrCreateSingleExpressions("Job_OnDeviceReadyForReturnExpression", () => Expression.TokenizeSingleDynamic(null, Database.DiscoConfiguration.JobPreferences.OnDeviceReadyForReturnExpression, 0));
}
public static void OnDeviceReadyForReturnExpressionInvalidateCache()
{
ExpressionCache.InvalidateSingleCache("Job_OnDeviceReadyForReturnExpression");
}
public static Expression OnCloseExpressionFromCache(DiscoDataContext Database) public static Expression OnCloseExpressionFromCache(DiscoDataContext Database)
{ {
return ExpressionCache.GetOrCreateSingleExpressions("Job_OnCloseExpression", () => Expression.TokenizeSingleDynamic(null, Database.DiscoConfiguration.JobPreferences.OnCloseExpression, 0)); return ExpressionCache.GetOrCreateSingleExpressions("Job_OnCloseExpression", () => Expression.TokenizeSingleDynamic(null, Database.DiscoConfiguration.JobPreferences.OnCloseExpression, 0));
@@ -1604,12 +1604,13 @@ namespace Disco.Web.Areas.API.Controllers
[DiscoAuthorize(Claims.Job.Properties.DeviceReadyForReturn)] [DiscoAuthorize(Claims.Job.Properties.DeviceReadyForReturn)]
public virtual ActionResult DeviceReadyForReturn(int id, bool redirect) public virtual ActionResult DeviceReadyForReturn(int id, bool redirect)
{ {
Database.Configuration.LazyLoadingEnabled = true;
var j = Database.Jobs.Find(id); var j = Database.Jobs.Find(id);
if (j != null) if (j != null)
{ {
if (j.CanDeviceReadyForReturn()) if (j.CanDeviceReadyForReturn())
{ {
j.OnDeviceReadyForReturn(CurrentUser); j.OnDeviceReadyForReturn(Database, Database.Users.Find(CurrentUser.UserId));
Database.SaveChanges(); Database.SaveChanges();
if (redirect) if (redirect)
@@ -143,6 +143,30 @@ namespace Disco.Web.Areas.API.Controllers
return Json("OK", JsonRequestBehavior.AllowGet); return Json("OK", JsonRequestBehavior.AllowGet);
} }
[DiscoAuthorize(Claims.Config.JobPreferences.Configure)]
public virtual ActionResult UpdateOnDeviceReadyForReturnExpression(string OnDeviceReadyForReturnExpression, bool redirect = false)
{
string expression = null;
if (!string.IsNullOrWhiteSpace(OnDeviceReadyForReturnExpression))
{
expression = OnDeviceReadyForReturnExpression.Trim();
}
if (Database.DiscoConfiguration.JobPreferences.OnDeviceReadyForReturnExpression != expression)
{
Database.DiscoConfiguration.JobPreferences.OnDeviceReadyForReturnExpression = expression;
Database.SaveChanges();
Jobs.OnDeviceReadyForReturnExpressionInvalidateCache();
}
if (redirect)
return RedirectToAction(MVC.Config.JobPreferences.Index());
else
return Json("OK", JsonRequestBehavior.AllowGet);
}
[DiscoAuthorize(Claims.Config.JobPreferences.Configure)] [DiscoAuthorize(Claims.Config.JobPreferences.Configure)]
public virtual ActionResult UpdateOnCloseExpression(string OnCloseExpression, bool redirect = false) public virtual ActionResult UpdateOnCloseExpression(string OnCloseExpression, bool redirect = false)
{ {
@@ -19,7 +19,8 @@ namespace Disco.Web.Areas.Config.Controllers
LocationMode = Database.DiscoConfiguration.JobPreferences.LocationMode, LocationMode = Database.DiscoConfiguration.JobPreferences.LocationMode,
LocationList = Database.DiscoConfiguration.JobPreferences.LocationList, LocationList = Database.DiscoConfiguration.JobPreferences.LocationList,
OnCreateExpression = Database.DiscoConfiguration.JobPreferences.OnCreateExpression, OnCreateExpression = Database.DiscoConfiguration.JobPreferences.OnCreateExpression,
OnCloseExpression = Database.DiscoConfiguration.JobPreferences.OnCloseExpression OnDeviceReadyForReturnExpression = Database.DiscoConfiguration.JobPreferences.OnDeviceReadyForReturnExpression,
OnCloseExpression = Database.DiscoConfiguration.JobPreferences.OnCloseExpression,
}; };
// UI Extensions // UI Extensions
@@ -20,6 +20,8 @@ namespace Disco.Web.Areas.Config.Models.JobPreferences
[DataType(DataType.MultilineText)] [DataType(DataType.MultilineText)]
public string OnCreateExpression { get; set; } public string OnCreateExpression { get; set; }
[DataType(DataType.MultilineText)] [DataType(DataType.MultilineText)]
public string OnDeviceReadyForReturnExpression { get; set; }
[DataType(DataType.MultilineText)]
public string OnCloseExpression { get; set; } public string OnCloseExpression { get; set; }
public List<KeyValuePair<string, string>> DefaultNoticeboardThemeOptions() public List<KeyValuePair<string, string>> DefaultNoticeboardThemeOptions()
@@ -75,6 +75,74 @@
</div> </div>
</td> </td>
</tr> </tr>
<tr>
<th style="width: 200px">On Device Ready For Return:</th>
<td>
@if (canConfig)
{
@Html.EditorFor(model => model.OnDeviceReadyForReturnExpression)
@AjaxHelpers.AjaxRemove()
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
<script type="text/javascript">
$(function () {
var field = $('#OnDeviceReadyForReturnExpression');
var fieldRemove = field.next('.ajaxRemove');
var fieldOriginalWidth, fieldOriginalHeight;
document.DiscoFunctions.PropertyChangeHelper(
field,
'None',
'@Url.Action(MVC.API.JobPreferences.UpdateOnDeviceReadyForReturnExpression())',
'OnDeviceReadyForReturnExpression'
);
field.focus(function () {
fieldOriginalWidth = field.width();
fieldOriginalHeight = field.height();
field.css('overflow', 'visible').animate({ width: field.parent().width() - 42, height: 75 }, 200);
}).blur(function () {
field.css('overflow', 'hidden').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200);
}).change(function () {
if (!!field.val()) {
fieldRemove.show();
} else {
fieldRemove.hide();
}
}).attr('placeholder', 'None').attr('spellcheck', 'false');
fieldRemove.click(function () {
field.val('').change();
});
if (!!field.val()) {
fieldRemove.show();
} else {
fieldRemove.hide();
}
});
</script>
}
else
{
if (string.IsNullOrWhiteSpace(Model.OnDeviceReadyForReturnExpression))
{
<span class="smallMessage">&lt;None Specified&gt;</span>
}
else
{
<div class="code">
@Model.OnDeviceReadyForReturnExpression
</div>
}
}
<div class="info-box">
<p class="fa-p">
<i class="fa fa-fw fa-info-circle"></i>This expression will be evaluated whenever a device is flagged as Ready For Return. If the expression has any output it will be added to the job log.
</p>
</div>
</td>
</tr>
<tr> <tr>
<th style="width: 200px">On Close:</th> <th style="width: 200px">On Close:</th>
<td> <td>
@@ -250,7 +250,7 @@ WriteLiteral("></i>This expression will be evaluated whenever a job is created.
WriteLiteral(" style=\"width: 200px\""); WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(">On Close:</th>\r\n <td>\r\n"); WriteLiteral(">On Device Ready For Return:</th>\r\n <td>\r\n");
#line 81 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml" #line 81 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
@@ -268,7 +268,7 @@ WriteLiteral(">On Close:</th>\r\n <td>\r\n");
#line hidden #line hidden
#line 83 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml" #line 83 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(Html.EditorFor(model => model.OnCloseExpression)); Write(Html.EditorFor(model => model.OnDeviceReadyForReturnExpression));
#line default #line default
@@ -328,7 +328,7 @@ WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@"> WriteLiteral(@">
$(function () { $(function () {
var field = $('#OnCloseExpression'); var field = $('#OnDeviceReadyForReturnExpression');
var fieldRemove = field.next('.ajaxRemove'); var fieldRemove = field.next('.ajaxRemove');
var fieldOriginalWidth, fieldOriginalHeight; var fieldOriginalWidth, fieldOriginalHeight;
@@ -339,38 +339,48 @@ WriteLiteral(@">
#line 96 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml" #line 96 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(Url.Action(MVC.API.JobPreferences.UpdateOnCloseExpression())); Write(Url.Action(MVC.API.JobPreferences.UpdateOnDeviceReadyForReturnExpression()));
#line default #line default
#line hidden #line hidden
WriteLiteral("\',\r\n \'OnCloseExpression\'\r\n " + WriteLiteral(@"',
" );\r\n\r\n field.focus(function () {\r\n " + 'OnDeviceReadyForReturnExpression'
" fieldOriginalWidth = field.width();\r\n " + );
" fieldOriginalHeight = field.height();\r\n " +
" field.css(\'overflow\', \'visible\').animate({ width: field.par" + field.focus(function () {
"ent().width() - 42, height: 75 }, 200);\r\n }).blur" + fieldOriginalWidth = field.width();
"(function () {\r\n field.css(\'overflow\', \'hidde" + fieldOriginalHeight = field.height();
"n\').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200);\r\n " + field.css('overflow', 'visible').animate({ width: field.parent().width() - 42, height: 75 }, 200);
" }).change(function () {\r\n " + }).blur(function () {
" if (!!field.val()) {\r\n fieldR" + field.css('overflow', 'hidden').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200);
"emove.show();\r\n } else {\r\n " + }).change(function () {
" fieldRemove.hide();\r\n }\r" + if (!!field.val()) {
"\n }).attr(\'placeholder\', \'None\').attr(\'spellcheck" + fieldRemove.show();
"\', \'false\');\r\n\r\n fieldRemove.click(function () {\r" + } else {
"\n field.val(\'\').change();\r\n " + fieldRemove.hide();
" });\r\n\r\n if (!!field.val()) {\r\n " + }
" fieldRemove.show();\r\n " + }).attr('placeholder', 'None').attr('spellcheck', 'false');
" } else {\r\n fieldRemove.hide();\r\n " +
" }\r\n });\r\n <" + fieldRemove.click(function () {
"/script>\r\n"); field.val('').change();
});
if (!!field.val()) {
fieldRemove.show();
} else {
fieldRemove.hide();
}
});
</script>
");
#line 125 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml" #line 125 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
} }
else else
{ {
if (string.IsNullOrWhiteSpace(Model.OnCloseExpression)) if (string.IsNullOrWhiteSpace(Model.OnDeviceReadyForReturnExpression))
{ {
@@ -401,7 +411,7 @@ WriteLiteral(" ");
#line 135 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml" #line 135 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(Model.OnCloseExpression); Write(Model.OnDeviceReadyForReturnExpression);
#line default #line default
@@ -428,6 +438,194 @@ WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-fw fa-info-circle\""); WriteLiteral(" class=\"fa fa-fw fa-info-circle\"");
WriteLiteral(@"></i>This expression will be evaluated whenever a device is flagged as Ready For Return. If the expression has any output it will be added to the job log.
</p>
</div>
</td>
</tr>
<tr>
<th");
WriteLiteral(" style=\"width: 200px\"");
WriteLiteral(">On Close:</th>\r\n <td>\r\n");
#line 149 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
#line default
#line hidden
#line 149 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
if (canConfig)
{
#line default
#line hidden
#line 151 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(Html.EditorFor(model => model.OnCloseExpression));
#line default
#line hidden
#line 151 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
#line default
#line hidden
#line 152 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(AjaxHelpers.AjaxRemove());
#line default
#line hidden
#line 152 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
#line default
#line hidden
#line 153 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(AjaxHelpers.AjaxSave());
#line default
#line hidden
#line 153 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
#line default
#line hidden
#line 154 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(AjaxHelpers.AjaxLoader());
#line default
#line hidden
#line 154 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
#line default
#line hidden
WriteLiteral(" <script");
WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(@">
$(function () {
var field = $('#OnCloseExpression');
var fieldRemove = field.next('.ajaxRemove');
var fieldOriginalWidth, fieldOriginalHeight;
document.DiscoFunctions.PropertyChangeHelper(
field,
'None',
'");
#line 164 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(Url.Action(MVC.API.JobPreferences.UpdateOnCloseExpression()));
#line default
#line hidden
WriteLiteral("\',\r\n \'OnCloseExpression\'\r\n " +
" );\r\n\r\n field.focus(function () {\r\n " +
" fieldOriginalWidth = field.width();\r\n " +
" fieldOriginalHeight = field.height();\r\n " +
" field.css(\'overflow\', \'visible\').animate({ width: field.par" +
"ent().width() - 42, height: 75 }, 200);\r\n }).blur" +
"(function () {\r\n field.css(\'overflow\', \'hidde" +
"n\').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200);\r\n " +
" }).change(function () {\r\n " +
" if (!!field.val()) {\r\n fieldR" +
"emove.show();\r\n } else {\r\n " +
" fieldRemove.hide();\r\n }\r" +
"\n }).attr(\'placeholder\', \'None\').attr(\'spellcheck" +
"\', \'false\');\r\n\r\n fieldRemove.click(function () {\r" +
"\n field.val(\'\').change();\r\n " +
" });\r\n\r\n if (!!field.val()) {\r\n " +
" fieldRemove.show();\r\n " +
" } else {\r\n fieldRemove.hide();\r\n " +
" }\r\n });\r\n <" +
"/script>\r\n");
#line 193 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
}
else
{
if (string.IsNullOrWhiteSpace(Model.OnCloseExpression))
{
#line default
#line hidden
WriteLiteral(" <span");
WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">&lt;None Specified&gt;</span>\r\n");
#line 199 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" class=\"code\"");
WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 203 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
Write(Model.OnCloseExpression);
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n");
#line 205 "..\..\Areas\Config\Views\JobPreferences\Parts\Expressions.cshtml"
}
}
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" class=\"info-box\"");
WriteLiteral(">\r\n <p");
WriteLiteral(" class=\"fa-p\"");
WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-fw fa-info-circle\"");
WriteLiteral("></i>This expression will be evaluated whenever a job is closed. If the expressio" + WriteLiteral("></i>This expression will be evaluated whenever a job is closed. If the expressio" +
"n has any output it will be added to the job log.\r\n </p>\r\n " + "n has any output it will be added to the job log.\r\n </p>\r\n " +
" </div>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>"); " </div>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>");
+1 -2
View File
@@ -1553,8 +1553,7 @@ h1.Config_DocumentTemplates {
#Config_JobPref_Expressions { #Config_JobPref_Expressions {
margin-top: 10px; margin-top: 10px;
} }
#Config_JobPref_Expressions #OnCreateExpression, #Config_JobPref_Expressions textarea {
#Config_JobPref_Expressions #OnCloseExpression {
height: 16px; height: 16px;
min-height: 16px; min-height: 16px;
overflow: hidden; overflow: hidden;
+1 -1
View File
@@ -1807,7 +1807,7 @@ h1.Config_DocumentTemplates {
#Config_JobPref_Expressions { #Config_JobPref_Expressions {
margin-top: 10px; margin-top: 10px;
#OnCreateExpression, #OnCloseExpression { textarea {
height: 16px; height: 16px;
min-height: 16px; min-height: 16px;
overflow: hidden; overflow: hidden;
File diff suppressed because one or more lines are too long
@@ -103,6 +103,12 @@ namespace Disco.Web.Areas.API.Controllers
} }
[NonAction] [NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateOnDeviceReadyForReturnExpression()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateOnDeviceReadyForReturnExpression);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateOnCloseExpression() public virtual System.Web.Mvc.ActionResult UpdateOnCloseExpression()
{ {
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateOnCloseExpression); return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateOnCloseExpression);
@@ -130,6 +136,7 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string UpdateLocationList = "UpdateLocationList"; public readonly string UpdateLocationList = "UpdateLocationList";
public readonly string ImportLocationList = "ImportLocationList"; public readonly string ImportLocationList = "ImportLocationList";
public readonly string UpdateOnCreateExpression = "UpdateOnCreateExpression"; public readonly string UpdateOnCreateExpression = "UpdateOnCreateExpression";
public readonly string UpdateOnDeviceReadyForReturnExpression = "UpdateOnDeviceReadyForReturnExpression";
public readonly string UpdateOnCloseExpression = "UpdateOnCloseExpression"; public readonly string UpdateOnCloseExpression = "UpdateOnCloseExpression";
} }
@@ -143,6 +150,7 @@ namespace Disco.Web.Areas.API.Controllers
public const string UpdateLocationList = "UpdateLocationList"; public const string UpdateLocationList = "UpdateLocationList";
public const string ImportLocationList = "ImportLocationList"; public const string ImportLocationList = "ImportLocationList";
public const string UpdateOnCreateExpression = "UpdateOnCreateExpression"; public const string UpdateOnCreateExpression = "UpdateOnCreateExpression";
public const string UpdateOnDeviceReadyForReturnExpression = "UpdateOnDeviceReadyForReturnExpression";
public const string UpdateOnCloseExpression = "UpdateOnCloseExpression"; public const string UpdateOnCloseExpression = "UpdateOnCloseExpression";
} }
@@ -212,6 +220,15 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string OnCreateExpression = "OnCreateExpression"; public readonly string OnCreateExpression = "OnCreateExpression";
public readonly string redirect = "redirect"; public readonly string redirect = "redirect";
} }
static readonly ActionParamsClass_UpdateOnDeviceReadyForReturnExpression s_params_UpdateOnDeviceReadyForReturnExpression = new ActionParamsClass_UpdateOnDeviceReadyForReturnExpression();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateOnDeviceReadyForReturnExpression UpdateOnDeviceReadyForReturnExpressionParams { get { return s_params_UpdateOnDeviceReadyForReturnExpression; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateOnDeviceReadyForReturnExpression
{
public readonly string OnDeviceReadyForReturnExpression = "OnDeviceReadyForReturnExpression";
public readonly string redirect = "redirect";
}
static readonly ActionParamsClass_UpdateOnCloseExpression s_params_UpdateOnCloseExpression = new ActionParamsClass_UpdateOnCloseExpression(); static readonly ActionParamsClass_UpdateOnCloseExpression s_params_UpdateOnCloseExpression = new ActionParamsClass_UpdateOnCloseExpression();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateOnCloseExpression UpdateOnCloseExpressionParams { get { return s_params_UpdateOnCloseExpression; } } public ActionParamsClass_UpdateOnCloseExpression UpdateOnCloseExpressionParams { get { return s_params_UpdateOnCloseExpression; } }
@@ -333,6 +350,19 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo; return callInfo;
} }
[NonAction]
partial void UpdateOnDeviceReadyForReturnExpressionOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string OnDeviceReadyForReturnExpression, bool redirect);
[NonAction]
public override System.Web.Mvc.ActionResult UpdateOnDeviceReadyForReturnExpression(string OnDeviceReadyForReturnExpression, bool redirect)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateOnDeviceReadyForReturnExpression);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "OnDeviceReadyForReturnExpression", OnDeviceReadyForReturnExpression);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
UpdateOnDeviceReadyForReturnExpressionOverride(callInfo, OnDeviceReadyForReturnExpression, redirect);
return callInfo;
}
[NonAction] [NonAction]
partial void UpdateOnCloseExpressionOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string OnCloseExpression, bool redirect); partial void UpdateOnCloseExpressionOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string OnCloseExpression, bool redirect);