Exemple #1
0
        private List <IVisio.Page> filter_pages_by_type(List <IVisio.Page> pages, Models.PageType pagetype)
        {
            if (pages == null)
            {
                return(null);
            }

            if (pagetype == Models.PageType.Any)
            {
                return(pages);
            }
            if (pagetype == Models.PageType.Foreground)
            {
                return(pages.Where(p => p.Background == 0).ToList());
            }

            if (pagetype == Models.PageType.Background)
            {
                return(pages.Where(p => p.Background != 0).ToList());
            }

            string msg = "Unsupported value for pagetype";

            throw new System.ArgumentOutOfRangeException(nameof(pagetype), msg);
        }
Exemple #2
0
        /// <summary>
        /// Adds or updates the given model in the database
        /// depending on its state.
        /// </summary>
        /// <param name="model">The model</param>
        public void Save(Models.PageType model)
        {
            var type = _db.PageTypes
                       .FirstOrDefault(t => t.Id == model.Id);

            if (type == null)
            {
                type = new Data.PageType
                {
                    Id      = model.Id,
                    Created = DateTime.Now
                };
                _db.PageTypes.Add(type);
            }
            type.CLRType      = model.CLRType;
            type.Body         = JsonConvert.SerializeObject(model);
            type.LastModified = DateTime.Now;

            _db.SaveChanges();

            lock (_typesMutex)
            {
                Load();
            }
        }
        /// <summary>
        /// Adds or updates the given model in the database
        /// depending on its state.
        /// </summary>
        /// <param name="model">The model</param>
        public void Save(Models.PageType model)
        {
            var type = db.PageTypes
                       .FirstOrDefault(t => t.Id == model.Id);

            if (type == null)
            {
                type = new Data.PageType()
                {
                    Id      = model.Id,
                    Created = DateTime.Now
                };
                db.PageTypes.Add(type);
            }
            type.CLRType      = model.CLRType;
            type.Body         = JsonConvert.SerializeObject(model);
            type.LastModified = DateTime.Now;

            db.SaveChanges();

            if (cache != null)
            {
                cache.Remove(model.Id.ToString());
            }
        }
Exemple #4
0
        /// <summary>
        /// Updates the given model in the database.
        /// </summary>
        /// <param name="model">The model</param>
        /// <param name="transaction">The optional transaction</param>
        private void Update(Models.PageType model, IDbTransaction transaction = null)
        {
            var pageType = db.QueryFirst <PageType>($"SELECT * FROM [{table}] WHERE [Id]=@Id", new {
                Id = model.Id
            });

            pageType.Body         = JsonConvert.SerializeObject(model);
            pageType.LastModified = DateTime.Now;

            db.Execute($"UPDATE [{table}] SET [Body]=@Body, [LastModified]=@LastModified WHERE [Id]=@Id",
                       pageType, transaction: transaction);
        }
Exemple #5
0
        /// <summary>
        /// Adds a new model to the database.
        /// </summary>
        /// <param name="model">The model</param>
        /// <param name="transaction">The optional transaction</param>
        private void Add(Models.PageType model, IDbTransaction transaction = null)
        {
            var pageType = new PageType()
            {
                Id           = model.Id,
                Body         = JsonConvert.SerializeObject(model),
                Created      = DateTime.Now,
                LastModified = DateTime.Now
            };

            db.Execute($"INSERT INTO [{table}] ([Id], [Body], [Created], [LastModified]) VALUES (@Id, @Body, @Created, @LastModified)",
                       pageType, transaction: transaction);
        }
Exemple #6
0
        private void Initialize(BaseViewModel parent, ProjectItemViewModel item, Models.PageType type)
        {
            _ProjectItem = item;

            _Model     = new Models.Page();
            Header     = item.Name;
            Identifier = Guid.NewGuid();
            Type       = type;

            item.PropertyChanged += ProjectItem_PropertyChanged;

            BuildEditor();

            _CloseFileCommand  = new Commands.DelegateCommand(PerformCloseFile);
            _SelectPageCommand = new Commands.DelegateCommand(PerformSelectPage);
        }
