AyCode.Core/AyCode.Database/DbSets/Profiles/AcProfileDbSetExtensions.cs

39 lines
1.5 KiB
C#

using AyCode.Core.Server.Loggers;
using AyCode.Database.DbSets.Profiles;
using AyCode.Entities;
using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Profiles.Dtos;
using AyCode.Interfaces.Profiles;
using Microsoft.EntityFrameworkCore;
namespace AyCode.Database.DbSets.Profiles;
public static class AcProfileDbSetExtensions
{
public static TProfile? GetProfileById<TProfile>(this IAcProfileDbSetBase<TProfile> ctx, Guid profileId) where TProfile : class, IAcProfileDtoBase
=> ctx.Profiles.FirstOrDefault(u => u.Id == profileId);
public static bool AddProfile<TProfile>(this IAcProfileDbSetBase<TProfile> ctx, TProfile profile) where TProfile : class, IAcProfileDtoBase
{
return ctx.Profiles.Add(profile).State == EntityState.Added;
}
public static bool RemoveProfile<TProfile, TAddress>(this IAcProfileDbSetBase<TProfile, TAddress> ctx, TProfile profile)
where TProfile : class, IAcProfile<TAddress>
where TAddress : class, IAcAddress
{
var address = ctx.Addresses.FirstOrDefault(x => x.Id == profile.AddressId);
if (address != null) ctx.Addresses.Remove(address);
return ctx.Profiles.Remove(profile).State == EntityState.Deleted;
}
public static bool RemoveProfile<TProfile, TAddress>(this IAcProfileDbSetBase<TProfile, TAddress> ctx, Guid profileId)
where TProfile : class, IAcProfile<TAddress>
where TAddress : class, IAcAddress
{
var profile = ctx.GetProfileById(profileId);
return profile != null && ctx.RemoveProfile(profile);
}
}