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); }
/// <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()); } }
/// <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); }
/// <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); }
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); }
/// <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()); } }
/// <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); }
/// <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); }
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); }
/// <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); } }
/// <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); }
/// <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); }