Files
Backend-Api/AccountMangement.Infrastructure.EFCore/Seed/SubAccountPermissionSeeder.cs
2025-01-04 18:00:04 +03:30

46 lines
2.1 KiB
C#

using _0_Framework.Application;
using AccountManagement.Domain.SubAccountPermissionSubtitle1Agg;
using AccountManagement.Domain.SubAccountPermissionSubtitle2Agg;
using AccountManagement.Domain.SubAccountPermissionSubtitle3Agg;
using AccountManagement.Domain.SubAccountPermissionSubtitle4Agg;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace AccountMangement.Infrastructure.EFCore.Seed
{
public static class SubAccountPermissionSeeder
{
public static void Seed(ModelBuilder builder)
{
PropertyInfo[] properties = typeof(SubAccountPermissionHelper).GetProperties(BindingFlags.Static | BindingFlags.Public);
var permissionsList = properties
.Where(x => x.PropertyType == typeof(SubAccountPermissionDto)).Select(x => (SubAccountPermissionDto)x.GetValue(null)).ToList();
List<SubAccountPermissionSubtitle1> result1 = permissionsList.Where(x => x.ParentId == 0)
.Select(x => new SubAccountPermissionSubtitle1(x.Name, x.Code) { id = x.Id }).ToList();
List<SubAccountPermissionSubtitle2> result2 = permissionsList.Where(x => result1.Any(y => y.id == x.ParentId))
.Select(x => new SubAccountPermissionSubtitle2(x.Name, x.Code, x.ParentId) { id = x.Id }).ToList();
List<SubAccountPermissionSubtitle3> result3 = permissionsList.Where(x => result2.Any(y => y.id == x.ParentId))
.Select(x => new SubAccountPermissionSubtitle3(x.Name, x.Code, x.ParentId) { id = x.Id }).ToList();
List<SubAccountPermissionSubtitle4> result4 = permissionsList.Where(x => result3.Any(y => y.id == x.ParentId))
.Select(x => new SubAccountPermissionSubtitle4(x.Name, x.Code, x.ParentId) { id = x.Id }).ToList();
builder.Entity<SubAccountPermissionSubtitle1>().HasData(result1);
builder.Entity<SubAccountPermissionSubtitle2>().HasData(result2);
builder.Entity<SubAccountPermissionSubtitle3>().HasData(result3);
builder.Entity<SubAccountPermissionSubtitle4>().HasData(result4);
}
}
}