48 lines
1.9 KiB
C#
48 lines
1.9 KiB
C#
using AyCode.Core.Logger;
|
|
using AyCode.Entities.Users;
|
|
using AyCode.Interfaces.Entities;
|
|
using AyCode.Interfaces.Profiles;
|
|
using AyCode.Interfaces.Users;
|
|
|
|
namespace AyCode.Database.DbSets.Users;
|
|
|
|
public static class AcUserDbSetExtensions
|
|
{
|
|
public static TUser? GetUserById<TUser>(this IAcUserDbSetBase<TUser> ctx, Guid userId) where TUser : class, IAcUserBase
|
|
=> ctx.GetUsersById(userId).FirstOrDefault();
|
|
|
|
public static TUser? GetUserByEmail<TUser>(this IAcUserDbSetBase<TUser> ctx, string email) where TUser : class, IAcUserBase
|
|
=> ctx.GetUsersByEmail(email).FirstOrDefault();
|
|
|
|
public static IQueryable<TUser> GetUsersById<TUser>(this IAcUserDbSetBase<TUser> ctx, Guid userId) where TUser : class, IAcUserBase
|
|
=> ctx.Users.Where(u => u.Id == userId);
|
|
|
|
public static IQueryable<TUser> GetUsersByEmail<TUser>(this IAcUserDbSetBase<TUser> ctx, string email) where TUser : class, IAcUserBase
|
|
{
|
|
Logger.Info($"GetUserByEmail: {email}");
|
|
|
|
var emailLower = email.ToLower();
|
|
return ctx.Users.Where(u => u.EmailAddress == emailLower);
|
|
}
|
|
|
|
public static bool AddUser<TUser>(this IAcUserDbSetBase<TUser> ctx, TUser user) where TUser : class, IAcUserBase
|
|
{
|
|
var emailLower = user.EmailAddress.ToLower();
|
|
|
|
Logger.Info($"GetUserByEmail: {emailLower}");
|
|
|
|
return ctx.Users.Add(user).State == Microsoft.EntityFrameworkCore.EntityState.Added;
|
|
}
|
|
|
|
public static bool RemoveUserAsync<TUser>(this IAcUserDbSetBase<TUser> ctx, TUser user) where TUser : class, IAcUserBase
|
|
=> ctx.Users.Remove(user).State == Microsoft.EntityFrameworkCore.EntityState.Deleted;
|
|
|
|
public static bool RemoveUserAsync<TUser>(this IAcUserDbSetBase<TUser> ctx, Guid userId) where TUser : class, IAcUserBase
|
|
{
|
|
var user = ctx.GetUserById(userId);
|
|
|
|
if (user == null) return false;
|
|
|
|
return ctx.RemoveUserAsync(user);
|
|
}
|
|
} |