Skip to content

SAIF.Presentation.Web.Controls.PopUps.Infragistics111 architecture

This library is a pure presentation-tier component library of eight reusable ASP.NET WebForms user controls ("popups") that render as absolutely-positioned, draggable modal panels. Each control composes a library-embedded .ascx fragment at runtime, communicates results to its host page exclusively through a typed ConfirmAction event, and performs no persistence of its own; one control (ImageMovePopup) additionally embeds AD-group-based authorization logic for image and claim access.

Responsibilities

  • Render self-contained floating popup panels (an absolutely-positioned <iframe> "cover" plus a styled <div>) for capturing claim-activity notes, policy-activity notes, EFT/reason-code selections, notify-task details, image-move context, and generic confirm/alert dialogs.
  • Load each control's markup from a library-embedded .ascx manifest resource at runtime via GetResource() and Page.ParseControl(), rather than the standard UserControl page-directive model.
  • Gate popup visibility via a shared Active boolean property pattern, and communicate the user's choice back to the host page through a typed Public Event ConfirmAction(...).
  • Provide light client-side interaction support: drag repositioning (/Resources/Scripts/PopupDrag.js, external to this library), initial-focus scripting, and (for PolicyActivityPopup) a callback-driven free-form type toggle.
  • Perform embedded, AD-group-based authorization checks (ImageMovePopup only) to gate visibility of claim-security-sensitive worker names and image-move eligibility.
  • Cache reference/code-table data (ClaimActivityPopup) in HttpContext.Current.Cache for 8 hours to avoid repeated database round-trips.

Component boundaries

  • ClaimActivityPopup: composite control capturing Category/Type/note text for a Claim Activity note; delegates code-table retrieval to referenced business packages.
  • EFTPopup: composite control for generic reason-code selection from a caller-supplied list; performs no delegated data access of its own.
  • ImageMovePopup: composite control for claim/policy context entry and optional notify-task capture, gated by AD-group authorization checks (CheckImageSecurity, CheckClaimSecurity) against SAIF.Framework.Security.clsSecurityPrincipal/clsAccountMaintProxy.
  • NotifyPopup: composite control for Notify ID/Date/Text entry with date/required-field validation; no delegated business calls beyond the clsSmartDate value type.
  • PolicyActivityPopup: composite control for Policy Activity note capture, including free-form type entry via ICallbackEventHandler and a Save-and-Email option.
  • PopUpButton: input control (WebControls.Button subclass) wrapping its click in a client-side confirm()/alert() dialog.
  • PopupControl: composite script/postback bridge control that renders chained confirm()/alert() messages and relays the user's choice via IPostBackEventHandler.
  • TODOPopupControl: composite control prompting for Diary/Claim task creation, optionally requiring and validating a Mail ID against employee data.
  • mdlUtilities: internal (Friend) module providing the shared GetResource() embedded-markup loader used by every control's CreateChildControls().
  • Institutions typed DataSet (Institutions.xsd/.xsc/.xss): design-time scaffolding present in the project but not wired into any active control logic*.

Interaction model

  • Each control follows the same lifecycle: CreateChildControls() loads and parses the embedded .ascx fragment, locates child controls via FindControl(), and wires event handlers; PreRender/Render() binds data and emits markup only when Active = True.
  • Controls communicate exclusively through a typed ConfirmAction(Confirm As Boolean, e As <EventArgs>) event raised from a Save/Yes button-click handler; the hosting application (outside this library) owns actual persistence.
  • Where server-side business data is needed (code tables, claim/policy data), controls directly instantiate clsMSOracleDataLayer (hard-coded application code "CLM"/"IMG") to obtain a DataPortalInfo context, then delegate to referenced business/view-layer static factory methods (clsCodeCollection.GetCodeCollection, clsClaimActivityTypeCodeCollection.GetCodes, clsEmployeeData.GetDataByMailID, clsClaimData.GetData, clsPolicyData.GetPolicyData) — this deviates from the typical SAIF BOF IBusinessCriteria pattern used elsewhere.
  • ImageMovePopup additionally consults SAIF.Framework.Security.clsSecurityPrincipal/clsAccountMaintProxy at render time (SetSecurityUserImage()) and at explicit method-call time (CheckImageSecurity, CheckClaimSecurity) to gate claim/image visibility.
  • Client-side drag support, focus scripting, and (for NotifyPopup/EFTPopup) async-partial-postback refresh handling are wired through inline <script> registration rather than server-side rendering logic.

