Skip to content

SAIF.Presentation.Web.Core.Infragistics103 business rules

This page captures business rules enforced by this library.

BR-NC-001: Menu visibility is restricted to authorized items

Field Value
Statement A user's navigable menu items are limited to those returned by the BOF menu-authorization lookup for that user*.
Trigger NavigationContext.New(inUser As String) construction.
Enforcement NavigationContext.vb — New(inUser As String) → clsMenuAuthorizedItemCollection.GetMenuAuthorizedItems(m_DPI, inUser.Trim.ToUpper) (actual authorization logic resides in SAIF.Business.Menu, out of scope for this analysis).
Outcome MenuAuthorizedItems contains only the items the given user is authorized to see; downstream lookups (GetItem, GetCurrentItem, IsMenuItem) can only resolve items within this authorized set.
Source SAIF.Presentation.Web.Core.Infragistics103\NavigationContext.vb

BR-NC-002: Exact match is preferred over fallback match for menu resolution

Field Value
Statement When resolving the current page's menu item, an exact (application code + category + link) match is attempted before falling back to a broader match.
Trigger Calls to NavigationContext.GetItem, GetCurrentItem, or GetCurrentPage.
Enforcement NavigationContext.vb — GetItem/GetCurrentItem first call MenuAuthorizedItems.ItemExact(AppCode, Category, Link, True), then, only when that returns Nothing, call MenuAuthorizedItems.Item(AppCode, Category, Link, True); GetCurrentPage follows the same pattern with MenuAuthorizedItems.FindPageExact(AppCode, PageLink) first, then MenuAuthorizedItems.FindPage(AppCode, PageLink) when that returns Nothing.
Outcome The most specific match is returned when available; otherwise a looser match is returned; if the application code itself cannot be resolved, Nothing is returned without attempting any item lookup.
Source SAIF.Presentation.Web.Core.Infragistics103\NavigationContext.vb

BR-AVPB-001: Session keep-alive only applies to internal (non-external) clients

Field Value
Statement The session-ping keep-alive script is only registered for internal (non-external) client sessions, and only when explicitly enabled.
Trigger Page_Load on any AppViewPageBase-derived page (via CallSessionPing).
Enforcement AppViewPageBase.aspx.vb — CallSessionPing(): If EnableSessionPing Then (outer gate) and, nested inside it, If Not AppGlobal.EnvironmentService.IsClientExternal Then (inner gate) before registering the keep-alive script.
Outcome External client sessions are allowed to time out normally; internal sessions (with EnableSessionPing = True, the default) receive a periodic keep-alive script, provided a SessionPing.aspx page exists in the consuming application.
Source SAIF.Presentation.Web.Core.Infragistics103\AppViewPageBase.aspx.vb

BR-AVPB-002: Broken business rules are visually flagged on their bound grid cell

Field Value
Statement When a grid-bound BOF business object fails validation, each of its broken rules is rendered as a CSS error highlight on the grid cell mapped to the rule's property.
Trigger Explicit call to AppViewPageBase.SetErrorColorInGrid (typically after a save/validate action).
Enforcement AppViewPageBase.aspx.vb — SetErrorColorInGrid: iterates myObject.Rules.BrokenRules, appends " wgcerror" to the matching column's cell CssClass.
Outcome Invalid rows are visually distinguishable; if inSetFocusOnFirstError is True, the grid's active cell is set to the first broken-rule cell found; a column lookup failure for a given rule is silently skipped (Try/Catch).
Source SAIF.Presentation.Web.Core.Infragistics103\AppViewPageBase.aspx.vb

BR-AVPB-003: HelpFolderName must be configured before any Help* property is used

Field Value
Statement Accessing HelpBody, HelpBookmark, HelpHeader, or HelpTOC before HelpFolderName has been set is treated as a configuration error.
Trigger Getter access to HelpBody/HelpBookmark/HelpHeader/HelpTOC (each internally reads HelpFolderName).
Enforcement AppViewPageBase.aspx.vb — HelpFolderName getter: If m_HelpFolderName Is Nothing Then Throw New ApplicationException("HelpFolderName is not set. This is normally set in the Ancestor Configure method.").
Outcome An unhandled ApplicationException is thrown, surfacing a clear configuration-order defect to the developer/consuming page rather than silently returning an incomplete help path.
Source SAIF.Presentation.Web.Core.Infragistics103\AppViewPageBase.aspx.vb

