示例#1
0
            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);
            }
示例#2
0
        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);
        }
示例#3
0
        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!");
            }
        }
示例#4
0
            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);
            }
示例#5
0
        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");
            }
        }
示例#6
0
        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");
        }
示例#7
0
            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);
        }
示例#9
0
        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);
        }
示例#10
0
        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
            });
        }
示例#11
0
        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
            });
        }
示例#12
0
            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();
                }
            }
示例#13
0
            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());
            }
示例#14
0
            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));
 }