Builder Portal
The Builder Portal is a touch-friendly ASP.NET Web Forms site (BuilderPortal2024/) for superintendents and field builders. After sign-in, every page scopes to the user’s default project (Session["GLBL_defaultProjectID"]), which they can change under Admin → Default Project.
What’s on each page
Section titled “What’s on each page”| Page | What it does |
|---|---|
Default.aspx | Redirects to /Schedule (not the project picker). |
DefaultProject.aspx | Set the active project (spInsertBuilderPortalDefaultProject); reachable from the Admin menu. |
Schedule.aspx | Daily field schedule for the default project (lot / address / slot filters). SharePoint DOCS links per lot. |
WorkApproval.aspx | Approve completed trade work for payment. Calls spProcessPaymentReview via Api/Ajax/workApproval.asmx (ProcessWorkApprovalv2), logs to BuilderPortalWorkOrderApprovalLog. Hidden from intern accounts. |
PurchaseOrders.aspx | PO list and lot drill-down for the default project. |
WorkOrders.aspx | Open work orders by activity / vendor for the project (linked from schedule flows, not the main nav). |
DelayRequest.aspx | Submit a builder-initiated delay request (spGetBuilderPortalDelayRequestInfo_v2); emails the area manager (not an approve/deny screen for Trade Portal submissions). Hidden from interns. |
TradeContacts.aspx | Standalone trade-contact lookup (trade phone/email also appears inline on Work Orders via bpInfo.asmx). |
Documents.aspx | Placeholder page; project documents are opened via SharePoint links on Schedule.aspx and the nav Docs menu. |
session.aspx / sessionRefresh.aspx | Session debug / keep-alive helpers. |
Default-Old-Tree.aspx, TESTPAGE.aspx | Legacy or internal test pages. |
Main navigation (Site.master)
Section titled “Main navigation (Site.master)”Visible to all signed-in users: Schedule, Purchase Orders, Lot Notes (modal).
For non-intern users (GLBL_intern = false): Work Approval, Delay Request.
Docs dropdown → SharePoint (intranet + trade extranet). Admin → Default Project, Logout.
Schedule.aspx, PurchaseOrders.aspx, WorkApproval.aspx, and WorkOrders.aspx also host User_Controls modals for PO, options, selections, lot information, and trade contacts (not only Lot Notes).
Backend services (Api/Ajax/)
Section titled “Backend services (Api/Ajax/)”| ASMX | Role |
|---|---|
utils.asmx | ProcessLogin — Active Directory validation (TheSmartBuilder domain), Forms Auth ticket, loads UserAccount + default project into session. |
workApproval.asmx | Batch work approval → spProcessPaymentReview + BuilderPortalWorkOrderApprovalLog. |
bpInfo.asmx | Lot info, trade contacts, and related AJAX used by schedule / PO pages. |
Shared helpers live in Old_App_Code/common.cs (BuilderPortal.CommonCode).
How it talks to the database
Section titled “How it talks to the database”- Reads (scoped by default project):
Lot,EstimateActivity,EstimateCriticalActivity,PurchaseOrder, schedule/PO views, trade contact data, etc. - Writes:
spProcessPaymentReview(@BuilderPortal = 1) when work is approved — downstream proc logic queues accounting /TransmissionPOApproveas needed.BuilderPortalWorkOrderApprovalLog(audit of each approvedPurchaseOrderSysID).spInsertBuilderPortalDefaultProjectwhen the user changes default project.BuilderPortalBadLoginon failed sign-in attempts.
- Delay Request does not insert
DelayBatchrows in this app; it emails the area manager with lot, activity, trade, variance, and delay type fromspGetBuilderPortalDelayRequestInfo_v2.
Where the source lives
Section titled “Where the source lives”BuilderPortal/└── BuilderPortal2024/ ├── BuilderPortal2024.sln └── BuilderPortal/ ├── Account/ ← Login.aspx, Logout.aspx ├── Api/Ajax/ ← utils, workApproval, bpInfo (.asmx) ├── App_Start/ ├── Code/ ← SessionVariables.cs ├── Old_App_Code/ ← common.cs (BuilderPortal.CommonCode) ├── User_Controls/ ← modal-po, modal-options, modal-selections, modal-information, modal-contacts, modal-notes, modal-my-lot-notes ├── Default.aspx, Schedule.aspx, WorkApproval.aspx, … ├── Site.master └── Web.config (+ Web.QA.config, Web.Test.config, Web.Release.config)Build with Visual Studio and BuilderPortal2024.sln; deploy to IIS.
Who logs in
Section titled “Who logs in”Field builders and superintendents with a UserAccount row in SMART. Sign-in is Active Directory (utils.asmx → ValidateActiveDirectoryUser), then Forms Authentication with user data loaded from SQL (GetUserDataFromDatabase, GetUserDefaultProject, CheckIfUserIsIntern).
Session keys used across pages: GLBL_email, GLBL_userAccountSysID, GLBL_defaultProjectID, GLBL_defaultProjectName, GLBL_intern.
Intern accounts see Schedule and Purchase Orders only — Work Approval and Delay Request redirect to Schedule if accessed directly.