コード例 #1
0
        /// <summary>
        /// Adds a news crosslink for the contect at the given area.
        /// </summary>
        /// <param name="contentUId">The content Id</param>
        /// <param name="area">The crosslink area</param>
        /// <param name="changeDisplayOrderBy">Used to change the crosslink display order</param>
        /// <returns></returns>
        public void AddCrossLink(string contentUId, string area, short changeDisplayOrderBy = 0)
        {
            short oldOrder = 0;

            // max crosslink order
            short maxOrder = -1;

            if (_context.CrossLinks.Any(c => c.PageArea == area))
            {
                maxOrder = _context.CrossLinks.Where(c => c.PageArea == area).Select(c => c.DisplayOrder).DefaultIfEmpty().Max();
            }

            CrossLink link = _context.CrossLinks.SingleOrDefault(c => c.ContentUId == contentUId && c.PageArea == area);

            if (link == null)
            {
                link = new CrossLink()
                {
                    ContentUId = contentUId, PageArea = area, DisplayOrder = (short)(maxOrder + 1)
                };
                _context.CrossLinks.Add(link);
            }
            else
            {
                _context.CrossLinks.Update(link);
            }

            // calcs the new crosslink order
            oldOrder = link.DisplayOrder;
            short order = (short)(link.DisplayOrder + changeDisplayOrderBy);

            // if is a order chage and it its ut of bounds, get out of here
            if (changeDisplayOrderBy < 0 && oldOrder == 0)
            {
                return;
            }
            if (changeDisplayOrderBy > 0 && oldOrder == maxOrder)
            {
                return;
            }

            // set the new order
            link.DisplayOrder = order;


            // change the other link display order
            CrossLink link2 = null;

            link2 = _context.CrossLinks.SingleOrDefault(c => c.ContentUId != contentUId && c.PageArea == area && c.DisplayOrder == order);
            if (link2 != null)
            {
                link2.DisplayOrder = oldOrder;
                _context.CrossLinks.Update(link2);
            }


            _context.SaveChanges();

            _log.Log($"Crosslink '{area}/{contentUId}' has it order changed.");
        }
コード例 #2
0
        /// <summary>
        /// This only constructor for CrossLinkResult requires the CrossLink, LC-IMS-MS Feature, and LC Scan.
        /// The Mass Shift Results are added later on.
        /// </summary>
        /// <param name="crossLink"></param>
        /// <param name="lcImsMsFeature"></param>
        /// <param name="scanLc"></param>
        public CrossLinkResult(CrossLink crossLink, LcImsMsFeature lcImsMsFeature, int scanLc)
        {
            this.CrossLink = crossLink;
            this.LcImsMsFeature = lcImsMsFeature;
            this.ScanLc = scanLc;

            this.MassShiftResults = new MassShiftResult();
        }
コード例 #3
0
        /// <summary>
        /// This only constructor for CrossLinkResult requires the CrossLink, LC-IMS-MS Feature, and LC Scan.
        /// The Mass Shift Results are added later on.
        /// </summary>
        /// <param name="crossLink"></param>
        /// <param name="lcImsMsFeature"></param>
        /// <param name="scanLc"></param>
        public CrossLinkResult(CrossLink crossLink, LcImsMsFeature lcImsMsFeature, int scanLc)
        {
            this.CrossLink      = crossLink;
            this.LcImsMsFeature = lcImsMsFeature;
            this.ScanLc         = scanLc;

            this.MassShiftResults = new MassShiftResult();
        }
コード例 #4
0
        public void RemoveCrossLink(CrossLink link)
        {
            // mudei um pouco aqui em relação ao BOX (.net), pois dava erro de tracking ao remover
            _context.CrossLinks.Remove(link);
            _context.SaveChanges();

            // update orders
            _context.Database.ExecuteSqlCommand(
                "UPDATE CrossLinks SET DisplayOrder = DisplayOrder - 1 WHERE PageArea = {0} AND DisplayOrder > {1}", link.PageArea, link.DisplayOrder);
        }