Exemple #7
0
        /// <summary>
        /// Adds or updates the given model in the database
        /// depending on its state.
        /// </summary>
        /// <param name="model">The model</param>
        /// <param name="transaction">The optional transaction</param>
        public void Save(Models.PageType model, IDbTransaction transaction = null)
        {
            if (db.ExecuteScalar <int>($"SELECT COUNT([Id]) FROM [{table}] WHERE [Id]=@Id", model, transaction: transaction) == 0)
            {
                Add(model, transaction);
            }
            else
            {
                Update(model, transaction);
            }

            if (cache != null)
            {
                cache.Remove(model.Id.ToString());
            }
        }
Exemple #8
0
        /// <summary>
        /// Test the page type repository.
        /// </summary>
        protected void Run()
        {
            using (var api = new Api()) {
                // Add new model
                var model = new Models.PageType()
                {
                    Name  = "Standard page",
                    Route = "page"
                };
                api.PageTypes.Add(model);
                api.SaveChanges();
            }

            using (var api = new Api()) {
                // Get model
                var model = api.PageTypes.GetSingle(where : t => t.Slug == "standard-page");

                Assert.IsNotNull(model);
                Assert.AreEqual("Standard page", model.Name);
                Assert.AreEqual("page", model.Route);

                // Update model
                model.Name = "Updated page";
                api.SaveChanges();
            }

            using (var api = new Api()) {
                // Verify update
                var model = api.PageTypes.GetSingle(where : t => t.Slug == "standard-page");

                Assert.IsNotNull(model);
                Assert.AreEqual("Updated page", model.Name);
                Assert.AreEqual("page", model.Route);

                // Remove model
                api.PageTypes.Remove(model);
                api.SaveChanges();
            }

            using (var api = new Api()) {
                // Verify remove
                var model = api.PageTypes.GetSingle(where : t => t.Slug == "standard-page");
                Assert.IsNull(model);
            }
        }
        /// <summary>
        /// Gets the model with the specified id.
        /// </summary>
        /// <param name="id">The unique i</param>
        /// <returns></returns>
        public Models.PageType GetById(string id)
        {
            Models.PageType model = cache != null?cache.Get <Models.PageType>(id) : null;

            if (model == null)
            {
                var type = db.PageTypes
                           .AsNoTracking()
                           .FirstOrDefault(t => t.Id == id);

                if (type != null)
                {
                    model = JsonConvert.DeserializeObject <Models.PageType>(type.Body);
                }

                if (cache != null && model != null)
                {
                    cache.Set(model.Id, model);
                }
            }
            return(model);
        }
Exemple #10
0
        /// <summary>
        /// Gets the model with the specified id.
        /// </summary>
        /// <param name="id">The unique i</param>
        /// <param name="transaction">The optional transaction</param>
        /// <returns></returns>
        public Models.PageType GetById(string id, IDbTransaction transaction = null)
        {
            Models.PageType model = cache != null?cache.Get <Models.PageType>(id) : null;

            if (model == null)
            {
                var type = db.QueryFirstOrDefault <PageType>($"SELECT * FROM [{table}] WHERE [Id]=@Id", new {
                    Id = id
                }, transaction: transaction);

                if (type != null)
                {
                    model = JsonConvert.DeserializeObject <Models.PageType>(type.Body);
                }

                if (cache != null && model != null)
                {
                    cache.Set(model.Id, model);
                }
            }
            return(model);
        }
