/// <summary> /// Saves the current function being edited. /// </summary> protected override void OnSave() { EditObject.Sistema = DAOFactory.SistemaDAO.FindById(Convert.ToInt32(cbSubSistema.SelectedValue)); EditObject.Descripcion = ddlMenuResource.SelectedValue; EditObject.Url = txtURL.Text.Replace('\\', '/'); EditObject.Parametros = txtParametros.Text; EditObject.Ref = txtReferencia.Text; EditObject.FechaBaja = null; EditObject.Modulo = cbGrupo.SelectedValue; DAOFactory.FuncionDAO.SaveOrUpdate(EditObject); if (Usuario.IdPerfiles.Count == 1 && !Usuario.IdPerfiles.Contains(-1) && !EditMode) { var perfil = DAOFactory.PerfilDAO.FindById(Usuario.IdPerfiles[0]); var movMenu = new MovMenu { Alta = true, Baja = true, Consulta = true, Modificacion = true, VerMapa = true, Perfil = perfil, Funcion = EditObject }; perfil.AddFuncion(movMenu); DAOFactory.PerfilDAO.SaveOrUpdate(perfil); } ReloadUserFunctions(); }
public IList <MovMenu> FindMovMenuBySistema(List <int> perfiles) { MovMenu mv = null; var dc = DetachedCriteria.For <MovMenu>() .CreateAlias("Perfil", "p", JoinType.InnerJoin) .CreateAlias("Funcion", "f", JoinType.InnerJoin) .Add(Restrictions.IsNull("p.FechaBaja")) .Add(Restrictions.IsNull("f.FechaBaja")); if (perfiles.Any(p => p != -1)) { dc.Add(Restrictions.In("p.Id", perfiles)); } dc.SetProjection(Projections.Property("Id")); var projectionList = Projections.ProjectionList().Add( Projections.Max(Projections.Cast(NHibernateUtil.Int32, Projections.Property <MovMenu>(c => c.Alta))).WithAlias(() => mv.Alta)) .Add(Projections.Max(Projections.Cast(NHibernateUtil.Int32, Projections.Property <MovMenu>(c => c.Baja))).WithAlias(() => mv.Baja)) .Add(Projections.Max(Projections.Cast(NHibernateUtil.Int32, Projections.Property <MovMenu>(c => c.Consulta))).WithAlias(() => mv.Consulta)) .Add(Projections.Max(Projections.Cast(NHibernateUtil.Int32, Projections.Property <MovMenu>(c => c.Modificacion))).WithAlias(() => mv.Modificacion)) .Add(Projections.Max(Projections.Cast(NHibernateUtil.Int32, Projections.Property <MovMenu>(c => c.VerMapa))).WithAlias(() => mv.VerMapa)) .Add(Projections.Max(Projections.Cast(NHibernateUtil.Int32, Projections.Property <MovMenu>(c => c.Reporte))).WithAlias(() => mv.Reporte)) .Add(Projections.Min(Projections.Property <MovMenu>(c => c.Orden)).WithAlias(() => mv.Orden)) .Add(Projections.Group <MovMenu>(c => c.Funcion).WithAlias(() => mv.Funcion)); var preresult = Session.CreateCriteria <MovMenu>() .Add(Subqueries.PropertyIn("Id", dc)) .SetFetchMode("Funcion", FetchMode.Select) .SetProjection(projectionList); var result = preresult.SetResultTransformer(Transformers.AliasToBean <tmpMovMenu>()) .List <tmpMovMenu>(); return(result.Select(m => new MovMenu { Alta = m.Alta == 1, Baja = m.Baja == 1, Consulta = m.Consulta == 1, Modificacion = m.Modificacion == 1, VerMapa = m.VerMapa == 1, Reporte = m.Reporte == 1, Orden = m.Orden, Funcion = m.Funcion }) .OrderBy(m => m.Funcion.Sistema.Orden) .ThenBy(m => m.Funcion.Sistema.Descripcion) .ThenBy(m => m.Orden) .ThenBy(m => m.Funcion.Descripcion) .ToList()); }
/// <summary> /// Constructor /// </summary> /// <param name="item">MovMenu item for this module</param> public Module(MovMenu item) { Id = item.Funcion.Id; Name = item.Funcion.Descripcion; RefName = item.Funcion.Ref; Url = item.Funcion.Url; Add = item.Alta; Delete = item.Baja; Edit = item.Modificacion; View = item.Consulta; Report = item.Reporte; GroupId = item.Funcion.Sistema.Id; GroupUrl = item.Funcion.Sistema.Url; Group = item.Funcion.Sistema.Descripcion; GroupOrder = item.Funcion.Sistema.Orden; ModuleOrder = item.Orden; ModuleSubGroup = item.Funcion.Modulo; Parameters = item.Funcion.Parametros; }