public PageDTO SavePage(PageDTO pagedto) { using (ISession session = HibernateHelper.GetSession().OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { try { Page page = new Page(); Mapper.CreateMap<PageDTO, Page>(); Mapper.CreateMap<PageElementDTO, PageElement>(); Mapper.CreateMap<ElementDTO, Element>(); //Mappo la PageDTO in Page page = Mapper.Map<PageDTO, Page>(pagedto); Regex punt = new Regex(@"[\t\r\n\e\a._%+-/]"); page.Title = punt.Replace(page.Title.Replace(" ", "").Trim().Replace(" ", "_"), "_"); if (page.Publictitle != null && page.Contentid > 0 && page.Position > 0) { page.Publictitle = EditorServices.ReplaceCharacters(page.Publictitle); if (page.IsNew) { // Salvo la Nuova pagina HibernateHelper.Persist(page, session); if (page.PageelementsList.Count == 0) { //Creo Le Page Elements in base alla struttura //Ricavo la lista degli elementi della struttura per generare i PageElement List<Element> structList = new List<Element>(); structList = HibernateHelper.SelectCommand<Element>(session, " STRUCTUREID =" + page.Structureid); ISet<PageElement> PaElements = new HashedSet<PageElement>(); foreach (Element el in structList) { PageElement PaElement = new PageElement(); PaElement.Element = el; PaElement.Elementid = el.Elementid; PaElement.Page = page; PaElement.Pageid = page.Pageid; PaElement.Valore = EditorServices.ReplaceCharacters(el.Description); PaElement.IsNew = true; if (el.Elementtypeid == (int)ElementTypeEnum.RawHtml) { //solo RawHtml RawHtml raw = new RawHtml(); raw.Value = EditorServices.ReplaceCharacters(el.Description); raw.IsNew = true; HibernateHelper.Persist(raw, session); PaElement.Rawhtmlid = raw.Rawhtmlid; } HibernateHelper.Persist(PaElement, session); PaElements.Add(PaElement); } page.PageElements = PaElements; PaElements = page.PageElements; } // Setto il padre al pageid se è zero if (page.Parentpageid == 0) { page.Parentpageid = page.Pageid; } else { page.Parentpageid = page.Parentpageid; } // Setto skinID a null se è zero if (page.Skinid == 0) { page.Skinid = null; } page.Dirty = true; HibernateHelper.Persist(page, session); } else if (page.Dirty) { //Update della Pagina Esistente HibernateHelper.Persist(page, session); //Foreach delle pageelements foreach (PageElement el in page.PageelementsList) { el.Pageid = page.Pageid; if (el.Deleted) { page.PageElements.Remove(el); HibernateHelper.Persist(el, session); } else { el.Valore = EditorServices.ReplaceCharacters(el.Valore); HibernateHelper.Persist(el, session); } } } } //Rimappo l'oggetto da restituire Mapper.CreateMap<Page, PageDTO>(); Mapper.CreateMap<PageElement, PageElementDTO>(); Mapper.CreateMap<Element, ElementDTO>(); //Mappo la PageDTO in Page pagedto = Mapper.Map<Page, PageDTO>(page); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } finally { session.Flush(); session.Close(); } } } //Setto lo stato del content a non allineato ContentServices contSvc = new ContentServices(); contSvc.SetStateContent(pagedto.Contentid, (int)ContentStateEnum.NonAllineato); return pagedto; }
public PageDTO MovePage(PageDTO pagedto) { using (ISession session = HibernateHelper.GetSession().OpenSession()) { ITransaction transaction = session.BeginTransaction(); try { if (pagedto.Parentpageid > 0) { //Prendo i Figli del nuovo padre della pagina DTO List<Page> Figli = new List<Page>(); Figli = EditorServices.GetPageByParent(session, pagedto.Contentid, pagedto.Parentpageid); bool update = false; //Aggiorno la posizione dei figli successivi al DTO //Controllo se esiste un figlio in posizione 1 //var uone = (from u in Figli // where u.Position == 1 // select u).FirstOrDefault<Page>(); int oldpos = 0; var con = (from f in Figli where f.Pageid == pagedto.Pageid select f).FirstOrDefault<Page>(); if (con != null) { oldpos = con.Position; } foreach (Page pg in Figli) { if (pg.Pageid == pagedto.Pageid) { oldpos = pg.Position; pg.Position = pagedto.Position; pg.Parentpageid = pagedto.Parentpageid; pg.Dirty = true; HibernateHelper.Persist(pg, session); update = true; } else if (pg.Position > pagedto.Position) { pg.Position = pg.Position + 1; pg.Dirty = true; HibernateHelper.Persist(pg, session); } else if (pg.Position <= pagedto.Position // && pg.Position != 1 && con != null) { if (pg.Position == pagedto.Position && oldpos > pagedto.Position) { pg.Position = pg.Position + 1; } else { pg.Position = pg.Position - 1; } pg.Dirty = true; HibernateHelper.Persist(pg, session); } } if (!update) { Page page = new Page(); Mapper.CreateMap<PageDTO, Page>(); Mapper.CreateMap<PageElementDTO, PageElement>(); Mapper.CreateMap<ElementDTO, Element>(); //Mappo la PageDTO in Page page = Mapper.Map<PageDTO, Page>(pagedto); HibernateHelper.Persist(page, session); } transaction.Commit(); transaction = session.BeginTransaction(); Figli = EditorServices.GetPageByParent(session, pagedto.Contentid, pagedto.Parentpageid); var child = from cd in Figli orderby cd.Position ascending select cd; int position = 1; foreach (Page ch in child) { ch.Position = position; ch.Dirty = true; position++; HibernateHelper.Persist(ch, session); } transaction.Commit(); } } catch (Exception ex) { transaction.Rollback(); throw ex; } finally { session.Flush(); session.Close(); transaction.Dispose(); } } //Setto lo stato del content a non allineato ContentServices contSvc = new ContentServices(); contSvc.SetStateContent(pagedto.Contentid, (int)ContentStateEnum.NonAllineato); return pagedto; }
public Boolean PublishPage(int pageID, string pathIdItem) { Boolean status = false; using (ISession session = HibernateHelper.GetSession().OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { try { string fileserver = ConfigurationSettings.AppSettings["FileServer"]; Page pg = new Page(); pg = EditorServices.GetPageById(pageID, session); //creo una cartella sul fileserver string pathCont = Path.Combine(fileserver, pg.Content.Contentid.ToString() + "_" + pg.Content.Title.Trim().Replace(" ", "_")); if (!Directory.Exists(pathCont)) { Directory.CreateDirectory(pathCont); } EditorServices.PublicPage(pg, pathCont, pathIdItem, " "); } catch (Exception ex) { transaction.Rollback(); throw ex; } finally { session.Flush(); session.Close(); status = true; } } } return status; }
public string GetPathPage(int pageID) { string path = ""; using (ISession session = HibernateHelper.GetSession().OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { try { Page Page = new Page(); Page = EditorServices.GetPageById(pageID, session); while (Page.Pageid != Page.Parentpageid && Page.Level != 0) { if (Page.State != 99) {//Evito il Cestino path = @"\" + Page.Publictitle + path; } Page = EditorServices.GetPageById(Page.Parentpageid, session); } if (Page.State != 99) {//Evito il Cestino path = @"\" + Page.Publictitle + path; } } catch (Exception ex) { throw ex; } finally { session.Flush(); session.Close(); } } } return path; }
public PageDTO ClonePage(PageDTO pagedto, int idItemAmm, string FolderToSave) { using (ISession session = HibernateHelper.GetSession().OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { try { Page page = new Page(); Mapper.CreateMap<PageDTO, Page>(); Mapper.CreateMap<PageElementDTO, PageElement>(); //Mappo la PageDTO in Page page = Mapper.Map<PageDTO, Page>(pagedto); //Tengo in memoria il pageid da clonare int pageId = page.Pageid; //Salvo la nuova Pagina HibernateHelper.Persist(page, session); //Ricavo i PageElements del padre List<PageElement> CloneElements = HibernateHelper.SelectCommand<PageElement>(session, new string[] { "Pageid" }, new object[] { pageId }, new Operators[] { Operators.Eq }); //Ciclo sui CloneElements ISet<PageElement> ChildElements = new HashedSet<PageElement>(); foreach (PageElement el in CloneElements) { PageElement child = new PageElement(); child.IsNew = true; child.Page = page; child.Pageid = page.Pageid; child.Valore = EditorServices.ReplaceCharacters(el.Valore); child.Filename = el.Filename; child.Element = el.Element; child.Elementid = el.Elementid; if (el.Element.ElementType.Elementtypeid == (int)ElementTypeEnum.RawHtml) { //Get RawHtml Clone RawHtml cloneraw = new RawHtml(); cloneraw = HibernateHelper.SelectIstance<RawHtml>(session, new string[] { "Rawhtmlid" }, new object[] { el.Rawhtmlid }, new Operators[] { Operators.Eq }); RawHtml childraw = new RawHtml(); childraw.IsNew = true; childraw.Value = EditorServices.ReplaceCharacters(cloneraw.Value); SaveRawHtml(childraw, FolderToSave); child.Rawhtmlid = childraw.Rawhtmlid; } HibernateHelper.Persist(child, session); ChildElements.Add(child); } page.PageElements = ChildElements; ChildElements = page.PageElements; // Setto il padre al pageid se è zero if (page.Parentpageid == 0) { page.Parentpageid = page.Pageid; } else { page.Parentpageid = page.Parentpageid; } // Setto skinID a null se è zero if (page.Skinid == 0) { page.Skinid = null; } page.Dirty = true; HibernateHelper.Persist(page, session); //Rimappo l'oggetto da restituire Mapper.CreateMap<Page, PageDTO>(); Mapper.CreateMap<PageElement, PageElementDTO>(); Mapper.CreateMap<Element, ElementDTO>(); //Mappo la PageDTO in Page pagedto = Mapper.Map<Page, PageDTO>(page); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } finally { session.Flush(); session.Close(); } } } //Setto lo stato del content a non allineato ContentServices contSvc = new ContentServices(); contSvc.SetStateContent(pagedto.Contentid, (int)ContentStateEnum.NonAllineato); return pagedto; }
public PageDTO GetPage(int pageId) { using (ISession session = HibernateHelper.GetSession().OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { try { Page page = new Page(); page = EditorServices.GetPageById(pageId, session); Mapper.CreateMap<Page, PageDTO>(); Mapper.CreateMap<PageElement, PageElementDTO>(); Mapper.CreateMap<Element, ElementDTO>(); PageDTO pageToReturn = new PageDTO(); pageToReturn = Mapper.Map<Page, PageDTO>(page); pageToReturn.Path = GetPathPage(page.Parentpageid); if (page.Level != 0) { pageToReturn.Path = pageToReturn.Path + @"\" + page.Publictitle; } return pageToReturn; } catch (Exception ex) { throw ex; } finally { session.Flush(); session.Close(); } } } }
public Boolean DeletePage(PageDTO pagedto) { Boolean status = false; using (ISession session = HibernateHelper.GetSession().OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { try { Page page = new Page(); Mapper.CreateMap<PageDTO, Page>(); Mapper.CreateMap<PageElementDTO, PageElement>(); //Mappo la PageDTO in Page page = Mapper.Map<PageDTO, Page>(pagedto); //Prendo i Figli del padre della pagina DTO List<Page> Figli = new List<Page>(); Figli = EditorServices.GetPageByParent(session, page.Contentid, page.Parentpageid); //Sposto il Pagedto Salvato accodandolo all'ultima posizione del cestino Page Cestino = new Page(); Cestino = EditorServices.GetBasket(session, page.Contentid); int actualpos = 0; if (Cestino != null) { List<Page> Cestinati = new List<Page>(); Cestinati = EditorServices.GetPageByParent(session, page.Contentid, Cestino.Pageid); if (Cestinati.Count > 0) { actualpos = (from c in Cestinati select c.Position).Max(); } } //Decremento la posizione dei figli successivi al DTO foreach (Page pg in Figli) { if (pg.Position > pagedto.Position) { pg.Position = pg.Position - 1; pg.Dirty = true; HibernateHelper.Persist(pg, session); } else if (pg.Pageid == page.Pageid) { page = pg; pg.Parentpageid = Cestino.Pageid; pg.Position = actualpos + 1; pg.Dirty = true; pg.Deleted = false; HibernateHelper.Persist(pg, session); } } transaction.Commit(); status = true; } catch (Exception ex) { transaction.Rollback(); status = false; throw ex; } finally { session.Flush(); session.Close(); } } } //Setto lo stato del content a non allineato ContentServices contSvc = new ContentServices(); contSvc.SetStateContent(pagedto.Contentid, (int)ContentStateEnum.NonAllineato); return status; }
public virtual bool Equals(Page obj) { if (obj == null) return false; if (Equals(Pageid, obj.Pageid) == false) return false; if (Equals(Parentpageid, obj.Parentpageid) == false) return false; if (Equals(Contentid, obj.Contentid) == false) return false; if (Equals(Skinid, obj.Skinid) == false) return false; if (Equals(Title, obj.Title) == false) return false; if (Equals(Publictitle, obj.Publictitle) == false) return false; if (Equals(Position, obj.Position) == false) return false; if (Equals(State, obj.State) == false) return false; if (Equals(Structureid, obj.Structureid) == false) return false; return true; }