chore: update pages
This commit is contained in:
parent
a866237dea
commit
49a069cef0
@ -19,7 +19,9 @@
|
|||||||
<RadzenLabel Text="Property" Component="Property" style="width: 100%" />
|
<RadzenLabel Text="Property" Component="Property" style="width: 100%" />
|
||||||
</RadzenColumn>
|
</RadzenColumn>
|
||||||
<RadzenColumn SizeMD="9">
|
<RadzenColumn SizeMD="9">
|
||||||
<RadzenTextBox style="display: block; width: 100%" @bind-Value="@coreRuleCriterion.Property" Name="Property" />
|
<RadzenAutoComplete Data="@Properties" @bind-Value="@coreRuleCriterion.Property"
|
||||||
|
Placeholder="Choose property or type your own" style="display: block; width: 100%" Name="Property"
|
||||||
|
/>
|
||||||
</RadzenColumn>
|
</RadzenColumn>
|
||||||
</RadzenRow>
|
</RadzenRow>
|
||||||
<RadzenRow style="margin-bottom: 1rem">
|
<RadzenRow style="margin-bottom: 1rem">
|
||||||
@ -27,7 +29,8 @@
|
|||||||
<RadzenLabel Text="Comparison" Component="Comparison" style="width: 100%" />
|
<RadzenLabel Text="Comparison" Component="Comparison" style="width: 100%" />
|
||||||
</RadzenColumn>
|
</RadzenColumn>
|
||||||
<RadzenColumn SizeMD="9">
|
<RadzenColumn SizeMD="9">
|
||||||
<RadzenTextBox style="display: block; width: 100%" @bind-Value="@coreRuleCriterion.Comparison" Name="Comparison" />
|
<RadzenDropDown TValue="string" Data="@Comparisons" @bind-Value="@coreRuleCriterion.Comparison" AllowClear=true
|
||||||
|
Placeholder="Choose comparer" style="display: block; width: 100%" Name="Comparison" />
|
||||||
</RadzenColumn>
|
</RadzenColumn>
|
||||||
</RadzenRow>
|
</RadzenRow>
|
||||||
<RadzenRow style="margin-bottom: 1rem">
|
<RadzenRow style="margin-bottom: 1rem">
|
||||||
|
@ -2,11 +2,13 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using DocumentFormat.OpenXml.CustomProperties;
|
||||||
using Microsoft.JSInterop;
|
using Microsoft.JSInterop;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Microsoft.AspNetCore.Components.Web;
|
using Microsoft.AspNetCore.Components.Web;
|
||||||
using Radzen;
|
using Radzen;
|
||||||
using Radzen.Blazor;
|
using Radzen.Blazor;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace ILoan.Rules.Web.Components.Pages
|
namespace ILoan.Rules.Web.Components.Pages
|
||||||
{
|
{
|
||||||
@ -32,8 +34,13 @@ namespace ILoan.Rules.Web.Components.Pages
|
|||||||
[Inject]
|
[Inject]
|
||||||
public RulesService RulesService { get; set; }
|
public RulesService RulesService { get; set; }
|
||||||
|
|
||||||
|
public List<string> Properties { get; set; }
|
||||||
|
public List<string> Comparisons { get; set; }
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
Properties = RulesService.GetProperties();
|
||||||
|
Comparisons = RulesService.GetComparisons();
|
||||||
|
|
||||||
coreRulesForRuleID = await RulesService.GetCoreRules();
|
coreRulesForRuleID = await RulesService.GetCoreRules();
|
||||||
}
|
}
|
||||||
@ -80,5 +87,10 @@ namespace ILoan.Rules.Web.Components.Pages
|
|||||||
}
|
}
|
||||||
await base.SetParametersAsync(parameters);
|
await base.SetParametersAsync(parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnChange(dynamic args)
|
||||||
|
{
|
||||||
|
coreRuleCriterion.Property = args;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -122,7 +122,11 @@ namespace ILoan.Rules.Web.Components.Pages
|
|||||||
protected async Task CoreRuleCriteriaAddButtonClick(MouseEventArgs args, ILoan.Rules.Web.Models.Rules.CoreRule data)
|
protected async Task CoreRuleCriteriaAddButtonClick(MouseEventArgs args, ILoan.Rules.Web.Models.Rules.CoreRule data)
|
||||||
{
|
{
|
||||||
|
|
||||||
var dialogResult = await DialogService.OpenAsync<AddCoreRuleCriterion>("Add CoreRuleCriteria", new Dictionary<string, object> { {"RuleID" , data.ID} });
|
var dialogResult = await DialogService.OpenAsync<AddCoreRuleCriterion>("Add CoreRuleCriteria", new Dictionary<string, object> { {"RuleID" , data.ID} }, new DialogOptions
|
||||||
|
{
|
||||||
|
Width = "70%"
|
||||||
|
});
|
||||||
|
|
||||||
await GetChildData(data);
|
await GetChildData(data);
|
||||||
await CoreRuleCriteriaDataGrid.Reload();
|
await CoreRuleCriteriaDataGrid.Reload();
|
||||||
|
|
||||||
|
@ -20,7 +20,8 @@
|
|||||||
<RadzenLabel Text="Property" Component="Property" style="width: 100%" />
|
<RadzenLabel Text="Property" Component="Property" style="width: 100%" />
|
||||||
</RadzenColumn>
|
</RadzenColumn>
|
||||||
<RadzenColumn SizeMD="9">
|
<RadzenColumn SizeMD="9">
|
||||||
<RadzenTextBox style="display: block; width: 100%" @bind-Value="@coreRuleCriterion.Property" Name="Property" />
|
<RadzenDropDown TValue="string" Data="@Properties" @bind-Value="@coreRuleCriterion.Property" AllowClear=true
|
||||||
|
Placeholder="Choose property" style="display: block; width: 100%" Name="Property" />
|
||||||
</RadzenColumn>
|
</RadzenColumn>
|
||||||
</RadzenRow>
|
</RadzenRow>
|
||||||
<RadzenRow style="margin-bottom: 1rem">
|
<RadzenRow style="margin-bottom: 1rem">
|
||||||
@ -28,7 +29,8 @@
|
|||||||
<RadzenLabel Text="Comparison" Component="Comparison" style="width: 100%" />
|
<RadzenLabel Text="Comparison" Component="Comparison" style="width: 100%" />
|
||||||
</RadzenColumn>
|
</RadzenColumn>
|
||||||
<RadzenColumn SizeMD="9">
|
<RadzenColumn SizeMD="9">
|
||||||
<RadzenTextBox style="display: block; width: 100%" @bind-Value="@coreRuleCriterion.Comparison" Name="Comparison" />
|
<RadzenDropDown TValue="string" Data="@Comparisons" @bind-Value="@coreRuleCriterion.Comparison" AllowClear=true
|
||||||
|
Placeholder="Choose comparer" style="display: block; width: 100%" Name="Comparison" />
|
||||||
</RadzenColumn>
|
</RadzenColumn>
|
||||||
</RadzenRow>
|
</RadzenRow>
|
||||||
<RadzenRow style="margin-bottom: 1rem">
|
<RadzenRow style="margin-bottom: 1rem">
|
||||||
|
@ -36,8 +36,14 @@ namespace ILoan.Rules.Web.Components.Pages
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public int ID { get; set; }
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
public List<string> Properties { get; set; }
|
||||||
|
public List<string> Comparisons { get; set; }
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
Properties = RulesService.GetProperties();
|
||||||
|
Comparisons = RulesService.GetComparisons();
|
||||||
|
|
||||||
coreRuleCriterion = await RulesService.GetCoreRuleCriterionById(ID);
|
coreRuleCriterion = await RulesService.GetCoreRuleCriterionById(ID);
|
||||||
|
|
||||||
coreRulesForRuleID = await RulesService.GetCoreRules();
|
coreRulesForRuleID = await RulesService.GetCoreRules();
|
||||||
|
16
src/iLoan.Rules.Web/Extensions/EnumExtensions.cs
Normal file
16
src/iLoan.Rules.Web/Extensions/EnumExtensions.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
namespace ILoan.Rules.Web.Extensions;
|
||||||
|
|
||||||
|
public static class EnumExtensions
|
||||||
|
{
|
||||||
|
public static List<string> ToList<T>() where T : Enum
|
||||||
|
{
|
||||||
|
var names = new List<string>();
|
||||||
|
|
||||||
|
foreach (var name in Enum.GetNames(typeof(T)))
|
||||||
|
{
|
||||||
|
names.Add(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<NoWarn>CS0168,CS1998,BL9993,CS0649,CS0436,0436</NoWarn>
|
<NoWarn>CS0168,CS1998,BL9993,CS0649,CS0436,0436</NoWarn>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
78
src/iLoan.Rules.Web/Models/Enums/RuleComparison.cs
Normal file
78
src/iLoan.Rules.Web/Models/Enums/RuleComparison.cs
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace ILoan.Rules.Web.Models.Enums;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The comparison to apply to the rule value.
|
||||||
|
/// </summary>
|
||||||
|
[Description("The comparison to apply to the rule value")]
|
||||||
|
public enum RuleComparison
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should contain a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "contains")]
|
||||||
|
Contains,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should not contain a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "does not contain")]
|
||||||
|
DoesNotContain,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should start with a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "starts with")]
|
||||||
|
StartsWith,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should not start with a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "does not start with")]
|
||||||
|
DoesNotStartWith,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should be lower than a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "lower than")]
|
||||||
|
LowerThan,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should be lower than or equal to a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "lower than or equal to")]
|
||||||
|
LowerThanOrEqualTo,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should be greater than a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "greater than")]
|
||||||
|
GreaterThan,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should be greater than or equal to a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "greater than or equal to")]
|
||||||
|
GreaterThanOrEqualTo,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should be equal to a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "is")]
|
||||||
|
Is,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule should not be equal to a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "is not")]
|
||||||
|
IsNot,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The rule value should be similar to a value.
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "similar to")]
|
||||||
|
SimilarTo
|
||||||
|
}
|
||||||
|
|
@ -28,9 +28,13 @@ public class RuleFileGeneratorService
|
|||||||
if (!Directory.Exists(_root)) Directory.CreateDirectory(_root);
|
if (!Directory.Exists(_root)) Directory.CreateDirectory(_root);
|
||||||
}
|
}
|
||||||
|
|
||||||
var rules = await _context.CoreRules.Where(rule => rule.ID >= _startRuleId).ToListAsync();
|
var rules = await _context.CoreRules
|
||||||
|
.Include(r => r.CoreRuleCriteria)
|
||||||
|
.Include(r => r.CoreRuleCriteriaOperators)
|
||||||
|
.Where(rule => rule.ID >= _startRuleId)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
foreach (var rule in rules.OrderBy(x =>x.ID))
|
foreach (var rule in rules.OrderBy(x => x.ID))
|
||||||
{
|
{
|
||||||
var fileName = $"V2.{_startSeq:000}__{rule.WorkItemId}_Rules_{rule.ID}_{rule.Title}.sql";
|
var fileName = $"V2.{_startSeq:000}__{rule.WorkItemId}_Rules_{rule.ID}_{rule.Title}.sql";
|
||||||
|
|
||||||
@ -40,7 +44,6 @@ public class RuleFileGeneratorService
|
|||||||
}
|
}
|
||||||
|
|
||||||
var sql = GenerateSqlStatement(rule);
|
var sql = GenerateSqlStatement(rule);
|
||||||
// Simulate writing to a file (you can replace this with actual file writing)
|
|
||||||
Console.WriteLine($"Generating file: {fileName}");
|
Console.WriteLine($"Generating file: {fileName}");
|
||||||
await File.WriteAllTextAsync(Path.Combine(_root, fileName), sql, Encoding.UTF8);
|
await File.WriteAllTextAsync(Path.Combine(_root, fileName), sql, Encoding.UTF8);
|
||||||
_startSeq++;
|
_startSeq++;
|
||||||
@ -49,8 +52,12 @@ public class RuleFileGeneratorService
|
|||||||
|
|
||||||
private string GenerateSqlStatement(CoreRule rule)
|
private string GenerateSqlStatement(CoreRule rule)
|
||||||
{
|
{
|
||||||
return $@"
|
var sqlBuilder = new StringBuilder();
|
||||||
-- SQL statement to insert or update the rule
|
|
||||||
|
if (rule.Update == 0)
|
||||||
|
{
|
||||||
|
// SQL for inserting CoreRule
|
||||||
|
sqlBuilder.AppendLine($@"
|
||||||
INSERT INTO core.""Core_Rules"" (
|
INSERT INTO core.""Core_Rules"" (
|
||||||
""ID"", ""RuleName"", ""Source"", ""DefaultThreshold"", ""Blocked"", ""TriggersManualReview"",
|
""ID"", ""RuleName"", ""Source"", ""DefaultThreshold"", ""Blocked"", ""TriggersManualReview"",
|
||||||
""SuggestedResolution"", ""TriggerReason"", ""UseLastRecord"", ""ApplicantType"", ""FilterOnClickthrough"",
|
""SuggestedResolution"", ""TriggerReason"", ""UseLastRecord"", ""ApplicantType"", ""FilterOnClickthrough"",
|
||||||
@ -65,11 +72,99 @@ INSERT INTO core.""Core_Rules"" (
|
|||||||
'{EscapeSingleQuote(rule.DutchSuggestedResolution)}', '{EscapeSingleQuote(rule.DutchFilterOnClickthrough)}',
|
'{EscapeSingleQuote(rule.DutchSuggestedResolution)}', '{EscapeSingleQuote(rule.DutchFilterOnClickthrough)}',
|
||||||
'{EscapeSingleQuote(rule.RuleExplanation)}', '{EscapeSingleQuote(rule.DutchRuleExplanation)}'
|
'{EscapeSingleQuote(rule.RuleExplanation)}', '{EscapeSingleQuote(rule.DutchRuleExplanation)}'
|
||||||
);
|
);
|
||||||
";
|
");
|
||||||
|
|
||||||
|
// SQL for inserting CoreRuleCriteria
|
||||||
|
foreach (var criterion in rule.CoreRuleCriteria)
|
||||||
|
{
|
||||||
|
sqlBuilder.AppendLine($@"
|
||||||
|
INSERT INTO core.""Core_RuleCriteria"" (
|
||||||
|
""ID"", ""RuleID"", ""Property"", ""Comparison"", ""Value"", ""ValueIsProperty"", ""ReturnCount"", ""IsThresholdCriterium""
|
||||||
|
) VALUES (
|
||||||
|
{criterion.ID}, {criterion.RuleID}, '{EscapeSingleQuote(criterion.Property)}', '{EscapeSingleQuote(criterion.Comparison)}', '{EscapeSingleQuote(criterion.Value)}',
|
||||||
|
{criterion.ValueIsProperty?.ToString().ToUpper() ?? "NULL"}, {criterion.ReturnCount?.ToString().ToUpper() ?? "NULL"}, {criterion.IsThresholdCriterium?.ToString().ToUpper() ?? "NULL"}
|
||||||
|
);
|
||||||
|
");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string? EscapeSingleQuote(string value)
|
// SQL for inserting CoreRuleCriteriaOperator
|
||||||
|
foreach (var coreRuleCriteriaOperator in rule.CoreRuleCriteriaOperators)
|
||||||
|
{
|
||||||
|
sqlBuilder.AppendLine($@"
|
||||||
|
INSERT INTO core.""Core_RuleCriteriaOperator"" (
|
||||||
|
""ID"", ""RuleID"", ""Operator""
|
||||||
|
) VALUES (
|
||||||
|
{coreRuleCriteriaOperator.ID}, {coreRuleCriteriaOperator.RuleID}, '{EscapeSingleQuote(coreRuleCriteriaOperator.Operator1)}'
|
||||||
|
);
|
||||||
|
");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// SQL for updating CoreRule
|
||||||
|
sqlBuilder.AppendLine($@"
|
||||||
|
UPDATE core.""Core_Rules""
|
||||||
|
SET
|
||||||
|
""RuleName"" = '{EscapeSingleQuote(rule.RuleName)}',
|
||||||
|
""Source"" = '{EscapeSingleQuote(rule.Source)}',
|
||||||
|
""DefaultThreshold"" = {rule.DefaultThreshold?.ToString() ?? "NULL"},
|
||||||
|
""Blocked"" = {rule.Blocked.ToString().ToUpper()},
|
||||||
|
""TriggersManualReview"" = {rule.TriggersManualReview.ToString().ToUpper()},
|
||||||
|
""SuggestedResolution"" = '{EscapeSingleQuote(rule.SuggestedResolution)}',
|
||||||
|
""TriggerReason"" = '{EscapeSingleQuote(rule.TriggerReason)}',
|
||||||
|
""UseLastRecord"" = {rule.UseLastRecord?.ToString().ToUpper() ?? "NULL"},
|
||||||
|
""ApplicantType"" = '{EscapeSingleQuote(rule.ApplicantType)}',
|
||||||
|
""FilterOnClickthrough"" = '{EscapeSingleQuote(rule.FilterOnClickthrough)}',
|
||||||
|
""RunBeforeStatus"" = '{EscapeSingleQuote(rule.RunBeforeStatus)}',
|
||||||
|
""DisplaySection"" = '{EscapeSingleQuote(rule.DisplaySection)}',
|
||||||
|
""WarningField"" = '{EscapeSingleQuote(rule.WarningField)}',
|
||||||
|
""DutchRuleName"" = '{EscapeSingleQuote(rule.DutchRuleName)}',
|
||||||
|
""DutchTriggerReason"" = '{EscapeSingleQuote(rule.DutchTriggerReason)}',
|
||||||
|
""DutchSuggestedResolution"" = '{EscapeSingleQuote(rule.DutchSuggestedResolution)}',
|
||||||
|
""DutchFilterOnClickthrough"" = '{EscapeSingleQuote(rule.DutchFilterOnClickthrough)}',
|
||||||
|
""RuleExplanation"" = '{EscapeSingleQuote(rule.RuleExplanation)}',
|
||||||
|
""DutchRuleExplanation"" = '{EscapeSingleQuote(rule.DutchRuleExplanation)}'
|
||||||
|
WHERE ""ID"" = {rule.ID};
|
||||||
|
");
|
||||||
|
|
||||||
|
// SQL for updating CoreRuleCriteria
|
||||||
|
foreach (var criterion in rule.CoreRuleCriteria)
|
||||||
|
{
|
||||||
|
sqlBuilder.AppendLine($@"
|
||||||
|
UPDATE core.""Core_RuleCriteria""
|
||||||
|
SET
|
||||||
|
""Property"" = '{EscapeSingleQuote(criterion.Property)}',
|
||||||
|
""Comparison"" = '{EscapeSingleQuote(criterion.Comparison)}',
|
||||||
|
""Value"" = '{EscapeSingleQuote(criterion.Value)}',
|
||||||
|
""ValueIsProperty"" = {criterion.ValueIsProperty?.ToString().ToUpper() ?? "NULL"},
|
||||||
|
""ReturnCount"" = {criterion.ReturnCount?.ToString().ToUpper() ?? "NULL"},
|
||||||
|
""IsThresholdCriterium"" = {criterion.IsThresholdCriterium?.ToString().ToUpper() ?? "NULL"}
|
||||||
|
WHERE ""ID"" = {criterion.ID};
|
||||||
|
");
|
||||||
|
}
|
||||||
|
|
||||||
|
// SQL for updating CoreRuleCriteriaOperator
|
||||||
|
foreach (var coreRuleCriteriaOperator in rule.CoreRuleCriteriaOperators)
|
||||||
|
{
|
||||||
|
sqlBuilder.AppendLine($@"
|
||||||
|
UPDATE core.""Core_RuleCriteriaOperator""
|
||||||
|
SET
|
||||||
|
""Operator"" = '{EscapeSingleQuote(coreRuleCriteriaOperator.Operator1)}'
|
||||||
|
WHERE ""ID"" = {coreRuleCriteriaOperator.ID};
|
||||||
|
");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sqlBuilder.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string EscapeSingleQuote(string value)
|
||||||
{
|
{
|
||||||
return value?.Replace("'", "''");
|
return value?.Replace("'", "''");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Usage example:
|
||||||
|
// var context = new RulesContext();
|
||||||
|
// var generator = new RuleFileGeneratorService(context, configuration);
|
||||||
|
// await generator.GenerateRuleFilesAsync();
|
||||||
|
@ -10,6 +10,9 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
using Radzen;
|
using Radzen;
|
||||||
|
|
||||||
using ILoan.Rules.Web.Data;
|
using ILoan.Rules.Web.Data;
|
||||||
|
using DocumentFormat.OpenXml.InkML;
|
||||||
|
using ILoan.Rules.Web.Models.Enums;
|
||||||
|
using ILoan.Rules.Web.Extensions;
|
||||||
|
|
||||||
namespace ILoan.Rules.Web
|
namespace ILoan.Rules.Web
|
||||||
{
|
{
|
||||||
@ -556,5 +559,20 @@ namespace ILoan.Rules.Web
|
|||||||
|
|
||||||
return itemToDelete;
|
return itemToDelete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get properties from CoreRuleCriterion as a disctinct list for type ahead
|
||||||
|
public List<string> GetProperties()
|
||||||
|
{
|
||||||
|
var properties = context.CoreRuleCriteria.Select(c => c.Property).Distinct().OrderBy(x => x).ToList();
|
||||||
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<string> GetComparisons()
|
||||||
|
{
|
||||||
|
return EnumExtensions.ToList<RuleComparison>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user