protected override bool OnValidate() { _page = Page.Query.Include(nameof(Page.PageModules)).SingleOrDefault(p => p.Name.Equals(PageName, StringComparison.OrdinalIgnoreCase)); if (_page == null) { AddMessage(Message.GLOBAL, new Message("Attempted to save module to non-existing page", MessageTypes.Error)); return(false); } if (_page.AdminLocked && !SessionVariables.User.IsInRole("Admin")) { AddMessage(Message.GLOBAL, new Message("You are not permitted to edit an admin locked page", MessageTypes.Error)); NTGLogger.LogSecurityAction(HttpContext.Current.Request, SessionVariables.User, "Attempted to edit/create module in admin locked page" + _page.Id + " '" + _page.Name + "'"); return(false); } if (Id != 0) { _module = ModuleBoxes.Query.SingleOrDefault(mc => mc.Id == Id); if (_module == null) { AddMessage(Message.GLOBAL, new Message("Module not found", MessageTypes.Error)); return(false); } var moduleTypeId = ModuleService.ModuleTypes[ModuleService.MODULE_BOXES]; _pageModule = PageModule.Query.SingleOrDefault(mp => mp.ModuleId == _module.Id && mp.ModuleTypeId == moduleTypeId && mp.PageId == _page.Id); if (_pageModule == null) { AddMessage(Message.GLOBAL, new Message("Module does not belong to current page", MessageTypes.Error)); return(false); } } if (Boxes == null || !Boxes.Any(b => !b.IsDelete)) { AddMessage(nameof(State) + GetErrorMessageSufix(), new Message("Module Boxes requires at least one box", MessageTypes.Error)); return(false); } return(true); }