# ebrahim-nahid/employeemanagement architecture

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

- Interactive diagram: https://gitdiagram.com/ebrahim-nahid/employeemanagement
- Repository: https://github.com/ebrahim-nahid/employeemanagement

## Overview

EmployeeManagement is an ASP.NET Core MVC employee-record application. The main workflow starts with a user browsing, searching, creating, editing, or deleting employee records; MVC controllers invoke the service, which maps DTOs and delegates persistence to the repository and EF Core database context. The service also saves uploaded photos under the web root. The README offers no additional capability details. The graph follows shown calls and registrations; views and storage configuration are included where supported, while unsampled view wiring is omitted.

Main entry points: [`EmployeeManagement.Web/Program.cs`](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Program.cs) (ASP.NET Host), [`EmployeeManagement.Service/Services/EmployeeService.cs`](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Services/EmployeeService.cs) (Employee Service), [`EmployeeManagement.Repository/DatabaseContext/AppDbContext.cs`](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/DatabaseContext/AppDbContext.cs) (EF DbContext), [`EmployeeManagement.Web/Controller/EmployeeController.cs`](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Controller/EmployeeController.cs) (Employee Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["MVC Web"]
  node_app["ASP.NET Host<br/>[Program.cs]"]
  node_employee_controller["Employee Controller"]
  node_employee_views["Employee Views<br/>[Employee]"]
  node_home_controller["Home Controller<br/>[HomeController.cs]"]
  node_error_model["Error Model<br/>[ErrorViewModel.cs]"]
end

subgraph group_service["Employee Service"]
  node_service["Employee Service<br/>[EmployeeService.cs]"]
  node_service_contract["Service Contract"]
  node_employee_dtos["Employee DTOs<br/>[Dtos]"]
  node_search_filter["Search Filter"]
  node_list_model["Paged List Model"]
end

subgraph group_data["Persistence"]
  node_repository["Employee Repository"]
  node_repository_contract["Repository Contract"]
  node_db_context["EF DbContext<br/>[AppDbContext.cs]"]
  node_employee_entity["Employee Entity<br/>[Employee.cs]"]
  node_database[("SQL Database")]
end

subgraph group_assets["Photo Assets"]
  node_photo_writer["Photo Upload Writer<br/>[EmployeeService.cs]"]
  node_uploads[("Photo Uploads<br/>[uploads]")]
end

node_user(("Browser User"))

node_user -->|"opens"| node_app
node_app -->|"routes to"| node_employee_controller
node_employee_controller -->|"invokes"| node_service
node_employee_controller -.->|"returns views"| node_employee_views
node_service -->|"delegates CRUD"| node_repository
node_service -->|"saves uploads"| node_photo_writer
node_photo_writer -->|"writes files"| node_uploads
node_repository -->|"queries and saves"| node_db_context
node_db_context -->|"maps entities"| node_employee_entity
node_db_context -->|"uses configured SQL"| node_database
node_app -->|"registers service"| node_service
node_app -->|"registers repository"| node_repository
node_app -->|"configures context"| node_db_context
node_home_controller -->|"uses"| node_error_model

click node_app "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Program.cs"
click node_employee_controller "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Controller/EmployeeController.cs"
click node_employee_views "https://github.com/ebrahim-nahid/employeemanagement/tree/master/EmployeeManagement.Web/Views/Employee"
click node_home_controller "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Controller/HomeController.cs"
click node_error_model "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Models/ErrorViewModel.cs"
click node_service "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Services/EmployeeService.cs"
click node_service_contract "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Contracts/IEmployeeService.cs"
click node_employee_dtos "https://github.com/ebrahim-nahid/employeemanagement/tree/master/EmployeeManagement.Service/Dtos"
click node_search_filter "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/QueryModel/EmployeeSearchFilterModel.cs"
click node_list_model "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Dtos/EmployeeListViewModel.cs"
click node_repository "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/Repositories/EmployeeRepository.cs"
click node_repository_contract "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/Contracts/IEmpolyeeRepository.cs"
click node_db_context "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/DatabaseContext/AppDbContext.cs"
click node_employee_entity "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/Entities/Employee.cs"
click node_photo_writer "https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Services/EmployeeService.cs"
click node_uploads "https://github.com/ebrahim-nahid/employeemanagement/tree/master/EmployeeManagement.Web/wwwroot/uploads"

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_app,node_employee_controller,node_employee_views,node_home_controller,node_error_model,node_user toneBlue
class node_service,node_service_contract,node_employee_dtos,node_search_filter,node_list_model toneAmber
class node_repository,node_repository_contract,node_db_context,node_employee_entity,node_database toneMint
class node_photo_writer,node_uploads toneRose
```

## Components

### MVC Web

- [ASP.NET Host](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Program.cs): `EmployeeManagement.Web/Program.cs`
- [Employee Controller](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Controller/EmployeeController.cs): `EmployeeManagement.Web/Controller/EmployeeController.cs`
- [Employee Views](https://github.com/ebrahim-nahid/employeemanagement/tree/master/EmployeeManagement.Web/Views/Employee): `EmployeeManagement.Web/Views/Employee`
- [Home Controller](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Controller/HomeController.cs): `EmployeeManagement.Web/Controller/HomeController.cs`
- [Error Model](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Web/Models/ErrorViewModel.cs): `EmployeeManagement.Web/Models/ErrorViewModel.cs`

### Employee Service

- [Employee Service](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Services/EmployeeService.cs): `EmployeeManagement.Service/Services/EmployeeService.cs`
- [Service Contract](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Contracts/IEmployeeService.cs): `EmployeeManagement.Service/Contracts/IEmployeeService.cs`
- [Employee DTOs](https://github.com/ebrahim-nahid/employeemanagement/tree/master/EmployeeManagement.Service/Dtos): `EmployeeManagement.Service/Dtos`
- [Search Filter](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/QueryModel/EmployeeSearchFilterModel.cs): `EmployeeManagement.Repository/QueryModel/EmployeeSearchFilterModel.cs`
- [Paged List Model](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Dtos/EmployeeListViewModel.cs): `EmployeeManagement.Service/Dtos/EmployeeListViewModel.cs`

### Persistence

- [Employee Repository](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/Repositories/EmployeeRepository.cs): `EmployeeManagement.Repository/Repositories/EmployeeRepository.cs`
- [Repository Contract](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/Contracts/IEmpolyeeRepository.cs): `EmployeeManagement.Repository/Contracts/IEmpolyeeRepository.cs`
- [EF DbContext](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/DatabaseContext/AppDbContext.cs): `EmployeeManagement.Repository/DatabaseContext/AppDbContext.cs`
- [Employee Entity](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Repository/Entities/Employee.cs): `EmployeeManagement.Repository/Entities/Employee.cs`
- **SQL Database**

### Photo Assets

- [Photo Upload Writer](https://github.com/ebrahim-nahid/employeemanagement/blob/master/EmployeeManagement.Service/Services/EmployeeService.cs): `EmployeeManagement.Service/Services/EmployeeService.cs`
- [Photo Uploads](https://github.com/ebrahim-nahid/employeemanagement/tree/master/EmployeeManagement.Web/wwwroot/uploads): `EmployeeManagement.Web/wwwroot/uploads`

### Other components

- **Browser User**

## Connections

- Browser User → ASP.NET Host: opens (evidence: `EmployeeManagement.Web/Program.cs`)
- ASP.NET Host → Employee Controller: routes to (evidence: `EmployeeManagement.Web/Program.cs`)
- Employee Controller → Employee Service: invokes (evidence: `EmployeeManagement.Web/Controller/EmployeeController.cs`)
- Employee Controller → Employee Views: returns views
- Employee Service → Employee Repository: delegates CRUD (evidence: `EmployeeManagement.Service/Services/EmployeeService.cs`)
- Employee Service → Photo Upload Writer: saves uploads (evidence: `EmployeeManagement.Service/Services/EmployeeService.cs`)
- Photo Upload Writer → Photo Uploads: writes files (evidence: `EmployeeManagement.Service/Services/EmployeeService.cs`)
- Employee Repository → EF DbContext: queries and saves (evidence: `EmployeeManagement.Repository/Repositories/EmployeeRepository.cs`)
- EF DbContext → Employee Entity: maps entities (evidence: `EmployeeManagement.Repository/DatabaseContext/AppDbContext.cs`)
- EF DbContext → SQL Database: uses configured SQL
- ASP.NET Host → Employee Service: registers service (evidence: `EmployeeManagement.Web/Program.cs`)
- ASP.NET Host → Employee Repository: registers repository (evidence: `EmployeeManagement.Web/Program.cs`)
- ASP.NET Host → EF DbContext: configures context (evidence: `EmployeeManagement.Web/Program.cs`)
- Home Controller → Error Model: uses (evidence: `EmployeeManagement.Web/Controller/HomeController.cs`)