Design constraints

  • No control implements IBusinessCriteria or exposes CreateSQL/RetrieveSQL; all persistence and business-rule logic live in referenced SAIF business/view packages, not in this library.
  • Controls are hand-rolled composite/templated controls (embedded .ascx + Page.ParseControl()) rather than standard ASP.NET UserControl pages — each .ascx has no page directive or code-behind of its own.
  • The client-side drag script (/Resources/Scripts/PopupDrag.js) is an external dependency resolved by URL from the consuming web application, not packaged in this library*.
  • mdlUtilities.GetResource() falls back to a hard-coded local DLL path (c:\netdev\components20\bin\...) outside an HttpContext — a legacy design-time-only fallback not exercised in production*.
  • This library's frameworkDensity is recorded as 0 in dependency-resolution.json for this run; no inherited SAIF framework base-class context is available or included.
  • Authorization logic is concentrated entirely in ImageMovePopup; the other seven controls implement no independent security checks of their own.

Architecture diagram

The following diagram shows the popup controls, their shared composition/utility dependency, and the referenced business/security packages they delegate to.

flowchart TD
    Host["Hosting web page<br>(Legal web app)"]
    Util["mdlUtilities<br>GetResource()"]
    subgraph Lib["SAIF.Presentation.Web.Controls.PopUps.Infragistics111"]
        CAP["ClaimActivityPopup"]
        EFT["EFTPopup"]
        IMP["ImageMovePopup"]
        NP["NotifyPopup"]
        PAP["PolicyActivityPopup"]
        PB["PopUpButton"]
        PC["PopupControl"]
        TODO["TODOPopupControl"]
    end
    Vendor["Infragistics WebUI v11.1<br>WebDateTimeEdit"]
    BizView["SAIF.Business.View.Policy<br>(project reference)"]
    BizPkgs["SAIF.BOF.Business /<br>SAIF.BOF.Business.View.Claim<br>(NuGet packages)"]
    Security["SAIF.Framework.Security<br>clsSecurityPrincipal / clsAccountMaintProxy"]

    Host -->|"sets Active, properties"| Lib
    Lib -->|"ConfirmAction event"| Host
    CAP --> Util
    EFT --> Util
    IMP --> Util
    NP --> Util
    PAP --> Util
    TODO --> Util
    NP --> Vendor
    IMP --> Vendor
    CAP --> BizPkgs
    TODO --> BizPkgs
    IMP --> BizPkgs
    IMP --> BizView
    IMP --> Security

Sequence diagram

The following diagram shows the primary ImageMovePopup sequence: context entry, delegated claim-security check, and the confirm/save round trip with the hosting page.

sequenceDiagram
    participant Host as Hosting page
    participant IMP as ImageMovePopup
    participant Sec as clsSecurityPrincipal
    participant Biz as clsClaimData (referenced)

    Host->>IMP: Set Active = True, ImageFileCode
    IMP->>IMP: CreateChildControls() / GetResource()
    Host->>IMP: txtContextNum TextChanged (postback)
    IMP->>Biz: GetData(DataPortalInfo, contextNum)
    Biz-->>IMP: claim data (incl. strClaimSecurity)
    IMP->>Sec: CheckClaimSecurity() -> IsAuthorized(ADSG_*)
    Sec-->>IMP: allow/deny per resource flag
    IMP-->>Host: Worker name or "Confidential"
    Host->>IMP: cmdSave click
    IMP->>IMP: EditContext() / EditAlertControls()
    IMP-->>Host: ConfirmAction(True, ImageMoveEventArgs)

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.Controls.PopUps.Infragistics111\ClaimActivityPopup.vb, EFTPopup.vb, ImageMovePopup.vb, NotifyPopup.vb, PolicyActivityPopup.vb, PopUpButton.vb, PopupControl.vb, TODOPopupControl.vb, mdlUtilities.vb
  • .saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/analysis/TSK012-analysis.md
  • .saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/analysis/TSK1C-005-security-saif-presentation-web-controls-popups-infragistics111.md
  • .saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/dependency-resolution.json