示例#1
0
        public void HandleDeleteShapes(LitePeer peer,
                                       OperationRequest operationRequest,
                                       SendParameters sendParameters)
        {
            var req = DeleteShapesRequest.Read(operationRequest.Parameters);

            var owner = req.initialOwnerId;
            var shapesBeingRemoved = _doc.GetShapes().Where(sh => sh.InitialOwner() == owner &&
                                                            sh.ShapeCode() != VdShapeType.Badge &&
                                                            sh.ShapeCode() != VdShapeType.Cluster &&
                                                            sh.ShapeCode() != VdShapeType.ClusterLink
                                                            );

            //check permissions
            foreach (var sr in shapesBeingRemoved)
            {
                if (!_doc.editingPermission(sr, owner))
                {
                    return;
                }
            }

            //ok, remove
            foreach (var sr in shapesBeingRemoved.ToArray())
            {
                UnlockDeleteBroadcast(sr.Id(), req.ownerId);
            }

            _pendingChanges = true;
        }