Skip to content

SAIF.Presentation.Web.Core.Infragistics111 architecture

SAIF.Presentation.Web.Core.Infragistics111 is the top-most assembly of the presentation package's build chain: it supplies the WebForms page/master-page base classes, the application-level MVC-triad extensions, control-manipulation and mail/download utilities, and the menu navigation/authorization context that every SAIF Business Online screen is built on. It is also the ILMerge host that consolidates the sibling presentation assemblies into the single shipped SAIF.Presentation.Web.Infragistics111.dll.

Responsibilities

  • Provide the WebForms page (AppViewPageBase) and master-page (AppViewMasterPageBase) base classes that every consuming application screen inherits, adding session keep-alive, control back-color reset, grid preference persistence and hover-help wiring on top of the MVC-style ViewPageBase.
  • Extend the framework MVC triad for application use through clsAppControllerBase and clsAppModelBase (write-status enum, standard user messages, mail-request fields, grid customizer collection).
  • Resolve per-user menu authorization and navigation state (NavigationContext), bridging the presentation layer to the Oracle-backed SAIF.Business.Menu collections.
  • Offer stateless presentation utility services — control manipulation (Utilities.clsControlManager), string cleaning (Utilities.clsStringUtilities), and mail/file-download helpers (Utilities.clsMailMessage) — reused across the presentation stack.
  • Merge the sibling presentation assemblies (SAIF.Presentation, SAIF.Presentation.Web.Binding.Infragistics111, SAIF.Presentation.Web.Controls.V2, SAIF.Presentation.Web.Controls.Infragistics111, SAIF.Presentation.Web.Controls.V2.Menu, SAIF.Presentation.Web.MVC, SAIF.Business.Menu, SAIF.Presentation.Web.Controls.AJAX.Infragistics111) into the single deployed SAIF.Presentation.Web.Infragistics111.dll via postbuild.bat/ILMerge.

Component boundaries

  • Page/master lifecycle layer (AppViewPageBase, AppViewMasterPageBase): sits atop every consuming application's WebForms page hierarchy; extends SAIF.Presentation.Web.MVC.ViewPageBase.
  • MVC triad extension layer (clsAppControllerBase, clsAppModelBase): extends SAIF.Presentation.Web.MVC's clsControllerBase / clsModelBase with application-level conventions.
  • Presentation utility layer (Utilities.clsControlManager, Utilities.clsStringUtilities, Utilities.clsMailMessage, clsNestedMaster): stateless static helper services with no dependency on the page hierarchy beyond the AppViewPageBase parameter accepted by StreamDownloadFile.
  • Navigation/authorization context layer (NavigationContext): the only type in the library that reaches a database; composes SAIF.Business.Menu collections over an Oracle data layer (clsMSOracleDataLayer, DB user MENU) to answer "what menu items is this user authorized to see, and where am I now". No direct SQL is issued by this library — all statement execution is delegated to SAIF.Business.Menu.

Interaction model

  • Consuming application pages inherit AppViewPageBase, which on Init/Load wires session keep-alive (CallSessionPing, gated by AppGlobal.EnvironmentService.IsClientExternal*) and control back-color reset (Utilities.clsControlManager.ResetBackColor).
  • AppViewMasterPageBase-derived master pages compose the standard SAIF chrome, delegating menu rendering to SAIFMenu / SAIFMenuTop (SAIF.Presentation.Web.Controls.V2.Menu) and banner rendering to BannerControl (SAIF.Presentation.Web.Controls.V2).
  • NavigationContext is constructed once per session bootstrap with the authenticated user name; it opens clsMSOracleDataLayer("MENU", …) and loads clsMenuAuthorizedItemCollection (SAIF.Business.Menu), then answers all subsequent navigation questions from the in-memory authorized set (no further database access).
  • clsMailMessage calls the legacy SAIFMail.clsSAIFMessage SOAP service, whose endpoint URL is resolved per call from AppGlobal.EnvironmentService.GetConfigSetting("LegacyMailWebServiceUrl").
  • Preference persistence for grid column/sort/size state flows through m_controller.Model.Preferences (SAIF.Framework.Preferences, package SAIF.BOF.Framework), reached transitively via SAIF.Presentation's clsPreferences.

Architecture diagram

The following diagram shows how a consuming application page flows through this library's components.

flowchart TD
    A["Consuming app page<br>(inherits AppViewPageBase)"] --> B["AppViewPageBase<br>Page_Init / Page_Load"]
    B --> C["CallSessionPing()<br>registers PingSession.js"]
    B --> D["clsControlManager.ResetBackColor(Me)"]
    A --> E["Preference operations<br>Apply/Save/ClearPreferences"]
    E --> F["m_controller.Model.Preferences<br>(SAIF.Framework.Preferences)"]
    A --> G["AppViewMasterPageBase<br>chrome accessors"]
    G --> H["SAIFMenu / SAIFMenuTop / BannerControl<br>(Controls.V2 + V2.Menu)"]
    A --> I["NavigationContext"]
    I --> J["clsMSOracleDataLayer<br>MENU_ENVIRONMENT, DB user MENU"]
    J --> K["SAIF.Business.Menu collections<br>(authorized menu items)"]
    A --> L["clsMailMessage.SendMail"]
    L --> M["SAIFMail.clsSAIFMessage<br>legacy mail SOAP service"]

Sequence diagram

The following diagram shows the primary menu-authorization bootstrap sequence.

sequenceDiagram
    participant Page as Consuming page
    participant Nav as NavigationContext
    participant DAL as clsMSOracleDataLayer
    participant Menu as SAIF.Business.Menu
    Page->>Nav: New(inUser)
    Nav->>DAL: New("MENU", MENU_ENVIRONMENT)
    DAL-->>Nav: IDataPortalInfo
    Nav->>Menu: clsMenuAuthorizedItemCollection.GetMenuAuthorizedItems(dpi, user)
    Menu-->>Nav: Authorized item collection
    Page->>Nav: IsMenuItem / GetCurrentPage / GetItem
    Nav-->>Page: In-memory lookup result (no further DB access)

Design constraints

  • The library targets .NET Framework 4.6.1 WebForms and is bound to Infragistics 11.1 control assemblies for grid-preference and control-manipulation behavior.
  • NavigationContext never re-validates that the supplied user name matches the authenticated identity — callers (SAIF.Presentation.Web.MVC, SAIF.Presentation.Web.Controls.V2.Menu) are responsible for supplying a trusted identity value.*
  • The Oracle environment name (MENU_ENVIRONMENT) is read via raw ConfigurationManager.AppSettings rather than the framework environment service, so it must be independently maintained in every hosting application's web.config.
  • This library is the ILMerge host; its postbuild.bat step couples the build/release process of eight other libraries to this project's build.
  • No local business rules are enforced beyond UI/session conventions (session-ping gating, control back-color rules); menu authorization rules themselves are enforced by SAIF.Business.Menu.

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb
  • SAIF.Presentation.Web.Core.Infragistics111/AppViewMasterPageBase.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsAppControllerBase.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsAppModelBase.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vb
  • SAIF.Presentation.Web.Core.Infragistics111/clsMailMessage.vb
  • SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb
  • SAIF.Presentation.Web.Core.Infragistics111/postbuild.bat