System Overview¶
Purpose¶
ConproSoft is a web-based construction resource and procurement management system built for BMH Africa. It centralises the operational, human resources, and procurement functions of construction project management into a single browser-accessible platform.
The system manages projects and contracts from creation through to financial close-out. It coordinates clients, suppliers, and subcontractors, handles human resources including employee profiles, compliance records, leave, timesheets, and payroll linkages, manages the entire procurement workflow from requisitions through to payments, tracks tasks and quality/safety records, and provides reporting through RDLC-based printable reports and on-screen dashboards.
The application name displayed in the UI is ConproSoft, operated under the domain conprosoft.co.za.
Technology Platform¶
| Concern | Detail |
|---|---|
| Runtime | ASP.NET Web Forms on .NET Framework 4.8 |
| Database | Microsoft SQL Server: database conprosoft_tenantName |
| UI | TouchUI: A Bootstrap-based responsive UI framework specifically focused on touch interaction |
| Authentication | ASP.NET Forms Authentication with SQL Membership and Roles |
| Reports | Microsoft RDLC via Microsoft.ReportViewer.WebForms 15.x |
| File attachments | File system BLOB storage via registered BLOB adapter handlers in ~\App_Data\ folder; metadata tracked with FileName, FileType, FileSize fields |
SMTP relay via smtp.bulkmail-za.com (configured in web.config) |
|
| Locale | en-ZA (South Africa): date, currency, and culture formatting |
How it works¶
-
Controller XML files (
/app/controllers/*.xml) define everything about a data entity:- The SQL
SELECTstatement (including joins to lookup tables) - An
INSERTcommand (usually generating a new GUID primary key) - All fields with types, labels, validation, dropdown items, and lookup references
- Named views (grid views, form views, create forms)
- Actions (Insert, Update, Delete, Export, custom SQL, email triggers)
- Role-based access via
roles=attributes on fields, views, and actions
- The SQL
-
Page HTML files (
/app/pages/*.html) are thin wrappers that reference a controller by name viadata-controller="..."attributes on<div>elements. The framework reads these at runtime and renders the full TouchUI interface. -
Site.aspxis the single entry point for all page requests. TheSiteBasehandler (App_Code/Handlers/Site.cs) reads the requested page HTML, injects the TouchUI JavaScript/CSS shell, and serves it as a complete SPA response. A URL such as~/pages/purchase-ordersresolves topages/PurchaseOrders.html. -
Business Rules (
App_Code/Rules/*.Generated.cs) are C# partial classes decorated with[RowBuilder]and[ControllerAction]attributes. The framework invokes these automatically at the appropriate lifecycle phase (Before/After Insert/Update). -
DataControllerServiceis the AJAX service endpoint. The browser calls it via JSON requests to fetch data pages, execute actions, and retrieve autocomplete/lookup values — all without page reloads.
Request flow summary¶
Browser request → ~/pages/<page-name>
→ Site.aspx (SiteBase handler)
→ Reads /pages/<PageName>.html
→ Injects TouchUI JS/CSS
→ Returns SPA shell to browser
Browser AJAX → DataControllerService
→ ControllerFactory.CreateDataController()
→ Loads /controllers/<Name>.xml
→ Invokes BusinessRules (RowBuilder / ControllerAction hooks)
→ Executes SQL against conprosoft_bmhcrp
→ Returns JSON to browser
Browser file upload/download → Blob.ashx
→ BlobFactoryConfig (Blob.generated.cs)
→ Reads/writes BLOB column in SQL Server
Browser report request → Report.ashx
→ Report.generated.cs
→ Loads .rdlc template from /reports/
→ Renders via Microsoft.Reporting.WebForms
→ Returns PDF/Excel/Word stream
Core Business Areas¶
Projects & Contracts¶
Manage the full project lifecycle: creation, participant assignment, financial claims, overhead expenses, change orders, and close-out. Key controllers: Project, ProjectClaims, ProjectSubcontractors, ProjectUsers, FiscalCalendar.
Human Resources¶
Employee profiles, compliance documentation (medical, training, IPAC, PPE), leave management, disciplinary records, and timesheet capture. Key controllers: PersonResource, LeaveApplication, TimeSheetHeader, MedicalScreening, Training, DisciplinaryAction.
Procurement¶
Full procurement cycle from requisition through to payment. Key controllers: Requisition, PurchaseOrders, GoodsReceipt, Payments, DeliveryNote.
Task Manager & Operations¶
Task and activity tracking with email notifications. Issue register and response management. Key controllers: Task, SubTask, IssueRegister, IssueResponse.
Quality & Safety¶
Quality management records and safety management registers. Policy document library. Key controllers: QualityManagement, SAFETYMANAGEMENT, PolicyDocuments. Not yet implemented — landing page designed per requirements, but module shortcuts are disabled until development is complete.
Reporting¶
RDLC-based printed reports fed by dedicated report controllers. On-screen dashboards and summary landing pages. Reports reside under /app/reports/*.rdlc.
System Administration¶
User and role management (ASP.NET Membership), reference/lookup data, project user associations, operator setup, and supporting document management.
Roles & Access Control¶
| Role | Access Summary |
|---|---|
Administrators |
Full access to all modules and configuration |
Manager |
HR, Procurement, Finance, Reporting, Admin |
Supervisor |
HR operations, Task Manager, Procurement view |
Employee |
Time Sheet, Leave Application, Task Manager (own records) |
Readonly |
All controllers visible but all write actions disabled |
Procurement |
Procurement module only |
HumanResources |
HR module only |
TaskManager |
Task Manager module only |
QualityManagement |
Quality Management module |
SafetyManagement |
Safety Management module |
Reporting |
Reports section |
Project-level data isolation is enforced in SharedBusinessRules.cs: non-Administrator users automatically see only records where their UserID is present in the Project_Users table for the relevant ProjectID.