77 lines
2.3 KiB
C#
77 lines
2.3 KiB
C#
using Gremlin_BlazorServer.Data.DBClasses;
|
|
using Gremlin_BlazorServer.Data.EntityClasses;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System;
|
|
using System.Linq;
|
|
|
|
namespace Gremlin_BlazorServer.Services;
|
|
|
|
public class GenericController {
|
|
private readonly GremlinDb gremlinDb = new();
|
|
|
|
public IList<TResult> GetAll<TResult>() where TResult : class, IMetadata {
|
|
return gremlinDb.Set<TResult>().ToList();
|
|
}
|
|
|
|
public IList<TResult> GetAll<TResult>(string include) where TResult : class, IMetadata {
|
|
return gremlinDb.Set<TResult>().Include(include).ToList();
|
|
}
|
|
|
|
public IList<TResult> GetAll<TResult>(Predicate<TResult> search) where TResult : class, IMetadata {
|
|
return gremlinDb.Set<TResult>().AsEnumerable().Where(t => search(t)).ToList();
|
|
}
|
|
|
|
public IList<TResult> GetAll<TResult>(Predicate<TResult> search, string include) where TResult : class, IMetadata {
|
|
return gremlinDb.Set<TResult>().Include(include).AsEnumerable().Where(t => search(t)).ToList();
|
|
}
|
|
|
|
public TResult? Get<TResult>(Predicate<TResult> search) where TResult : class, IMetadata {
|
|
return gremlinDb.Set<TResult>().AsEnumerable().FirstOrDefault(t => search(t));
|
|
}
|
|
|
|
public TResult? Get<TResult>(Predicate<TResult> search, string include) where TResult : class, IMetadata {
|
|
return gremlinDb.Set<TResult>().Include(include).AsEnumerable().FirstOrDefault(t => search(t));
|
|
}
|
|
|
|
public TResult GetLast<TResult>() where TResult : class, IMetadata {
|
|
return gremlinDb.Set<TResult>().AsEnumerable().Last();
|
|
}
|
|
|
|
public bool Insert<T>(T entity) where T : class, IMetadata
|
|
{
|
|
try
|
|
{
|
|
gremlinDb.Set<T>().Add(entity);
|
|
if (typeof(T) == typeof(Account))
|
|
{
|
|
Account account = entity as Account;
|
|
System.Console.WriteLine($"Added {account.SapAccountNumber}:{account.AccountName} to database, try to save...");
|
|
}
|
|
return gremlinDb.SaveChanges() > 0;
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
Console.WriteLine(exception.InnerException);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public bool Insert<T>(List<T> entities) where T : class, IMetadata
|
|
{
|
|
try
|
|
{
|
|
gremlinDb.Set<T>().AddRange(entities);
|
|
return gremlinDb.SaveChanges() > 0;
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
Console.WriteLine(exception.InnerException);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public bool IsExisting<T>(Predicate<T> search) where T : class, IMetadata
|
|
{
|
|
return gremlinDb.Set<T>().AsEnumerable().Any(t => search(t));
|
|
}
|
|
} |