internal static void SaveDossierTypeTrees() { var dc = Model.Common.ArchiveCommonDataClassesDataContext.GetNewInstance(); var archiveDc = Model.Archive.ArchiveDataClassesDataContext.GetNewInstance(); foreach (var item in archiveDc.DossierTypes) { var query = dc.AccessPermissionTrees.Where(t => t.Item == Setting.User.ThisProgram.GetAccessPermissionUnitGroupName(Setting.User.AccessPermissionUnits.DossierType)); if (query.Count() == 0) { Model.Common.AccessPermissionTree tree = Model.Common.AccessPermissionTree.GetNewInstance(Setting.User.ThisProgram.GetAccessPermissionUnitGroupName(Setting.User.AccessPermissionUnits.DossierType), null, "سطح دسترسی پرونده ها", true, false); dc.AccessPermissionTrees.InsertOnSubmit(tree); dc.SubmitChanges(); } var accessPermissionTreeQuery = dc.AccessPermissionTrees.Where(t => t.Group == Setting.User.ThisProgram.GetAccessPermissionUnitGroupName(Setting.User.AccessPermissionUnits.DossierType) && t.Item == item.ID.ToString()); if (accessPermissionTreeQuery.Count() > 0) { Model.Common.AccessPermissionTree originalTree = accessPermissionTreeQuery.Single(); Model.Common.AccessPermissionTree tree = Model.Common.AccessPermissionTree.GetNewInstance(item.ID.ToString(), Setting.User.ThisProgram.GetAccessPermissionUnitGroupName(Setting.User.AccessPermissionUnits.DossierType), item.Title, true, false); Model.Common.AccessPermissionTree.Copy(originalTree, tree); dc.SubmitChanges(); } else { Model.Common.AccessPermissionTree tree = Model.Common.AccessPermissionTree.GetNewInstance(item.ID.ToString(), Setting.User.ThisProgram.GetAccessPermissionUnitGroupName(Setting.User.AccessPermissionUnits.DossierType), item.Title, true, false); dc.AccessPermissionTrees.InsertOnSubmit(tree); dc.SubmitChanges(); } } }
public bool CheckUserAccessPermission(Model.Common.User membership, string item, string group) { Model.Common.ArchiveCommonDataClassesDataContext dc = new Model.Common.ArchiveCommonDataClassesDataContext(Setting.Sql.ThisProgram.DatabaseConnection.ConnectionString); int roleCode = GetMembershipRoleCode(membership); IQueryable <Model.Common.AccessPermissionTree> trees; if (group != null) { trees = dc.AccessPermissionTrees.Where(t => t.Item == item && t.Group == group); } else { trees = dc.AccessPermissionTrees.Where(t => t.Item == item); } if (trees.Count() != 1) { return(false); } var accessPermissionTree = trees.Single(); Model.Common.AccessPermissionTree tempTree = accessPermissionTree; while (tempTree.Group != null) { var groupTrees = dc.AccessPermissionTrees.Where(t => t.Item == tempTree.Group); var accessPermissionTreeGroup = groupTrees.Single(); string groupItemCode = HashData("mahba3905" + accessPermissionTreeGroup.Item); if (GetRoleAccessPermission(roleCode, groupItemCode) == false) { return(false); } //if (GetMembershipAccessPermission(membership.Code, groupItemCode) == false) // return false; tempTree = accessPermissionTreeGroup; } string itemCode = HashData("mahba3905" + item); if (GetRoleAccessPermission(roleCode, itemCode) == false) { return(false); } return(true); //return GetMembershipAccessPermission(membership.Code, itemCode); }