gaepdit / complaint-tracking

Complaint Tracking System
The Unlicense
1 stars 2 forks source link
hacktoberfest

Complaint Tracking System Application

The Complaint Tracking System (CTS) is an online application to allow EPD staff to enter, assign, review, and close complaints received from the public.

CTS Next

The CTS is in the process of being completely rebuilt in the vNext/* set of branches. For the currently deployed application, go to the main branch.

Georgia EPD-IT .NET Test CodeQL Quality Gate Status Lines of Code


Background and project requirements

Public complaints are time-critical and high-profile public information. The CTS is used by staff throughout EPD.

Info for developers

This is an ASP.NET web application.

Prerequisites for development

Project organization

The solution contains the following projects:

There are also corresponding unit test projects for each, plus a TestData project containing test data for development and testing.

Development settings

The following settings configure the data stores and authentication for development purposes. To change these settings, add an "appsettings.Development.json" file in the root of the "WebApp" folder with a DevSettings section and a top-level setting named UseDevSettings. Here's a sample "appsettings.Development.json" file to start out:

{
  "DevSettings": {
    "UseDevSettings": true,
    "UseInMemoryData": true,
    "UseEfMigrations": false,
    "DeleteAndRebuildDatabase": true,
    "UseAzureAd": false,
    "LocalUserIsAuthenticated": true,
    "LocalUserIsStaff": true,
    "LocalUserIsAdmin": true,
    "UseSecurityHeadersInDev": false
  }
}

Production defaults

When UseDevSettings is missing or set to false or if the DevSettings section is missing, the settings are automatically set to production defaults as follows:

UseInMemoryData = false,
UseEfMigrations = true,
UseAzureAd = true,
LocalUserIsAuthenticated = false,
LocalUserIsStaff = false,
LocalUserIsAdmin = false,
UseSecurityHeadersInDev: false

Here's a visualization of how the settings configure data storage at runtime.

flowchart LR
    subgraph SPL["'UseInMemoryData' = true"]
        direction LR
        D[Domain]
        T["Test Data (in memory)"]
        R[Local Repositories]
        A[App Services]
        W([Web App])

        W --> A
        A --> D
        A --> R
        R --> T
        T --> D
    end
flowchart LR
    subgraph SPB["'UseInMemoryData' = false"]
        direction LR
        D[Domain]
        T[Test Data]
        R[EF Repositories]
        A[App Services]
        W([Web App])
        B[(Database)]

        W --> A
        A --> D
        R --> B
        A --> R
        T -->|Seed| B
        B --> D
    end
flowchart LR
    subgraph SPD["Production or staging environment"]
        direction LR
        D[Domain]
        R[EF Repositories]
        A[App Services]
        W([Web App])
        B[(Database)]

        W --> A
        A --> D
        A --> R
        R --> B
        B --> D
    end