BR-CMM-001: Only .txt and .csv extensions receive an explicit content type

Field Value
Statement Streamed file downloads only set a specific HTTP Content-Type for .txt and .csv file extensions; all other extensions receive an empty content type.
Trigger Call to Utilities.clsMailMessage.StreamDownloadFile.
Enforcement clsMailMessage.vb — Select Case sFileType.ToLower with only Case ".txt" and Case ".csv" populating sContentType; Case Else leaves it empty.
Outcome .txt streams as text/plain, .csv streams as application/vnd.ms-excel; any other extension is written to the response with no Content-Type header value set by this method.
Source SAIF.Presentation.Web.Core.Infragistics103\clsMailMessage.vb

BR-CM-001: WebCombo child controls are excluded from recursive enable/disable

Field Value
Statement When recursively enabling or disabling a control tree, Infragistics WebCombo controls are treated as a leaf — their child controls are not individually walked/toggled.
Trigger Call to Utilities.clsControlManager.EnablePageControl(inCntrl, inEnable) where a descendant control is of type WebCombo.
Enforcement clsControlManager.vb — EnablePageControl: Select Case inCntrl.GetType.Name / Case "WebCombo" ' Skip child controls for these types..
Outcome WebCombo controls are enabled/disabled as a single unit (via UnProtectItem/ProtectItem) rather than having their internal child controls individually toggled, avoiding inconsistent internal combo-box state.
Source SAIF.Presentation.Web.Core.Infragistics103\clsControlManager.vb

Inherited business rules

Members in this section document a business rule enforced by a base-framework type this library's AppViewPageBase extends. It is retrieved from SAIF.Presentation.Web.MVC's own documentation and is listed here so this page's rule coverage is self-contained; see that library's business rules page for further detail.

INH-MVC-008: Internal-address classification (inherited from SAIF.Presentation.Web.MVC)

Field Value
Statement A request is treated as originating "inside the client network" if the caller's host address matches 10.*, 131.131.*.*, or 127.0.0.1.†
Trigger Evaluated on every request via clsControllerBase.IsInsideClient, and consumed here via AppGlobal.EnvironmentService.IsClientExternal in AppViewPageBase.CallSessionPing.†
Enforcement clsControllerBase.IsInsideClient (Like pattern match against Request.UserHostAddress) in SAIF.Presentation.Web.MVC; AppViewPageBase.CallSessionPing relies on the resulting internal/external classification as the inner gate for BR-AVPB-001.†
Outcome Internal callers are eligible for the session keep-alive script (subject to EnableSessionPing); external callers never receive it, regardless of EnableSessionPing.†
Source SAIF.Presentation.Web.MVC\clsControllerBase.vb (via SAIF.Presentation.Web.MVC documentation)

Notes

  • ValidateData/WriteData in clsAppModelBase are stub no-op overrides that always return False; concrete validation/write logic is expected to be supplied by descendant models in consuming applications and is not itself a business rule enforced by this library.
  • SendMail/SendMailWithAttachment in clsMailMessage have no explicit Return statement in their observed bodies, so they effectively always return the default False*.

Note: Statements marked with † are derived from dependency library documentation via the Legends CLI. Statements marked with * were inferred from code structure or contextual evidence. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Presentation.Web.Core.Infragistics103\NavigationContext.vb
  • SAIF.Presentation.Web.Core.Infragistics103\AppViewPageBase.aspx.vb
  • SAIF.Presentation.Web.Core.Infragistics103\clsMailMessage.vb
  • SAIF.Presentation.Web.Core.Infragistics103\clsControlManager.vb
  • SAIF.Presentation.Web.Core.Infragistics103\clsAppModelBase.vb
  • SAIF.Presentation.Web.MVC\clsControllerBase.vb (via SAIF.Presentation.Web.MVC documentation)