C#, MVC, .NET, IIS, Microsoft SQL Server, Bootstrap, JQuery


We were approached by a client to create a line of business application for recording onsite asbestos inspection data. This application would be available utilizing a responsive web page that could be displayed on browsers, tablet, and mobile devices with responsive styling. The application records information on customers, locations, buildings, rooms, building materials, samples, and other information.

Project Structure:

Logins are associated with Organizations which allows multiple users to work on the same project

Organizations are the top level object for data. Customers, Projects, etc are associated to an organization. The structure of the objects is shown in a parent child level format below.

  • Organizations
    • Customers
      • Projects
        • Reports
        • Uploads
        • Rooms
        • Suspect Materials
          • Suspect Material Associations
            • Samples
    • Lookups
  • Default Lookup Data

There is a default set of lookup data for suspect material attributes, years, and various other data fields.


Step 1: Create a Customer
Description: The user creates an entry for a customer that contains the customer name and other details

Step 2: Create a Project
Description: The user creates an entry for a project that contains the project name and other details

Step 3: Add Rooms
Description: The user will walk through the building being inspected. As they survey the property they create rooms for each area inspected.

Step 4: Add Materials
Description: As rooms are added the user will review the room for building materials used. These may be materials on the floor, walls, and roof. Once a material is added it can be associated to a room

Step 5: Associate Rooms and Materials
Description: Select which rooms contain which materials. i.e. Room 1 contains White Floor Tiles

Step 6: Add Samples to Room and Material
Description: Each Room and Material combination can have a sample added to it for testing

Step 7: Add Sample Data
Description: The samples are analyzed and a result is entered for each sample. This result determines whether the sample and material is listed as tested positive or negative.

Step 8: Generate Report
Description: A report is generated based upon the data which shows summary and detail pages for the building, rooms, materials, and samples.


At the outset of the project we knew we would be importing a variety of text data in the form of the materials, categories, material properties, room properties, and other data. In order to accommodate this variety of properties and allow the users to add there own as needed we implemented a flexible lookup table in our database. This table allow us to insert entries for a category and child entries for that category into the same table utilizing parent and child id’s. Each entry could also be associated to a specific user to allow each user to have there own set of possible selections in drop down lists.

In order to generate professional and consistent formatting on our reports we utilized a custom implementation of a c# PDF library to create and combine report pages utilizing MVC View Models and rendering the views into pdf documents which would then combine into a single report with page numbering.

Final Completion:

The project was delivered on time allowing our client to perform inspections and deliver reports to customers in a quarter of the time previously taken. The project is currently marketed to other inspection organizations. Reports may be purchased on a per project basis for a small report generation fee.