public static ObjectId FindParcelOfHole(Transaction tr, Entity hole) { var entityIds = GroupUtils.GetGroupedObjects(tr, hole); ObjectId entityId = ObjectId.Null; foreach (var objectId in entityIds) { if (objectId == hole.Id) { continue; } using (var ent = tr.GetObject(objectId, OpenMode.ForRead)) { if (ent is Polyline2d || ent is Polyline) { string cassFlag = CadUtils.GetCassFlag(ent); if (CassFlagName.ToLower() == cassFlag.ToLower()) { entityId = objectId; break; } } } } return(entityId); }
public static bool IsHoleReferenced(Entity ent, Transaction tr) { if (ent is Polyline2d || ent is Polyline) { // 如果不是flag,没有被引用 string cassFlag = CadUtils.GetCassFlag(ent); if (CassFlagIsland.ToLower() != cassFlag.ToLower()) { return(false); } var groupId = GroupUtils.FindEntityGroupId(tr, ent); if (!groupId.IsValid) { return(false); } // 如果不是flag,没有被引用 //ObjectId[] entityIds = GroupUtils.GetGroupedObjects(ent); //foreach (ObjectId entityId in entityIds) //{ //} var realId = ParcelPolygon.FindParcelOfHole(tr, ent); if (realId.IsNull) { return(false); } return(true); } return(false); }
public override void Use(Player p, params string[] args) { if (args.Length < 2) { Help(p); return; } Player pr = Player.FindPlayer(args[0]); Group gr = Group.FindGroup(args[1]); if (pr == p) { p.SendMessage(HelpBot + "You can't change your own rank."); return; } if (!GroupUtils.IsHigherRank(p.group, gr)) { p.SendMessage(HelpBot + "You can't rank someone higher than your own rank."); return; } if (gr != null && pr != null) { pr.group = gr; p.SendMessage("There have a nice day!"); pr.SendMessage(HelpBot + p.username + " set your rank to " + gr.Name + ". Congratulations!"); } }
static bool IsPolygonHasHole(Transaction tr, Entity entity) { ObjectId[] entityIds = GroupUtils.GetGroupedObjects(tr, entity); foreach (ObjectId entityId in entityIds) { // 如果是本地块,直接skip if (entity.ObjectId == entityId) { continue; } using (var ent = tr.GetObject(entityId, OpenMode.ForRead)) { if (ent is Polyline2d || ent is Polyline) { string cassFlag = CadUtils.GetCassFlag(ent); if (CassFlagIsland.ToLower() == cassFlag.ToLower()) { return(true); } } } } return(false); }
public override void Use(Player p, params string[] args) { if (args.Length == 0) { Help(p); return; } Player pr = Player.FindPlayer(args[0]); if (pr == null) { p.SendMessage(HelpBot + "Could not find player."); return; } if (pr == p) { p.SendMessage(HelpBot + "You can't promote yourself."); return; } if (GroupUtils.PromotePlayer(pr)) { p.SendMessage(HelpBot + "Player promoted."); pr.SendMessage(HelpBot + p.username + " promoted you. Congratulations!"); } else { p.SendMessage(HelpBot + "Could not promote player"); } }
public async Task <GetUserResponse> Handle(GetUserRequest request, CancellationToken cancellationToken) { string currentUserId = httpContextReader.CurrentUserId; var user = await userService.GetUser(request.UserId, currentUserId); var userToReturn = !await rolesService.IsPermitted(currentUserId, RoleName.Admin) ? (UserDtoBase)mapper.Map <UserDto>(user) : mapper.Map <UserAdminDto>(user); if (user != null) { userToReturn = FriendUtils.SetFriendProperties(userToReturn, user, currentUserId); user.SortPosts(); var userGroups = user.Groups.Concat(user.GroupMembers.Where(m => m.IsAccepted).Select(m => m.Group)) .ToList(); GroupUtils.SetGroupMemberParams(userToReturn.Groups.ToList(), userGroups, currentUserId); return(new GetUserResponse { User = userToReturn }); } throw new CrudException("User cannot be loaded"); }
static void AddHolesToEntityGroup(ObjectId parcelId, ObjectId[] holeIds) { // 看是否存在组,如果没有,直接新建一个 var groupId = GroupUtils.FindEntityGroupId(parcelId); // 关联地块和孔洞 AddHolesToParcel(parcelId, groupId, holeIds); }
private void AllGroupsManagedByClient(Guid clientGuid) { List <string> grouspName = _data.AllGroupsChat.GetGroupsChat() .Where(g => g.Managers.Contains(clientGuid)) .Select(g => g.Name).ToList(); GroupUtils.SendAllGroupChat(_client, _requests, grouspName); }
private static async Task Main() { Setup setup = Setup.FromJson(); Dataset oldGroups, newGroups; Console.WriteLine("======================="); Console.WriteLine("Spis Sekcji Manager v2"); Console.WriteLine("======================="); Console.WriteLine("[1] - Naprawa grup"); Console.WriteLine("[2] - Zaaktualizuj dane"); Console.WriteLine("[3] - Odswiez ustawienia"); Console.WriteLine("[4] - Wyczyść prośby o dodanie grup"); Console.WriteLine(); Console.Write("Podaj swoj wybor: "); string userChoice = Console.ReadLine(); while (userChoice != "1" && userChoice != "2" && userChoice != "3" && userChoice != "4") { Console.WriteLine("Niewlasciwy wybor!"); Console.WriteLine(); Console.Write("Podaj swoj wybor: "); userChoice = Console.ReadLine(); } Console.Clear(); if (userChoice == "1") { for (int i = 0; i < setup.Files.Count; i++) { oldGroups = Dataset.FromJson($"{setup.Files[i].Input}"); GroupUtils.FixGroups(oldGroups).ToJson($"{setup.Files[i].Output}.json"); } } else if (userChoice == "2") { for (int i = 0; i < setup.Files.Count; i++) { newGroups = Dataset.FromJson($"{setup.Files[i].Input}"); await FirebaseUtils.PostGroups(newGroups, setup, i).ConfigureAwait(false); } } else if (userChoice == "3") { Setup.FromJson(); } else if (userChoice == "4") { await FirebaseUtils.ClearSubmissions(setup).ConfigureAwait(false); } await Main().ConfigureAwait(false); }
public async Task <FetchGroupsPaginationResponse> Handle(FetchGroupsPaginationRequest request, CancellationToken cancellationToken) { string currentUserId = httpContextService.CurrentUserId; request.UserId = currentUserId; var groups = await groupService.FetchGroups(request); var groupsToReturn = mapper.Map <List <GroupListDto> >(groups); GroupUtils.SetGroupMemberParams(groupsToReturn, groups as PagedList <Domain.Entities.Group.Group>, currentUserId); httpContextService.AddPagination(groups.CurrentPage, groups.PageSize, groups.TotalCount, groups.TotalPages); return(new FetchGroupsPaginationResponse { Groups = groupsToReturn }); }
public async Task <FetchUserGroupsResponse> Handle(FetchUserGroupsRequest request, CancellationToken cancellationToken) { string currentUserId = httpContextReader.CurrentUserId; var userGroupsResult = await groupService.FetchUserGroups() ?? throw new CrudException("Fetching user groups failed"); var ownGroupsToReturn = mapper.Map <List <GroupListDto> >(userGroupsResult.OwnGroups); var myGroupsToReturn = mapper.Map <List <GroupListDto> >(userGroupsResult.MyGroups); GroupUtils.SetGroupMemberParams(ownGroupsToReturn, userGroupsResult.OwnGroups, currentUserId); GroupUtils.SetGroupMemberParams(myGroupsToReturn, userGroupsResult.MyGroups, currentUserId); return(new FetchUserGroupsResponse { OwnGroups = ownGroupsToReturn, MyGroups = myGroupsToReturn }); }
public static void CleanupSelfRefHoles(ObjectId[] holeIds) { var database = holeIds[0].Database; using (var tr = database.TransactionManager.StartTransaction()) { foreach (var holeId in holeIds) { var hole = database.TransactionManager.GetObject(holeId, OpenMode.ForRead) as Entity; var col = hole.GetPersistentReactorIds(); if (col != null) { foreach (ObjectId id in col) { using (DBObject obj = tr.GetObject(id, OpenMode.ForRead)) { if (obj is Group) { var group = obj as Group; group.UpgradeOpen(); var objectIds = GroupUtils.GetGroupedObjects(tr, hole); // 如果组里面只有一个,直接删除组 if (objectIds.Count() == 1) { group.Erase(); } // 如果组里面有两个,并且两个编码一样 if (objectIds.Count() == 2 && objectIds[0] == objectIds[1]) { group.Erase(); } } } } } } tr.Commit(); } }
public static ObjectId[] FindHolesInEntity(Transaction tr, Entity entity) { ObjectId[] entityIds = GroupUtils.GetGroupedObjects(tr, entity); var holeIds = new List <ObjectId>(); foreach (ObjectId entityId in entityIds) { using (var ent = tr.GetObject(entityId, OpenMode.ForRead)) { if (ent is Polyline2d || ent is Polyline) { string cassFlag = CadUtils.GetCassFlag(ent); if (CassFlagIsland.ToLower() == cassFlag.ToLower()) { holeIds.Add(entityId); } } } } return(holeIds.ToArray()); }
static void AddHolesToParcel(ObjectId parcelId, ObjectId groupId, ObjectId[] holeIds) { Database database = parcelId.Database; // 将扣除的孔洞等图形放到孔洞图层,以绿色醒目显示 var layerId = LayerUtils.GetLayerByName(database, "孔洞"); if (!layerId.IsValid) { layerId = LayerUtils.AddNewLayer(database, "孔洞", "Continuous", /*GREEN*/ 3); } // 看看选择的地块是不是真的在地块里面了 var availableHoles = new List <ObjectId>(); using (var tr = database.TransactionManager.StartTransaction()) { var reader = new DwgReader(); var curve = tr.GetObject(parcelId, OpenMode.ForRead) as Curve; if (curve != null && curve.Closed) { var polygon1 = reader.ReadCurveAsPolygon(tr, curve); foreach (var holeId in holeIds) { var hole = tr.GetObject(holeId, OpenMode.ForRead) as Curve; // 只添加地块为封闭的 if (hole == null || !hole.Closed) { continue; } // 继续,看看是不是在地块中间,不在就跳过 var polygon2 = reader.ReadCurveAsPolygon(tr, hole); if (!polygon1.Contains(polygon2)) { continue; } // 如果是,添加地块 hole.UpgradeOpen(); CadUtils.SetCassFlag(hole, CassFlagIsland); hole.LayerId = layerId; availableHoles.Add(holeId); // 如果组不是空,直接加入组 if (!groupId.IsNull) { GroupUtils.AppendEntityIntoGroup(database, groupId, holeId); } } } tr.Commit(); } // 如果没有group,创建group if (groupId.IsNull) { var ids = new ObjectIdCollection() { parcelId }; foreach (var availableHole in availableHoles) { ids.Add(availableHole); } GroupUtils.CreateNewGroup(database, "*A", ids); } }
private void SendAllClientGroups(Guid clientGuid) { GroupUtils.SendAllClientGroups(_client, _requests, _data, clientGuid); }
private GroupChat WaitToGetGroupFromClient() { return(GroupUtils.WaitToGetGroupFromClient(_client, _requests)); }