LANCommander/LANCommander.Server/Data/Repository.cs

101 lines
2.4 KiB
C#
Raw Normal View History

2024-08-04 18:44:33 -05:00
using LANCommander.Server.Data.Models;
2023-01-02 15:44:04 -06:00
using Microsoft.EntityFrameworkCore;
using System.Linq.Expressions;
2024-08-04 18:44:33 -05:00
namespace LANCommander.Server.Data
2023-01-02 15:44:04 -06:00
{
public class Repository<T> : IDisposable where T : BaseModel
{
private DbContext Context;
private HttpContext HttpContext;
public Repository(DatabaseContext context, HttpContext httpContext)
{
Context = context;
HttpContext = httpContext;
}
private DbSet<T> DbSet
{
get { return Context.Set<T>(); }
}
private DbSet<User> UserDbSet
{
get { return Context.Set<User>(); }
}
public IQueryable<T> Get(Expression<Func<T, bool>> predicate)
{
return DbSet.AsQueryable().Where(predicate);
}
public async Task<T> Find(Guid id)
{
return await DbSet.FindAsync(id);
}
public T FirstOrDefault(Expression<Func<T, bool>> predicate)
{
return Get(predicate).FirstOrDefault();
}
public async Task<T> Add(T entity)
{
entity.CreatedBy = GetCurrentUser();
entity.UpdatedBy = GetCurrentUser();
2023-01-02 15:44:04 -06:00
entity.CreatedOn = DateTime.Now;
entity.UpdatedOn = DateTime.Now;
await Context.AddAsync(entity);
return entity;
}
public T Update(T entity)
{
entity.UpdatedBy = GetCurrentUser();
2023-01-02 15:44:04 -06:00
entity.UpdatedOn = DateTime.Now;
Context.Update(entity);
return entity;
}
public void Delete(T entity)
{
Context.Remove(entity);
}
2023-01-02 15:44:04 -06:00
public async Task SaveChanges()
{
await Context.SaveChangesAsync();
}
private User GetUser(string username)
{
return UserDbSet.FirstOrDefault(u => u.UserName == username);
}
private User GetCurrentUser()
2023-01-02 15:44:04 -06:00
{
if (HttpContext != null && HttpContext.User != null && HttpContext.User.Identity != null && HttpContext.User.Identity.IsAuthenticated)
{
var user = GetUser(HttpContext.User.Identity.Name);
if (user == null)
return null;
2023-01-02 15:44:04 -06:00
else
return user;
2023-01-02 15:44:04 -06:00
}
else
return null;
2023-01-02 15:44:04 -06:00
}
public void Dispose()
{
}
}
}