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;
}