Esempio n. 1
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/xml";
            var thisTreeItemId = Guid.Parse(context.Request["thisTreeItemId"]);

            using (var db = new OrganizerEntities())
            {
                var thisTreeItem = db.TreeItems.Find(thisTreeItemId);
                CustomMembershipProvider.ValidateAccessToTreeItem_ReturnActiveAuthEntity(thisTreeItem, db, true);
                var thisTreeItemChildren = new List <TreeItem>();
                GetTreeItems.GetChildTreeItemsReadonlyHtml(thisTreeItemId, db, thisTreeItemChildren);
                var newItem = new TreeItem
                {
                    CreatedUtc      = DateTime.UtcNow,
                    Id              = Guid.NewGuid(),
                    LastModifiedUtc = DateTime.UtcNow,
                    ParentId        = thisTreeItem.Id,
                    NextSiblingId   = thisTreeItemChildren.Count != 0 ? (Guid?)thisTreeItemChildren[0].Id : null,
                    AutoLoadNestedChildrenIfNotRoot = true
                };
                db.TreeItems.Add(newItem);
                db.SaveChanges();

                context.Response.Write(ServerSideProcedures.DataObjectToXml(newItem));
            }
        }
Esempio n. 2
0
        public void ProcessRequest(HttpContext context)
        {
            using (var reader = new StreamReader(context.Request.InputStream))
            {
                var xml = XDocument.Parse(reader.ReadToEnd());
                reader.Close();

                var id = Guid.Parse(xml.Root.Elements().First(e => (string)e.Attribute("name") == "Id").Value);
                using (var db = new OrganizerEntities())
                {
                    var item = db.TreeItems.Find(id);
                    if (item == null)
                    {
                        throw new Exception("item is not found by ID = " + id);
                    }
                    CustomMembershipProvider.ValidateAccessToTreeItem_ReturnActiveAuthEntity(item, db, true);
                    ServerSideProcedures.XmlToItem(item, xml.Root, "LastModifiedUtc", "IsSelected", "Id", "ParentId", "NextSiblingId");
                    item.LastModifiedUtc = DateTime.UtcNow;
                    db.SaveChanges();
                }

                context.Response.ContentType = "text/plain";
                context.Response.Write("OK");
            }
        }
        public void ProcessRequest(HttpContext context)
        {
            var id = Guid.Parse(context.Request["treeItemId"]);

            using (var db = new OrganizerEntities())
            {
                var item = db.TreeItems.Find(id);
                CustomMembershipProvider.ValidateAccessToTreeItem_ReturnActiveAuthEntity(item, db, true);
                if (item.ParentId == null)
                {
                    throw new Exception("Can't delete root node");
                }

                var children = new List <TreeItem>();
                GetTreeItems.GetChildTreeItemsReadonlyHtml(id, db, children, false, true, null, true);
                for (int i = children.Count - 1; i >= 0; i--) // need to delete in this order to avoid FK errors
                {
                    db.TreeItems.Remove(children[i]);
                    db.SaveChanges();
                }

                var previousSibling = db.TreeItems.FirstOrDefault(x => x.NextSiblingId == id);
                if (previousSibling != null)
                {
                    previousSibling.NextSiblingId = item.NextSiblingId;
                    db.SaveChanges();
                }

                db.TreeItems.Remove(item);
                db.SaveChanges();
            }

            context.Response.ContentType = "text/plain";
            context.Response.Write("OK");
        }
Esempio n. 4
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/xml";

            var acceptEncoding = context.Request.Headers["Accept-Encoding"];

            if (!string.IsNullOrEmpty(acceptEncoding))
            {
                // The two common compression formats in web are GZip and Deflate
                if (acceptEncoding.IndexOf("gzip", StringComparison.OrdinalIgnoreCase) > -1)
                {
                    // Read the response using a GZip compressor ,   and replace the output with compressed result
                    context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
                    // Tell the client the ouput they got is compressed in GZip
                    context.Response.AppendHeader("Content-Encoding", "gzip");
                }
                else if (acceptEncoding.IndexOf("deflate", StringComparison.OrdinalIgnoreCase) > -1)
                {
                    // Read the response using a Deflate compressor ,   and replace the output with compressed result
                    context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
                    // Tell the client the ouput they got is compressed in Deflate
                    context.Response.AppendHeader("Content-Encoding", "deflate");
                }
            }


            var        rootTreeItemId = Guid.Parse(context.Request["rootTreeItemId"]);
            var        result         = new List <TreeItem>();
            AuthEntity user           = null;

            using (var db = new OrganizerEntities())
            {
                var item = db.TreeItems.FirstOrDefault(x => x.Id == rootTreeItemId);
                if (item != null)
                {
                    user = CustomMembershipProvider.ValidateAccessToTreeItem_ReturnActiveAuthEntity(item, db, false);
                    user.LastActiveAtUtc = DateTime.UtcNow;
                    db.SaveChanges();

                    result.Add(item);
                    GetChildTreeItemsReadonlyHtml(item.Id, db, result, true, true);
                }
            }
            if (result.Count != 0 && user != null)
            {
                context.Response.Write(ServerSideProcedures.ItemsListToXml(result[0], result,
                                                                           null// (x) => new Dictionary<string, string> {{"IsSelected", ((TreeItem)x).Id == user.SelectedTreeItemId ? "True" : "False"}}
                                                                           ));
            }
        }
