This commit is contained in:
itcsx committed 2026-09-15 16:25:06 +08:00
1 parent fcbeba7287
commit f2f5807372
33 files changed
+1399 -1444

No files matched your search

@@ -117,9 +117,24 @@ namespace CloudBuilder.Master.Service
if (d == null) return data;
IRepository<FamilyTreePermissionUserViewEntity> repositoryPermission = repository.GetRepository<IRepository<FamilyTreePermissionUserViewEntity>>();
data.FamilyTree = new FamilyTreeDisplayData(d);
data.CurrentPerson = new FamilyPersonData();
data.FamilyTreePermissions = repositoryPermission.DetachedEntities.Where(x => x.TreeId == key).ToArray();
if (data.FamilyTreePermissions.Any())
{
data.IsManager = data.FamilyTreePermissions.Where(x => x.UserName == service.UserId && x.ManagerIndc == YesNoPolicy.YES).Any();
}
if(!data.IsManager && data.FamilyTreePermissions.Any())
{
data.FamilyTreePermissions = data.FamilyTreePermissions.Where(x => x.UserName == service.UserId && x.ValidIndc == YesNoPolicy.NO).ToArray();
}
IRepository<FamilyPersonEntity> repositoryFamilyPerson = repository.GetRepository<IRepository<FamilyPersonEntity>>();
var currentPerson = personId;
@@ -248,6 +263,21 @@ namespace CloudBuilder.Master.Service
repository.InsertNow(d);
FamilyTreePermissionEntity treePermissionEntity = new FamilyTreePermissionEntity();
treePermissionEntity.TreeId = d.TreeId;
treePermissionEntity.PersonId = d.AncestorPersonId;
treePermissionEntity.UserName = service.UserId;
treePermissionEntity.ManagerIndc = YesNoPolicy.YES;
treePermissionEntity.ValidIndc = YesNoPolicy.YES;
InsertFamilyTreePermission(treePermissionEntity);
IRepository<FamilyPersonEntity> repositoryPerson = repository.GetRepository<IRepository<FamilyPersonEntity>>();
FamilyPersonEntity familyPerson;
familyPerson = repositoryPerson.DetachedEntities.Where(x => x.PersonId == d.AncestorPersonId).FirstOrDefault()!;
familyPerson.TreeId = d.TreeId;
repositoryPerson.UpdateNow(familyPerson);
var currentPerson = d.AncestorPersonId;
if (data.CurrentPerson != null && data.CurrentPerson.FamilyPerson != null && !string.IsNullOrEmpty(data.CurrentPerson.FamilyPerson.PersonId))
@@ -268,16 +298,74 @@ namespace CloudBuilder.Master.Service
return FindByCurrentPerson(d.TreeId, currentPerson);
}
public void InsertFamilyTreePermission(FamilyTreePermissionEntity treePermissionEntity)
{
IRepository<FamilyTreePermissionEntity> repositoryPermission = repository.GetRepository<IRepository<FamilyTreePermissionEntity>>();
repositoryPermission.InsertNow(treePermissionEntity);
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Find)]
[UnitOfWork]
public void RequestFamilyTreePermission(string treeId, string currentPersonId)
{
IRepository<FamilyTreePermissionEntity> repositoryPermission = repository.GetRepository<IRepository<FamilyTreePermissionEntity>>();
FamilyTreePermissionEntity treePermissionEntity = repositoryPermission.DetachedEntities.Where(x => x.TreeId == treeId && x.PersonId == currentPersonId && service.UserId == x.UserName).FirstOrDefault()!;
if (treePermissionEntity != null) return;
treePermissionEntity = new FamilyTreePermissionEntity();
treePermissionEntity.TreeId = treeId;
treePermissionEntity.PersonId = currentPersonId;
treePermissionEntity.UserName = service.UserId;
treePermissionEntity.ManagerIndc = YesNoPolicy.NO;
treePermissionEntity.ValidIndc = YesNoPolicy.NO;
InsertFamilyTreePermission(treePermissionEntity);
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Find)]
[UnitOfWork]
public void ApproveFamilyTreePermission(string treeId, string currentPersonId, string userName, string managerIndc)
{
IRepository<FamilyTreePermissionEntity> repositoryPermission = repository.GetRepository<IRepository<FamilyTreePermissionEntity>>();
FamilyTreePermissionEntity treePermissionEntity = repositoryPermission.DetachedEntities.Where(x => x.TreeId == treeId && x.PersonId == currentPersonId && userName == x.UserName).FirstOrDefault()!;
if (treePermissionEntity == null) return;
treePermissionEntity.ManagerIndc = managerIndc;
treePermissionEntity.ValidIndc = YesNoPolicy.YES;
repositoryPermission.UpdateNow(treePermissionEntity);
}
[PermissionOperate(name: MasterPermissionPolicy.FamilyTree, operate: Operate.Find)]
[UnitOfWork]
public void RejectFamilyTreePermission(string treeId, string currentPersonId, string userName)
{
IRepository<FamilyTreePermissionEntity> repositoryPermission = repository.GetRepository<IRepository<FamilyTreePermissionEntity>>();
FamilyTreePermissionEntity treePermissionEntity = repositoryPermission.DetachedEntities.Where(x => x.TreeId == treeId && x.PersonId == currentPersonId && userName == x.UserName).FirstOrDefault()!;
if (treePermissionEntity == null) return;
repositoryPermission.DeleteNow(treePermissionEntity);
}
private void SaveSpouseMaps(string personId, FamilyTreeSpouseMapViewEntity[] maps)
{
IRepository<FamilyTreeSpouseMapViewEntity> repositoryMapView = repository.GetRepository<IRepository<FamilyTreeSpouseMapViewEntity>>();
IRepository<FamilyTreeSpouseMapEntity> repositoryMap = repository.GetRepository<IRepository<FamilyTreeSpouseMapEntity>>();
IRepository<FamilyPersonEntity> repositoryPerson = repository.GetRepository<IRepository<FamilyPersonEntity>>();
FamilyPersonEntity familyPerson;
FamilyTreeSpouseMapViewEntity[] olds = repositoryMapView.Entities.Where(x => x.PersonId == personId).ToArray();
if (olds != null && olds.Length > 0)
{
foreach (FamilyTreeSpouseMapViewEntity old in olds)
{
familyPerson = repositoryPerson.DetachedEntities.Where(x => x.PersonId == old.PersonId).FirstOrDefault()!;
if (familyPerson != null)
{
repositoryPerson.DeleteNow(familyPerson);
}
repositoryMap.DeleteNow(new FamilyTreeSpouseMapEntity()
{
TreeId = old.TreeId,
@@ -289,8 +377,16 @@ namespace CloudBuilder.Master.Service
if (maps == null || maps.Length == 0) return;
int i = 1;
foreach (FamilyTreeSpouseMapViewEntity map in maps.OrderBy(x => x.Orderby).ToArray())
{
familyPerson = repositoryPerson.DetachedEntities.Where(x => x.PersonId == map.PersonId && string.IsNullOrEmpty(x.TreeId)).FirstOrDefault()!;
if (familyPerson != null)
{
familyPerson.TreeId = map.TreeId;
repositoryPerson.Update(familyPerson);
}
repositoryMap.InsertNow(new FamilyTreeSpouseMapEntity()
{
TreeId = map.TreeId,
@@ -309,55 +405,25 @@ namespace CloudBuilder.Master.Service
}
}
private void SaveParentMaps(string personId, FamilyTreeChildrenMapViewEntity[] maps)
{
IRepository<FamilyTreeChildrenMapViewEntity> repositoryMapView = repository.GetRepository<IRepository<FamilyTreeChildrenMapViewEntity>>();
IRepository<FamilyTreeChildrenMapEntity> repositoryMap = repository.GetRepository<IRepository<FamilyTreeChildrenMapEntity>>();
FamilyTreeChildrenMapViewEntity[] olds = repositoryMapView.Entities.Where(x => x.ChildrenId == personId).ToArray();
if (olds != null && olds.Length > 0)
{
foreach (FamilyTreeChildrenMapViewEntity old in olds)
{
repositoryMap.DeleteNow(new FamilyTreeChildrenMapEntity()
{
TreeId = old.TreeId,
ChildrenId = personId,
PersonId = old.PersonId
});
}
}
if (maps == null || maps.Length == 0) return;
int maxOrderBy = 0;
foreach (FamilyTreeChildrenMapViewEntity map in maps)
{
FamilyTreeChildrenMapViewEntity[] oldMaps = repositoryMapView.Entities.Where(x => x.PersonId == map.PersonId).ToArray();
if (oldMaps != null && oldMaps.Count() > 0) maxOrderBy = oldMaps.Max(x => x.Orderby);
repositoryMap.InsertNow(new FamilyTreeChildrenMapEntity()
{
TreeId = map.TreeId,
ChildrenId = personId,
PersonId = map.PersonId,
Orderby = oldMaps == null ? 1 : maxOrderBy + 1
});
}
}
private void SaveSonMaps(string personId, FamilyTreeChildrenMapViewEntity[] maps)
{
IRepository<FamilyTreeChildrenMapViewEntity> repositoryMapView = repository.GetRepository<IRepository<FamilyTreeChildrenMapViewEntity>>();
IRepository<FamilyTreeChildrenMapEntity> repositoryMap = repository.GetRepository<IRepository<FamilyTreeChildrenMapEntity>>();
IRepository<FamilyPersonEntity> repositoryPerson = repository.GetRepository<IRepository<FamilyPersonEntity>>();
FamilyPersonEntity familyPerson;
FamilyTreeChildrenMapViewEntity[] olds = repositoryMapView.Entities.Where(x => x.PersonId == personId).ToArray();
if (olds != null && olds.Length > 0)
{
foreach (FamilyTreeChildrenMapViewEntity old in olds)
{
familyPerson = repositoryPerson.DetachedEntities.Where(x => x.PersonId == old.PersonId).FirstOrDefault()!;
if (familyPerson != null)
{
repositoryPerson.DeleteNow(familyPerson);
}
repositoryMap.DeleteNow(new FamilyTreeChildrenMapEntity()
{
TreeId = old.TreeId,
@@ -369,8 +435,16 @@ namespace CloudBuilder.Master.Service
if (maps == null || maps.Length == 0) return;
int i = 1;
foreach (FamilyTreeChildrenMapViewEntity map in maps.OrderBy(x => x.Orderby).ToArray())
{
familyPerson = repositoryPerson.DetachedEntities.Where(x => x.PersonId == map.PersonId && string.IsNullOrEmpty(x.TreeId)).FirstOrDefault()!;
if (familyPerson != null)
{
familyPerson.TreeId = map.TreeId;
repositoryPerson.Update(familyPerson);
}
repositoryMap.InsertNow(new FamilyTreeChildrenMapEntity()
{
TreeId = map.TreeId,
@@ -439,6 +513,15 @@ namespace CloudBuilder.Master.Service
if (ent == null) return;
repository.DeleteNow(ent);
IRepository<FamilyPersonEntity> repositoryPerson = repository.GetRepository<IRepository<FamilyPersonEntity>>();
FamilyPersonEntity familyPerson;
familyPerson = repositoryPerson.DetachedEntities.Where(x => x.PersonId == ent.AncestorPersonId).FirstOrDefault()!;
if (familyPerson != null)
{
repositoryPerson.DeleteNow(familyPerson);
}
DeleteSpouses(ent.AncestorPersonId);
DeleteChildrens(ent.AncestorPersonId);
}