feature: job preferences - On Device Ready For Return expression
This commit is contained in:
@@ -64,12 +64,34 @@ namespace Disco.Services
|
||||
!j.DeviceReadyForReturn.HasValue && !j.DeviceReturnedDate.HasValue;
|
||||
}
|
||||
public static void OnDeviceReadyForReturn(this Job j, User Technician)
|
||||
public static void OnDeviceReadyForReturn(this Job j, DiscoDataContext Database, User Technician)
|
||||
{
|
||||
if (!j.CanDeviceReadyForReturn())
|
||||
throw new InvalidOperationException("Device Ready for Return was Denied");
|
||||
|
||||
j.DeviceReadyForReturn = DateTime.Now;
|
||||
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
|
||||
|
||||
|
||||
@@ -407,6 +407,21 @@ namespace Disco.Services
|
||||
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)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Database.DiscoConfiguration.JobPreferences.OnCloseExpression))
|
||||
|
||||
@@ -131,6 +131,16 @@ namespace Disco.Services.Jobs
|
||||
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)
|
||||
{
|
||||
return ExpressionCache.GetOrCreateSingleExpressions("Job_OnCloseExpression", () => Expression.TokenizeSingleDynamic(null, Database.DiscoConfiguration.JobPreferences.OnCloseExpression, 0));
|
||||
|
||||
Reference in New Issue
Block a user