Esempio n. 5
0
        public void ProcessRequest(HttpContext context)
        {
            var  moveType = context.Request["moveType"];
            var  from     = Guid.Parse(context.Request["from"]);
            var  toStr    = context.Request["to"];
            Guid?to;

            if (!String.IsNullOrEmpty(toStr))
            {
                to = Guid.Parse(toStr);
            }
            else
            {
                to = null;
            }
            using (var db = new OrganizerEntities())
            {
                var fromItem = db.TreeItems.Find(from);
                CustomMembershipProvider.ValidateAccessToTreeItem_ReturnActiveAuthEntity(fromItem, db, true);
                TreeItem toItem = null;
                if (to.HasValue)
                {
                    toItem = db.TreeItems.Find(to);
                    CustomMembershipProvider.ValidateAccessToTreeItem_ReturnActiveAuthEntity(toItem, db, true);
                }

                switch (moveType)
                {
                case "top":
                {
                    var children = new List <TreeItem>();
                    GetTreeItems.GetChildTreeItemsReadonlyHtml(fromItem.ParentId.Value, db, children, false, false);
                    var firstChild = children.FirstOrDefault();

                    var previousSibling = db.TreeItems.FirstOrDefault(x => x.NextSiblingId == from);
                    if (previousSibling != null)
                    {
                        previousSibling.NextSiblingId = fromItem.NextSiblingId;
                        db.SaveChanges();
                    }

                    fromItem.NextSiblingId = firstChild.Id;
                    db.SaveChanges();
                }
                break;

                case "bottom":
                {
                    var children = new List <TreeItem>();
                    GetTreeItems.GetChildTreeItemsReadonlyHtml(fromItem.ParentId.Value, db, children, false, false);
                    var lastChild = children.LastOrDefault();

                    var previousSibling = db.TreeItems.FirstOrDefault(x => x.NextSiblingId == from);
                    if (previousSibling != null)
                    {
                        previousSibling.NextSiblingId = fromItem.NextSiblingId;
                        db.SaveChanges();
                    }

                    if (lastChild != null)
                    {
                        lastChild.NextSiblingId = fromItem.Id;
                    }
                    fromItem.NextSiblingId = null;
                    db.SaveChanges();
                }
                break;

                case "children":
                {
                    var children = new List <TreeItem>();
                    GetTreeItems.GetChildTreeItemsReadonlyHtml(to.Value, db, children, false, false);
                    var lastChild = children.LastOrDefault();

                    var previousSibling = db.TreeItems.FirstOrDefault(x => x.NextSiblingId == from);
                    if (previousSibling != null)
                    {
                        previousSibling.NextSiblingId = fromItem.NextSiblingId;
                        db.SaveChanges();
                    }
                    fromItem.ParentId      = toItem.Id;
                    fromItem.NextSiblingId = null;
                    if (lastChild != null)
                    {
                        lastChild.NextSiblingId = fromItem.Id;
                    }
                    db.SaveChanges();
                }
                break;

                case "siblings":
                {
                    var previousSibling = db.TreeItems.FirstOrDefault(x => x.NextSiblingId == from);
                    if (previousSibling != null)
                    {
                        previousSibling.NextSiblingId = fromItem.NextSiblingId;
                        db.SaveChanges();
                    }

                    fromItem.ParentId      = toItem.ParentId;
                    fromItem.NextSiblingId = toItem.NextSiblingId;
                    toItem.NextSiblingId   = fromItem.Id;

                    db.SaveChanges();
                }
                break;

                default: throw new ArgumentException("invalid moveType: " + moveType);
                }

                db.SaveChanges();
            }

            context.Response.ContentType = "text/plain";
            context.Response.Write("OK");
        }