Exemple #11
0
        public List <IVisio.Page> FindPagesInActiveDocumentByName(string name, Models.PageType pagetype)
        {
            var cmdtarget = this._client.GetCommandTargetDocument();

            var active_document = cmdtarget.ActiveDocument;

            if (VisioScripting.Helpers.WildcardHelper.NullOrStar(name))
            {
                // return all pages
                var all_pages = active_document.Pages.ToList();
                all_pages = filter_pages_by_type(all_pages, pagetype);
                return(all_pages);
            }
            else
            {
                // return the named page
                var all_pages   = active_document.Pages.ToEnumerable();
                var named_pages = VisioScripting.Helpers.WildcardHelper.FilterObjectsByNames(all_pages, new[] { name }, p => p.Name, true, VisioScripting.Helpers.WildcardHelper.FilterAction.Include).ToList();
                named_pages = filter_pages_by_type(named_pages, pagetype);

                return(named_pages);
            }
        }
        public List <IVisio.Page> FindPagesByName(TargetDocument targetdoc, string name, Models.PageType pagetype)
        {
            targetdoc = targetdoc.Resolve(this._client);

            if (VisioScripting.Helpers.WildcardHelper.NullOrStar(name))
            {
                // return all pages
                var all_pages = targetdoc.Document.Pages.ToList();
                all_pages = _filter_pages_by_type(all_pages, pagetype);
                return(all_pages);
            }
            else
            {
                // return the named page
                var all_pages   = targetdoc.Document.Pages.ToEnumerable();
                var named_pages = VisioScripting.Helpers.WildcardHelper.FilterObjectsByNames(all_pages, new[] { name }, p => p.Name, true, VisioScripting.Helpers.WildcardHelper.FilterAction.Include).ToList();
                named_pages = _filter_pages_by_type(named_pages, pagetype);

                return(named_pages);
            }
        }
 /// <summary>
 /// Deletes the given model.
 /// </summary>
 /// <param name="model">The model</param>
 public void Delete(Models.PageType model)
 {
     Delete(model.Id);
 }
Exemple #14
0
        private void Initialize(BaseViewModel parent, ProjectItemViewModel item, Models.PageType type)
        {
            _ProjectItem = item;

            _Model = new Models.Page();
            Header = item.Name;
            Identifier = Guid.NewGuid();
            Type = type;

            item.PropertyChanged += ProjectItem_PropertyChanged;

            BuildEditor();

            _CloseFileCommand = new Commands.DelegateCommand(PerformCloseFile);
            _SelectPageCommand = new Commands.DelegateCommand(PerformSelectPage);
        }
Exemple #15
0
        /// <summary>
        /// Builds the page type in the data store.
        /// </summary>
        /// <param name="api">The current api</param>
        internal void Build(Api api)
        {
            bool create = false;

            // Ensure slug
            if (String.IsNullOrWhiteSpace(Slug))
            {
                Slug = Utils.GenerateSlug(Name);
            }

            // Create or update page type
            var type = api.PageTypes.GetSingle(t => t.Slug == Slug);

            if (type == null)
            {
                type = new Models.PageType()
                {
                    Id   = Guid.NewGuid(),
                    Slug = Slug,
                };
                create = true;
            }

            // Map page type
            type.Name        = Name;
            type.Description = Description;
            type.Route       = Route;
            type.View        = View;

            // Get the removed regions
            var removed = new List <Models.PageTypeRegion>();

            foreach (var region in type.Regions)
            {
                if (Regions.Where(r => r.InternalId == region.InternalId).SingleOrDefault() == null)
                {
                    removed.Add(region);
                }
            }

            // Map existing regions
            for (var n = 0; n < Regions.Count; n++)
            {
                var reg = type.Regions.Where(r => r.InternalId == Regions[n].InternalId).SingleOrDefault();

                if (reg == null)
                {
                    reg = new Models.PageTypeRegion()
                    {
                        TypeId     = type.Id,
                        InternalId = Regions[n].InternalId
                    };
                    type.Regions.Add(reg);
                }
                reg.Name         = Regions[n].Name;
                reg.IsCollection = Regions[n].IsCollection;
                reg.CLRType      = Regions[n].CLRType;
                reg.Order        = n + 1;
            }

            // Delete removed regions
            foreach (var region in removed)
            {
                type.Regions.Remove(region);
            }

            // Add the page type if its new
            if (create)
            {
                api.PageTypes.Add(type);
            }
        }
Exemple #16
0
 /// <summary>
 /// Deletes the given model.
 /// </summary>
 /// <param name="model">The model</param>
 /// <param name="transaction">The optional transaction</param>
 public async Task Delete(Models.PageType model, IDbTransaction transaction = null)
 {
     await Delete(model.Id, null);
 }
Exemple #17
0
 /// <summary>
 /// Deletes the given model.
 /// </summary>
 /// <param name="model">The model</param>
 /// <param name="transaction">The optional transaction</param>
 public void Delete(Models.PageType model, IDbTransaction transaction = null)
 {
     Delete(model.Id, null);
 }