SMART 2.0 — Developer reference
Workplace2020 is ASP.NET Web Forms (.NET Framework). UI pages call App_API/*.asmx with jQuery AJAX. Authorization is LDAP login + ASP.NET session — almost every page checks Session["Database"] and WEB_APPS_MENU.
Repository layout
Section titled “Repository layout”Workplace2020/└── Workplace2020/ ├── SMART2.Master ← shell, menus, openSMARTapp() ├── login.aspx ← LDAP / external login ├── AppCode/ ← ldap.cs, common.cs, workplaceUtils ├── App_API/ ← ASMX AJAX services ├── shared/ ← contracts, contacts (major web UI) ├── sales/, production/, accounting/, … ├── web-reports/ ├── docs/ ← Excel templates + upload handlers └── release-notes/ ← HTML release notesAuthentication flow
Section titled “Authentication flow”login.aspx—LDAPMgr.LoginAttempt(AD/LDAP) or external user path.- On success: Forms authentication cookie + AgilePoint cookies; session populated in
ldap.cs. SMART2.Master—Logged_InwhenSession["Database"]is set; builds nav from session menus.Page_PreLoadon module pages — redirect to/login?ReturnUrl=...if no session; redirect toprivs.aspxifWEB_APPS_MENUlacks app name (e.g."Sales").
Session keys (common)
Section titled “Session keys (common)”| Key | Purpose |
|---|---|
Database | Selected company DB — required for authenticated pages |
WEB_APPS_MENU | Comma/structured list of allowed web app names |
WEB_APP_SYS_IDs | Numeric IDs for menu tile visibility |
AuthorizedApplications | Desktop SMART apps user may launch |
AuthorizedReports | Web report links |
AuthorizedCommands | Command pages |
UserAccountSysID | SMART user identity |
AgilePointUserID | BPM user mapping |
Use administration/display-session-vars.aspx (restricted) for debugging — never share screenshots with PII.
App_API services
Section titled “App_API services”Namespace http://smithdouglas.com/. Most methods use EnableSession = true.
| Service | Responsibility |
|---|---|
utils.asmx | Global search, community/project/building/unit autofill |
contacts.asmx | Contacts CRUD and search |
contracts.asmx | Contract lifecycle, options, change orders |
contract-management.asmx | Ratify, close, cancel |
businesses.asmx | Vendor / business records |
sales.asmx | Sales home KPIs, tasks, traffic |
app-assist.asmx | Large helper surface for production/accounting UI |
invoicing.asmx | Land dev invoicing, BC integration |
land-acq.asmx | Land acquisition CRM data |
reporting.asmx | Financial report datasets |
unit-summary.asmx | Unit summary report |
production-cycle-time-analysis.asmx | Cycle time report |
traffic-reports.asmx, traffic-reports2.asmx | Traffic KPIs |
journal.asmx | Notes / journal search |
alerts.asmx | User/vendor alerts |
campaigns.asmx | Email campaigns (Sendy integration) |
webFunctions.asmx | Admin: web apps, roles, loan submission, costbook restart |
Legacy: zz_SmartWebServices/ — hosted on separate domain per !README.txt.
Portal integration
Section titled “Portal integration”Builder, Trade, and Home Owner portals call SMART 2.0 App_API (not a separate REST API). See portal app docs under Applications.
Database changes
Section titled “Database changes”__db_scripts/ — migration scripts and DatabaseUpdates.xlsx.