コード例 #5
0
        /// <summary>
        /// Adds a news crosslink for the contect at the given area.
        /// </summary>
        /// <param name="contentUId">The content Id</param>
        /// <param name="area">The crosslink area</param>
        /// <param name="changeDisplayOrderBy">Used to change the crosslink display order</param>
        /// <returns></returns>
        public void AddCrossLink(string contentUId, string area, short changeDisplayOrderBy = 0)
        {
            short oldOrder = 0;

            using (var context = new Data.CMSContext()) {
                // max crosslink order
                short maxOrder = -1;
                if (context.CrossLinks.Any(c => c.PageArea == area))
                {
                    maxOrder = context.CrossLinks.Where(c => c.PageArea == area).Select(c => c.DisplayOrder).DefaultIfEmpty().Max();
                }

                CrossLink link = context.CrossLinks.SingleOrDefault(c => c.ContentUId == contentUId && c.PageArea == area);

                if (link == null)
                {
                    link = new CrossLink()
                    {
                        ContentUId = contentUId, PageArea = area, DisplayOrder = (short)(maxOrder + 1)
                    };
                    context.CrossLinks.Add(link);
                }

                // calcs the new crosslink order
                oldOrder = link.DisplayOrder;
                short order = (short)(link.DisplayOrder + changeDisplayOrderBy);

                // if is a order chage and it its ut of bounds, get out of here
                if (changeDisplayOrderBy < 0 && oldOrder == 0)
                {
                    return;
                }
                if (changeDisplayOrderBy > 0 && oldOrder == maxOrder)
                {
                    return;
                }

                // set the new order
                link.DisplayOrder = order;

                // change the other link display order
                CrossLink link2 = null;
                link2 = context.CrossLinks.SingleOrDefault(c => c.ContentUId != contentUId && c.PageArea == area && c.DisplayOrder == order);
                if (link2 != null)
                {
                    link2.DisplayOrder = oldOrder;
                }

                context.SaveChanges();
            }
        }
コード例 #6
0
        public void RemoveCrossLink(string contentUId, string area)
        {
            using (var context = new Data.CMSContext()) {
                CrossLink link = context.CrossLinks.SingleOrDefault(c => c.ContentUId == contentUId && c.PageArea == area);
                if (link == null)
                {
                    return;
                }

                int order = link.DisplayOrder;

                context.CrossLinks.Remove(link);
                context.SaveChanges();

                // update orders
                context.Database.ExecuteSqlCommand(
                    "UPDATE CrossLinks SET DisplayOrder = DisplayOrder - 1 WHERE PageArea = {0} AND DisplayOrder > {1}", area, order);
            }
        }
コード例 #7
0
        /// <summary>
        /// Adds a news crosslink for the contect at the given area.
        /// </summary>
        /// <param name="contentUId">The content Id</param>
        /// <param name="area">The crosslink area</param>
        /// <param name="changeDisplayOrderBy">Used to change the crosslink display order</param>
        /// <returns></returns>
        public void AddCrossLink(string contentUId, string area, short changeDisplayOrderBy = 0)
        {
            short oldOrder = 0;

            using (var context = new Data.CMSContext()) {

                // max crosslink order
                short maxOrder = -1;
                if (context.CrossLinks.Any(c => c.PageArea == area)) {
                    maxOrder = context.CrossLinks.Where(c => c.PageArea == area).Select(c => c.DisplayOrder).DefaultIfEmpty().Max();
                }

                CrossLink link = context.CrossLinks.SingleOrDefault(c => c.ContentUId == contentUId && c.PageArea == area);

                if (link==null) {
                    link = new CrossLink() { ContentUId = contentUId, PageArea = area, DisplayOrder = (short)(maxOrder + 1) };
                    context.CrossLinks.Add(link);
                }

                // calcs the new crosslink order
                oldOrder = link.DisplayOrder;
                short order = (short)(link.DisplayOrder + changeDisplayOrderBy);

                // if is a order chage and it its ut of bounds, get out of here
                if (changeDisplayOrderBy < 0 && oldOrder == 0)
                    return;
                if (changeDisplayOrderBy > 0 && oldOrder == maxOrder)
                    return;

                // set the new order
                link.DisplayOrder = order;

                // change the other link display order
                CrossLink link2 = null;
                link2 = context.CrossLinks.SingleOrDefault(c => c.ContentUId != contentUId && c.PageArea == area && c.DisplayOrder == order);
                if (link2!=null)
                    link2.DisplayOrder = oldOrder;

                context.SaveChanges();

            }
        }