2024-06-19 07:43:09 +00:00
|
|
|
namespace ILoan.Rules.Web.Services;
|
|
|
|
|
|
|
|
public partial class RulesService(IDbContextFactory<RulesContext> factory, NavigationManager navigationManager)
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
public void ApplyQuery<T>(ref IQueryable<T> items, Query query = null)
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
if (query != null)
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
if (!string.IsNullOrEmpty(query.Filter))
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
if (query.FilterParameters != null)
|
|
|
|
items = items.Where(query.Filter, query.FilterParameters);
|
|
|
|
else
|
|
|
|
items = items.Where(query.Filter);
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (!string.IsNullOrEmpty(query.OrderBy)) items = items.OrderBy(query.OrderBy);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (query.Skip.HasValue) items = items.Skip(query.Skip.Value);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (query.Top.HasValue) items = items.Take(query.Top.Value);
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
2024-06-19 07:43:09 +00:00
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriteriaOperatorsRead(ref IQueryable<CoreRuleCriteriaOperator> items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<IQueryable<CoreRuleCriteriaOperator>> GetCoreRuleCriteriaOperators(Query query = null)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var items = context.CoreRuleCriteriaOperators.AsQueryable();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
items = items.Include(i => i.CoreRule);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (query != null)
|
|
|
|
{
|
|
|
|
if (!string.IsNullOrEmpty(query.Expand))
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
var propertiesToExpand = query.Expand.Split(',');
|
|
|
|
foreach (var p in propertiesToExpand) items = items.Include(p.Trim());
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
ApplyQuery(ref items, query);
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRuleCriteriaOperatorsRead(ref items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return await Task.FromResult(items);
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriteriaOperatorGet(CoreRuleCriteriaOperator item);
|
|
|
|
partial void OnGetCoreRuleCriteriaOperatorById(ref IQueryable<CoreRuleCriteriaOperator> items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriteriaOperator> GetCoreRuleCriteriaOperatorById(int id)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var items = context.CoreRuleCriteriaOperators
|
|
|
|
.AsNoTracking()
|
|
|
|
.Where(i => i.ID == id);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
items = items.Include(i => i.CoreRule);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnGetCoreRuleCriteriaOperatorById(ref items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var itemToReturn = items.FirstOrDefault();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRuleCriteriaOperatorGet(itemToReturn);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return await Task.FromResult(itemToReturn);
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriteriaOperatorCreated(CoreRuleCriteriaOperator item);
|
|
|
|
partial void OnAfterCoreRuleCriteriaOperatorCreated(CoreRuleCriteriaOperator item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriteriaOperator> CreateCoreRuleCriteriaOperator(
|
|
|
|
CoreRuleCriteriaOperator corerulecriteriaoperator)
|
|
|
|
{
|
|
|
|
OnCoreRuleCriteriaOperatorCreated(corerulecriteriaoperator);
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var existingItem = context.CoreRuleCriteriaOperators
|
|
|
|
.FirstOrDefault(i => i.ID == corerulecriteriaoperator.ID);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (existingItem != null) throw new Exception("Item already available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
try
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
context.CoreRuleCriteriaOperators.Add(corerulecriteriaoperator);
|
|
|
|
await context.SaveChangesAsync();
|
|
|
|
}
|
|
|
|
catch
|
|
|
|
{
|
|
|
|
context.Entry(corerulecriteriaoperator).State = EntityState.Detached;
|
|
|
|
throw;
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleCriteriaOperatorCreated(corerulecriteriaoperator);
|
|
|
|
|
|
|
|
return corerulecriteriaoperator;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriteriaOperator> CancelCoreRuleCriteriaOperatorChanges(CoreRuleCriteriaOperator item)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var entityToCancel = context.Entry(item);
|
|
|
|
if (entityToCancel.State == EntityState.Modified)
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
entityToCancel.CurrentValues.SetValues(entityToCancel.OriginalValues);
|
|
|
|
entityToCancel.State = EntityState.Unchanged;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return item;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriteriaOperatorUpdated(CoreRuleCriteriaOperator item);
|
|
|
|
partial void OnAfterCoreRuleCriteriaOperatorUpdated(CoreRuleCriteriaOperator item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriteriaOperator> UpdateCoreRuleCriteriaOperator(int id,
|
|
|
|
CoreRuleCriteriaOperator corerulecriteriaoperator)
|
|
|
|
{
|
|
|
|
OnCoreRuleCriteriaOperatorUpdated(corerulecriteriaoperator);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var itemToUpdate = context.CoreRuleCriteriaOperators
|
|
|
|
.FirstOrDefault(i => i.ID == corerulecriteriaoperator.ID);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (itemToUpdate == null) throw new Exception("Item no longer available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var entryToUpdate = context.Entry(itemToUpdate);
|
|
|
|
entryToUpdate.CurrentValues.SetValues(corerulecriteriaoperator);
|
|
|
|
entryToUpdate.State = EntityState.Modified;
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
await context.SaveChangesAsync();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleCriteriaOperatorUpdated(corerulecriteriaoperator);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return corerulecriteriaoperator;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriteriaOperatorDeleted(CoreRuleCriteriaOperator item);
|
|
|
|
partial void OnAfterCoreRuleCriteriaOperatorDeleted(CoreRuleCriteriaOperator item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriteriaOperator> DeleteCoreRuleCriteriaOperator(int id)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var itemToDelete = context.CoreRuleCriteriaOperators
|
|
|
|
.FirstOrDefault(i => i.ID == id);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (itemToDelete == null) throw new Exception("Item no longer available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRuleCriteriaOperatorDeleted(itemToDelete);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
|
|
|
|
context.CoreRuleCriteriaOperators.Remove(itemToDelete);
|
|
|
|
|
|
|
|
try
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
await context.SaveChangesAsync();
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
2024-06-19 07:43:09 +00:00
|
|
|
catch
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
context.Entry(itemToDelete).State = EntityState.Unchanged;
|
|
|
|
throw;
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleCriteriaOperatorDeleted(itemToDelete);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return itemToDelete;
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task ExportCoreRulesToExcel(Query query = null, string fileName = null)
|
|
|
|
{
|
|
|
|
navigationManager.NavigateTo(
|
|
|
|
query != null
|
|
|
|
? query.ToUrl(
|
|
|
|
$"export/rules/corerules/excel(fileName='{(!string.IsNullOrEmpty(fileName) ? UrlEncoder.Default.Encode(fileName) : "Export")}')")
|
|
|
|
: $"export/rules/corerules/excel(fileName='{(!string.IsNullOrEmpty(fileName) ? UrlEncoder.Default.Encode(fileName) : "Export")}')",
|
|
|
|
true);
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task ExportCoreRulesToCSV(Query query = null, string fileName = null)
|
|
|
|
{
|
|
|
|
navigationManager.NavigateTo(
|
|
|
|
query != null
|
|
|
|
? query.ToUrl(
|
|
|
|
$"export/rules/corerules/csv(fileName='{(!string.IsNullOrEmpty(fileName) ? UrlEncoder.Default.Encode(fileName) : "Export")}')")
|
|
|
|
: $"export/rules/corerules/csv(fileName='{(!string.IsNullOrEmpty(fileName) ? UrlEncoder.Default.Encode(fileName) : "Export")}')",
|
|
|
|
true);
|
|
|
|
}
|
|
|
|
|
|
|
|
partial void OnCoreRulesRead(ref IQueryable<CoreRule> items);
|
|
|
|
|
|
|
|
public async Task<IQueryable<CoreRule>> GetCoreRules(Query query = null)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
2024-06-20 07:48:12 +00:00
|
|
|
var items = context.CoreRules.OrderBy(r=>r.ID).AsQueryable();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (query != null)
|
|
|
|
{
|
|
|
|
if (!string.IsNullOrEmpty(query.Expand))
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
var propertiesToExpand = query.Expand.Split(',');
|
|
|
|
foreach (var p in propertiesToExpand) items = items.Include(p.Trim());
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
ApplyQuery(ref items, query);
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRulesRead(ref items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return await Task.FromResult(items);
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleGet(CoreRule item);
|
|
|
|
partial void OnGetCoreRuleById(ref IQueryable<CoreRule> items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRule> GetCoreRuleById(int id)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var items = context.CoreRules
|
|
|
|
.AsNoTracking()
|
|
|
|
.Where(i => i.ID == id);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnGetCoreRuleById(ref items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var itemToReturn = items.FirstOrDefault();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRuleGet(itemToReturn);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return await Task.FromResult(itemToReturn);
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCreated(CoreRule item);
|
|
|
|
partial void OnAfterCoreRuleCreated(CoreRule item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRule> CreateCoreRule(CoreRule corerule)
|
|
|
|
{
|
|
|
|
OnCoreRuleCreated(corerule);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var existingItem = context.CoreRules
|
|
|
|
.FirstOrDefault(i => i.ID == corerule.ID);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (existingItem != null) throw new Exception("Item already available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
try
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
context.CoreRules.Add(corerule);
|
|
|
|
await context.SaveChangesAsync();
|
|
|
|
}
|
|
|
|
catch
|
|
|
|
{
|
|
|
|
context.Entry(corerule).State = EntityState.Detached;
|
|
|
|
throw;
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleCreated(corerule);
|
|
|
|
|
|
|
|
return corerule;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRule> CancelCoreRuleChanges(CoreRule item)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var entityToCancel = context.Entry(item);
|
|
|
|
if (entityToCancel.State == EntityState.Modified)
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
entityToCancel.CurrentValues.SetValues(entityToCancel.OriginalValues);
|
|
|
|
entityToCancel.State = EntityState.Unchanged;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return item;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleUpdated(CoreRule item);
|
|
|
|
partial void OnAfterCoreRuleUpdated(CoreRule item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRule> UpdateCoreRule(int id, CoreRule corerule)
|
|
|
|
{
|
|
|
|
OnCoreRuleUpdated(corerule);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var itemToUpdate = context.CoreRules
|
|
|
|
.FirstOrDefault(i => i.ID == corerule.ID);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (itemToUpdate == null) throw new Exception("Item no longer available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var entryToUpdate = context.Entry(itemToUpdate);
|
|
|
|
entryToUpdate.CurrentValues.SetValues(corerule);
|
|
|
|
entryToUpdate.State = EntityState.Modified;
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
await context.SaveChangesAsync();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleUpdated(corerule);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return corerule;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleDeleted(CoreRule item);
|
|
|
|
partial void OnAfterCoreRuleDeleted(CoreRule item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRule> DeleteCoreRule(int id)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var itemToDelete = context.CoreRules
|
|
|
|
.Where(i => i.ID == id)
|
|
|
|
.Include(i => i.CoreRuleCriteria)
|
|
|
|
.Include(i => i.CoreRuleCriteriaOperators)
|
|
|
|
.FirstOrDefault();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (itemToDelete == null) throw new Exception("Item no longer available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRuleDeleted(itemToDelete);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
|
|
|
|
context.CoreRules.Remove(itemToDelete);
|
|
|
|
|
|
|
|
try
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
await context.SaveChangesAsync();
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
2024-06-19 07:43:09 +00:00
|
|
|
catch
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
context.Entry(itemToDelete).State = EntityState.Unchanged;
|
|
|
|
throw;
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleDeleted(itemToDelete);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return itemToDelete;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task ExportCoreRuleCriteriaToExcel(Query query = null, string fileName = null)
|
|
|
|
{
|
|
|
|
navigationManager.NavigateTo(
|
|
|
|
query != null
|
|
|
|
? query.ToUrl(
|
|
|
|
$"export/rules/corerulecriteria/excel(fileName='{(!string.IsNullOrEmpty(fileName) ? UrlEncoder.Default.Encode(fileName) : "Export")}')")
|
|
|
|
: $"export/rules/corerulecriteria/excel(fileName='{(!string.IsNullOrEmpty(fileName) ? UrlEncoder.Default.Encode(fileName) : "Export")}')",
|
|
|
|
true);
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task ExportCoreRuleCriteriaToCSV(Query query = null, string fileName = null)
|
|
|
|
{
|
|
|
|
navigationManager.NavigateTo(
|
|
|
|
query != null
|
|
|
|
? query.ToUrl(
|
|
|
|
$"export/rules/corerulecriteria/csv(fileName='{(!string.IsNullOrEmpty(fileName) ? UrlEncoder.Default.Encode(fileName) : "Export")}')")
|
|
|
|
: $"export/rules/corerulecriteria/csv(fileName='{(!string.IsNullOrEmpty(fileName) ? UrlEncoder.Default.Encode(fileName) : "Export")}')",
|
|
|
|
true);
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriteriaRead(ref IQueryable<CoreRuleCriterion> items);
|
|
|
|
|
|
|
|
public async Task<IQueryable<CoreRuleCriterion>> GetCoreRuleCriteria(Query query = null)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var items = context.CoreRuleCriteria.AsQueryable();
|
|
|
|
|
|
|
|
items = items.Include(i => i.CoreRule);
|
|
|
|
|
|
|
|
if (query != null)
|
|
|
|
{
|
|
|
|
if (!string.IsNullOrEmpty(query.Expand))
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
var propertiesToExpand = query.Expand.Split(',');
|
|
|
|
foreach (var p in propertiesToExpand) items = items.Include(p.Trim());
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
ApplyQuery(ref items, query);
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRuleCriteriaRead(ref items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return await Task.FromResult(items);
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriterionGet(CoreRuleCriterion item);
|
|
|
|
partial void OnGetCoreRuleCriterionById(ref IQueryable<CoreRuleCriterion> items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriterion> GetCoreRuleCriterionById(int id)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var items = context.CoreRuleCriteria
|
|
|
|
.AsNoTracking()
|
|
|
|
.Where(i => i.ID == id);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
items = items.Include(i => i.CoreRule);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnGetCoreRuleCriterionById(ref items);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var itemToReturn = items.FirstOrDefault();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRuleCriterionGet(itemToReturn);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return await Task.FromResult(itemToReturn);
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriterionCreated(CoreRuleCriterion item);
|
|
|
|
partial void OnAfterCoreRuleCriterionCreated(CoreRuleCriterion item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriterion> CreateCoreRuleCriterion(CoreRuleCriterion corerulecriterion)
|
|
|
|
{
|
|
|
|
OnCoreRuleCriterionCreated(corerulecriterion);
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var existingItem = context.CoreRuleCriteria
|
|
|
|
.FirstOrDefault(i => i.ID == corerulecriterion.ID);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (existingItem != null) throw new Exception("Item already available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
try
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
context.CoreRuleCriteria.Add(corerulecriterion);
|
|
|
|
await context.SaveChangesAsync();
|
|
|
|
}
|
|
|
|
catch
|
|
|
|
{
|
|
|
|
context.Entry(corerulecriterion).State = EntityState.Detached;
|
|
|
|
throw;
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleCriterionCreated(corerulecriterion);
|
|
|
|
|
|
|
|
return corerulecriterion;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriterion> CancelCoreRuleCriterionChanges(CoreRuleCriterion item)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var entityToCancel = context.Entry(item);
|
|
|
|
if (entityToCancel.State == EntityState.Modified)
|
2024-05-27 11:59:51 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
entityToCancel.CurrentValues.SetValues(entityToCancel.OriginalValues);
|
|
|
|
entityToCancel.State = EntityState.Unchanged;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return item;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriterionUpdated(CoreRuleCriterion item);
|
|
|
|
partial void OnAfterCoreRuleCriterionUpdated(CoreRuleCriterion item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriterion> UpdateCoreRuleCriterion(int id, CoreRuleCriterion corerulecriterion)
|
|
|
|
{
|
|
|
|
OnCoreRuleCriterionUpdated(corerulecriterion);
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var itemToUpdate = context.CoreRuleCriteria
|
|
|
|
.FirstOrDefault(i => i.ID == corerulecriterion.ID);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (itemToUpdate == null) throw new Exception("Item no longer available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
var entryToUpdate = context.Entry(itemToUpdate);
|
|
|
|
entryToUpdate.CurrentValues.SetValues(corerulecriterion);
|
|
|
|
entryToUpdate.State = EntityState.Modified;
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
await context.SaveChangesAsync();
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleCriterionUpdated(corerulecriterion);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
return corerulecriterion;
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
partial void OnCoreRuleCriterionDeleted(CoreRuleCriterion item);
|
|
|
|
partial void OnAfterCoreRuleCriterionDeleted(CoreRuleCriterion item);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public async Task<CoreRuleCriterion> DeleteCoreRuleCriterion(int id)
|
|
|
|
{
|
|
|
|
var context = await factory.CreateDbContextAsync();
|
|
|
|
var itemToDelete = context.CoreRuleCriteria
|
|
|
|
.FirstOrDefault(i => i.ID == id);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
if (itemToDelete == null) throw new Exception("Item no longer available");
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnCoreRuleCriterionDeleted(itemToDelete);
|
2024-05-27 11:59:51 +00:00
|
|
|
|
2024-05-28 08:23:17 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
context.CoreRuleCriteria.Remove(itemToDelete);
|
|
|
|
|
|
|
|
try
|
2024-05-28 08:23:17 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
await context.SaveChangesAsync();
|
2024-05-28 08:23:17 +00:00
|
|
|
}
|
2024-06-19 07:43:09 +00:00
|
|
|
catch
|
2024-05-28 08:23:17 +00:00
|
|
|
{
|
2024-06-19 07:43:09 +00:00
|
|
|
context.Entry(itemToDelete).State = EntityState.Unchanged;
|
|
|
|
throw;
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|
2024-05-28 08:23:17 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
OnAfterCoreRuleCriterionDeleted(itemToDelete);
|
|
|
|
|
|
|
|
return itemToDelete;
|
|
|
|
}
|
2024-05-28 08:23:17 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
// get properties from CoreRuleCriterion as a disctinct list for type ahead
|
|
|
|
public List<string> GetProperties()
|
|
|
|
{
|
|
|
|
var context = factory.CreateDbContext();
|
|
|
|
var properties = context.CoreRuleCriteria.Select(c => c.Property).Distinct().OrderBy(x => x).ToList();
|
|
|
|
return properties;
|
|
|
|
}
|
2024-05-28 08:23:17 +00:00
|
|
|
|
2024-06-19 07:43:09 +00:00
|
|
|
public List<string> GetComparisons()
|
|
|
|
{
|
|
|
|
return EnumExtensions.ToList<RuleComparison>();
|
|
|
|
}
|
2024-05-27 11:59:51 +00:00
|
|
|
}
|