# gokulskr/eman architecture

> Architecture diagram of the GitHub repository gokulskr/eman, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gokulskr/eman
- Repository: https://github.com/gokulskr/eman

## Overview

This is an ASP.NET Web Forms asset, inventory, procurement, and service-management application. Users work through role-oriented pages for requests, approvals, receipts, transfers, maintenance, verification, and reporting; page handlers coordinate domain logic and database access. The sampled service-incharge page also invokes notification and error-handling utilities. The tree and source index establish additional feature areas, but their runtime wiring was not sampled, so those branches are shown without asserted call relationships.

Main entry points: [`App_Code/DataProvider.cs`](https://github.com/gokulskr/eman/blob/main/App_Code/DataProvider.cs) (Database provider), [`CssNew/AssignServiceIncharge.aspx.cs`](https://github.com/gokulskr/eman/blob/main/CssNew/AssignServiceIncharge.aspx.cs) (Service assignment), [`multioptionquery_SMG.aspx.cs`](https://github.com/gokulskr/eman/blob/main/multioptionquery_SMG.aspx.cs) (Inventory queries), [`App_Code/ErrorManagement.cs`](https://github.com/gokulskr/eman/blob/main/App_Code/ErrorManagement.cs) (Error handling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web workflows"]
  node_service_assignment["Service assignment"]
  node_inventory_queries["Inventory queries"]
  node_purchase_receipt["Procurement and receipt"]
  node_item_requests["Item requests"]
  node_amc_workflows["AMC workflows"]
  node_reporting["Reports and dashboards"]
end

subgraph group_domain["Asset operations"]
  node_asset_logic["Asset operations<br/>[AssetBAL.cs]"]
  node_indent_logic["Indent requests<br/>[IndentRequest.cs]"]
  node_chart_service["Dashboard charts<br/>[WebServiceChart.cs]"]
end

subgraph group_support["Shared services"]
  node_notifications["SMS and email<br/>[SendSMSGateway.cs]"]
  node_utilities["Validation utilities<br/>[Utilities.cs]"]
  node_error_handling["Error handling<br/>[ErrorManagement.cs]"]
  node_grid_pager["Grid paging<br/>[FullGridPager.cs]"]
  node_login["Login services<br/>[LoginBAL.cs]"]
  node_encryption["Encryption helper<br/>[AESEncrytDecry.cs]"]
end

subgraph group_data["Data access"]
  node_common_dal["Shared data queries<br/>[CommonDal.cs]"]
  node_data_provider["Database provider<br/>[DataProvider.cs]"]
  node_connection["Connection setup<br/>[Connection.cs]"]
  node_database[("Application database")]
end

node_user(("Staff and administrators"))
node_sms_service["SMS gateway"]

node_user -->|"assigns staff"| node_service_assignment
node_service_assignment -->|"uses asset logic"| node_asset_logic
node_service_assignment -->|"queries data"| node_common_dal
node_service_assignment -->|"sends notifications"| node_notifications
node_service_assignment -->|"uses utilities"| node_utilities
node_service_assignment -->|"logs errors"| node_error_handling
node_user -.->|"queries inventory"| node_inventory_queries
node_user -.->|"records purchasing"| node_purchase_receipt
node_user -.->|"requests items"| node_item_requests
node_user -.->|"handles maintenance"| node_amc_workflows
node_user -.->|"views reports"| node_reporting
node_asset_logic -->|"executes queries"| node_data_provider
node_asset_logic -->|"uses request model"| node_indent_logic
node_common_dal -->|"executes queries"| node_data_provider
node_inventory_queries -->|"queries data"| node_common_dal
node_inventory_queries -->|"uses utilities"| node_utilities
node_inventory_queries -->|"uses pager"| node_grid_pager
node_data_provider -->|"gets connection"| node_connection
node_data_provider -->|"uses encryption"| node_encryption
node_data_provider -->|"reads and writes"| node_database
node_notifications -->|"stores mail data"| node_data_provider
node_notifications -->|"calls gateway"| node_sms_service
node_utilities -->|"uses provider"| node_data_provider
node_error_handling -->|"logs to database"| node_data_provider
node_error_handling -->|"references login"| node_login
node_chart_service -->|"fetches chart data"| node_data_provider
node_chart_service -->|"opens connection"| node_connection
node_inventory_queries -->|"handles errors"| node_error_handling
node_inventory_queries -->|"opens connection"| node_connection

click node_service_assignment "https://github.com/gokulskr/eman/blob/main/CssNew/AssignServiceIncharge.aspx.cs"
click node_inventory_queries "https://github.com/gokulskr/eman/blob/main/multioptionquery_SMG.aspx.cs"
click node_purchase_receipt "https://github.com/gokulskr/eman/blob/main/Purchase_Order.aspx.cs"
click node_item_requests "https://github.com/gokulskr/eman/blob/main/ItemRequestForm.aspx.cs"
click node_amc_workflows "https://github.com/gokulskr/eman/blob/main/AMCApprovalList.aspx.cs"
click node_reporting "https://github.com/gokulskr/eman/blob/main/Assetwise_rpt.aspx.cs"
click node_asset_logic "https://github.com/gokulskr/eman/blob/main/App_Code/AssetBAL.cs"
click node_indent_logic "https://github.com/gokulskr/eman/blob/main/App_Code/IndentRequest.cs"
click node_chart_service "https://github.com/gokulskr/eman/blob/main/App_Code/WebServiceChart.cs"
click node_common_dal "https://github.com/gokulskr/eman/blob/main/App_Code/CommonDal.cs"
click node_data_provider "https://github.com/gokulskr/eman/blob/main/App_Code/DataProvider.cs"
click node_connection "https://github.com/gokulskr/eman/blob/main/App_Code/Connection.cs"
click node_notifications "https://github.com/gokulskr/eman/blob/main/App_Code/SendSMSGateway.cs"
click node_utilities "https://github.com/gokulskr/eman/blob/main/App_Code/Utilities.cs"
click node_error_handling "https://github.com/gokulskr/eman/blob/main/App_Code/ErrorManagement.cs"
click node_grid_pager "https://github.com/gokulskr/eman/blob/main/App_Code/FullGridPager.cs"
click node_login "https://github.com/gokulskr/eman/blob/main/App_Code/LoginBAL.cs"
click node_encryption "https://github.com/gokulskr/eman/blob/main/App_Code/AESEncrytDecry.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_service_assignment,node_inventory_queries,node_purchase_receipt,node_item_requests,node_amc_workflows,node_reporting toneBlue
class node_asset_logic,node_indent_logic,node_chart_service toneAmber
class node_notifications,node_utilities,node_error_handling,node_grid_pager,node_login,node_encryption toneMint
class node_common_dal,node_data_provider,node_connection,node_database toneRose
class node_user,node_sms_service toneIndigo
```

## Components

### Web workflows

- [Service assignment](https://github.com/gokulskr/eman/blob/main/CssNew/AssignServiceIncharge.aspx.cs): `CssNew/AssignServiceIncharge.aspx.cs`
- [Inventory queries](https://github.com/gokulskr/eman/blob/main/multioptionquery_SMG.aspx.cs): `multioptionquery_SMG.aspx.cs`
- [Procurement and receipt](https://github.com/gokulskr/eman/blob/main/Purchase_Order.aspx.cs): `Purchase_Order.aspx.cs`
- [Item requests](https://github.com/gokulskr/eman/blob/main/ItemRequestForm.aspx.cs): `ItemRequestForm.aspx.cs`
- [AMC workflows](https://github.com/gokulskr/eman/blob/main/AMCApprovalList.aspx.cs): `AMCApprovalList.aspx.cs`
- [Reports and dashboards](https://github.com/gokulskr/eman/blob/main/Assetwise_rpt.aspx.cs): `Assetwise_rpt.aspx.cs`

### Asset operations

- [Asset operations](https://github.com/gokulskr/eman/blob/main/App_Code/AssetBAL.cs): `App_Code/AssetBAL.cs`
- [Indent requests](https://github.com/gokulskr/eman/blob/main/App_Code/IndentRequest.cs): `App_Code/IndentRequest.cs`
- [Dashboard charts](https://github.com/gokulskr/eman/blob/main/App_Code/WebServiceChart.cs): `App_Code/WebServiceChart.cs`

### Shared services

- [SMS and email](https://github.com/gokulskr/eman/blob/main/App_Code/SendSMSGateway.cs): `App_Code/SendSMSGateway.cs`
- [Validation utilities](https://github.com/gokulskr/eman/blob/main/App_Code/Utilities.cs): `App_Code/Utilities.cs`
- [Error handling](https://github.com/gokulskr/eman/blob/main/App_Code/ErrorManagement.cs): `App_Code/ErrorManagement.cs`
- [Grid paging](https://github.com/gokulskr/eman/blob/main/App_Code/FullGridPager.cs): `App_Code/FullGridPager.cs`
- [Login services](https://github.com/gokulskr/eman/blob/main/App_Code/LoginBAL.cs): `App_Code/LoginBAL.cs`
- [Encryption helper](https://github.com/gokulskr/eman/blob/main/App_Code/AESEncrytDecry.cs): `App_Code/AESEncrytDecry.cs`

### Data access

- [Shared data queries](https://github.com/gokulskr/eman/blob/main/App_Code/CommonDal.cs): `App_Code/CommonDal.cs`
- [Database provider](https://github.com/gokulskr/eman/blob/main/App_Code/DataProvider.cs): `App_Code/DataProvider.cs`
- [Connection setup](https://github.com/gokulskr/eman/blob/main/App_Code/Connection.cs): `App_Code/Connection.cs`
- **Application database**

### Other components

- **Staff and administrators**
- **SMS gateway**

## Connections

- Staff and administrators → Service assignment: assigns staff (evidence: `CssNew/AssignServiceIncharge.aspx.cs`)
- Service assignment → Asset operations: uses asset logic (evidence: `CssNew/AssignServiceIncharge.aspx.cs`)
- Service assignment → Shared data queries: queries data (evidence: `CssNew/AssignServiceIncharge.aspx.cs`)
- Service assignment → SMS and email: sends notifications (evidence: `CssNew/AssignServiceIncharge.aspx.cs`)
- Service assignment → Validation utilities: uses utilities (evidence: `CssNew/AssignServiceIncharge.aspx.cs`)
- Service assignment → Error handling: logs errors (evidence: `CssNew/AssignServiceIncharge.aspx.cs`)
- Staff and administrators → Inventory queries: queries inventory
- Staff and administrators → Procurement and receipt: records purchasing
- Staff and administrators → Item requests: requests items
- Staff and administrators → AMC workflows: handles maintenance
- Staff and administrators → Reports and dashboards: views reports
- Asset operations → Database provider: executes queries (evidence: `App_Code/AssetBAL.cs`)
- Asset operations → Indent requests: uses request model (evidence: `App_Code/AssetBAL.cs`)
- Shared data queries → Database provider: executes queries (evidence: `App_Code/CommonDal.cs`)
- Inventory queries → Shared data queries: queries data (evidence: `multioptionquery_SMG.aspx.cs`)
- Inventory queries → Validation utilities: uses utilities (evidence: `multioptionquery_SMG.aspx.cs`)
- Inventory queries → Grid paging: uses pager (evidence: `multioptionquery_SMG.aspx.cs`)
- Database provider → Connection setup: gets connection (evidence: `App_Code/DataProvider.cs`)
- Database provider → Encryption helper: uses encryption (evidence: `App_Code/DataProvider.cs`)
- Database provider → Application database: reads and writes (evidence: `App_Code/DataProvider.cs`)
- SMS and email → Database provider: stores mail data (evidence: `App_Code/SendSMSGateway.cs`)
- SMS and email → SMS gateway: calls gateway (evidence: `App_Code/SendSMSGateway.cs`)
- Validation utilities → Database provider: uses provider (evidence: `App_Code/Utilities.cs`)
- Error handling → Database provider: logs to database (evidence: `App_Code/ErrorManagement.cs`)
- Error handling → Login services: references login (evidence: `App_Code/ErrorManagement.cs`)
- Dashboard charts → Database provider: fetches chart data (evidence: `App_Code/WebServiceChart.cs`)
- Dashboard charts → Connection setup: opens connection (evidence: `App_Code/WebServiceChart.cs`)
- Inventory queries → Error handling: handles errors (evidence: `multioptionquery_SMG.aspx.cs`)
- Inventory queries → Connection setup: opens connection (evidence: `multioptionquery_SMG.aspx.cs`)
