private void insertHRecords(EPCompanyTreeMaster record) { int level = -1; foreach (EPCompanyTreeH item in parents.Select(record.ParentWGID)) { if (level == -1) { level = item.WorkGroupLevel.GetValueOrDefault() + 1; } EPCompanyTreeH ins = (EPCompanyTreeH)treeH.Cache.CreateCopy(item); ins.WorkGroupID = record.WorkGroupID; ins.WorkGroupLevel = level; ins.WaitTime += record.WaitTime; treeH.Cache.Insert(ins); } EPCompanyTreeH self = new EPCompanyTreeH(); self.WorkGroupID = record.WorkGroupID; self.WorkGroupLevel = level; self.ParentWGID = record.WorkGroupID; self.ParentWGLevel = level; self.WaitTime = 0; treeH.Cache.Insert(self); }
private void updateHRecordParent(EPCompanyTreeMaster item) { PXResultset <EPCompanyTreeH> newParents = parents.Select(item.ParentWGID); int parentLevel = -1; if (newParents.Count > 0) { EPCompanyTreeH newParent = newParents[newParents.Count - 1]; parentLevel = newParent.WorkGroupLevel.GetValueOrDefault(); } int levelDelta = 0; EPCompanyTreeH root = null; foreach (EPCompanyTreeH child in childrens.Select(item.WorkGroupID)) { if (root == null) { root = (EPCompanyTreeH)treeH.Cache.CreateCopy(child); levelDelta = parentLevel + 1 - child.WorkGroupLevel.GetValueOrDefault(); } foreach (EPCompanyTreeH parent in parents.Select(child.WorkGroupID)) { if (parent.WorkGroupID != parent.ParentWGID && parent.ParentWGLevel < root.WorkGroupLevel) { treeH.Cache.Delete(parent); } else { EPCompanyTreeH upd = (EPCompanyTreeH)treeH.Cache.CreateCopy(parent); upd.WorkGroupLevel += levelDelta; upd.ParentWGLevel += levelDelta; treeH.Cache.Update(upd); } } foreach (EPCompanyTreeH parent in newParents) { EPCompanyTreeH ins = (EPCompanyTreeH)treeH.Cache.CreateCopy(parent); ins.WorkGroupID = child.WorkGroupID; ins.WorkGroupLevel = child.WorkGroupLevel; ins.WaitTime += child.WaitTime + item.WaitTime; treeH.Cache.Insert(ins); } } }