# merve-1/employee_leave_request architecture

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

- Interactive diagram: https://gitdiagram.com/merve-1/employee_leave_request
- Repository: https://github.com/merve-1/employee_leave_request

## Overview

Employee Leave Request is a leave-management application with a .NET API, a Blazor client, SQL Server persistence, and employee data supplied by DummyJSON. The main workflow is to create and manage leave requests: the API validates and persists requests, enriches them with employee details, and returns request data; HR-authorized users can approve or reject pending requests. The README also documents employee search, filtering, pagination, and deletion. Client-to-API wiring is not established by the sampled client source, so that link is omitted.

Main entry points: [`src/LeaveRequests.Api/Services/LeaveRequests/LeaveRequestService.cs`](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Services/LeaveRequests/LeaveRequestService.cs) (Request operations), [`src/LeaveRequests.Api/Data/Contexts/LeaveDbContext.cs`](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Data/Contexts/LeaveDbContext.cs) (EF data access), [`src/LeaveRequests.Api/Services/Employee/EmployeeService.cs`](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Services/Employee/EmployeeService.cs) (Employee lookup), [`src/LeaveRequests.Api/Controllers/LeaveRequestsController.cs`](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Controllers/LeaveRequestsController.cs) (Leave endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Blazor client"]
  node_clientpages["Leave pages"]
  node_jwt["JWT claims<br/>[JwtService.cs]"]
end

subgraph group_api["Leave API"]
  node_leavecontroller["Leave endpoints"]
  node_employeecontroller["Employee endpoint"]
  node_leaveops["Request operations"]
  node_errorhandling["Error handling"]
  node_contracts["Request DTOs<br/>[LeaveRequestDto.cs]"]
end

subgraph group_data["Leave data"]
  node_dbcontext["EF data access<br/>[LeaveDbContext.cs]"]
  node_seed["Initial requests"]
  node_requestentity["Leave request model<br/>[LeaveRequest.cs]"]
end

subgraph group_integration["Employee integration"]
  node_employeeops["Employee lookup<br/>[EmployeeService.cs]"]
end

node_user(("User"))
node_hr(("HR reviewer"))
node_caller(("API caller"))
node_sqldb[("SQL Server")]
node_dummyjson["DummyJSON users"]

node_user -->|"uses"| node_clientpages
node_hr -->|"submits HR action"| node_caller
node_caller -->|"sends API requests"| node_leavecontroller
node_caller -->|"searches employees"| node_employeecontroller
node_leavecontroller -->|"dispatches"| node_leaveops
node_employeecontroller -->|"dispatches"| node_employeeops
node_leaveops -->|"reads and writes"| node_dbcontext
node_leaveops -->|"looks up employees"| node_employeeops
node_employeeops -->|"fetches users"| node_dummyjson
node_employeeops -->|"fetches user list"| node_dummyjson
node_dbcontext -->|"queries and saves"| node_sqldb
node_dbcontext -->|"maps records"| node_requestentity
node_seed -->|"provides seed data"| node_dbcontext
node_leaveops -->|"maps responses"| node_contracts
node_errorhandling -->|"wraps requests"| node_leavecontroller
node_user -->|"parses token"| node_jwt

click node_clientpages "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Client/Components/Pages/LeaveRequests.razor"
click node_jwt "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Client/Auth/JwtService.cs"
click node_leavecontroller "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Controllers/LeaveRequestsController.cs"
click node_employeecontroller "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Controllers/EmployeesController.cs"
click node_leaveops "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Services/LeaveRequests/LeaveRequestService.cs"
click node_employeeops "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Services/Employee/EmployeeService.cs"
click node_errorhandling "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Middleware/ExceptionHandlingMiddleware.cs"
click node_dbcontext "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Data/Contexts/LeaveDbContext.cs"
click node_seed "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Data/Seeder/LeaveRequestSeed.cs"
click node_requestentity "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Entities/LeaveRequest.cs"
click node_contracts "https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/DTOs/LeaveRequestDto.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_clientpages,node_jwt,node_user,node_hr,node_dummyjson toneBlue
class node_leavecontroller,node_employeecontroller,node_leaveops,node_errorhandling,node_contracts,node_sqldb toneAmber
class node_dbcontext,node_seed,node_requestentity,node_caller toneMint
class node_employeeops toneRose
```

## Components

### Blazor client

- [Leave pages](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Client/Components/Pages/LeaveRequests.razor): `src/LeaveRequests.Client/Components/Pages/LeaveRequests.razor`
- [JWT claims](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Client/Auth/JwtService.cs): `src/LeaveRequests.Client/Auth/JwtService.cs`

### Leave API

- [Leave endpoints](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Controllers/LeaveRequestsController.cs): `src/LeaveRequests.Api/Controllers/LeaveRequestsController.cs`
- [Employee endpoint](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Controllers/EmployeesController.cs): `src/LeaveRequests.Api/Controllers/EmployeesController.cs`
- [Request operations](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Services/LeaveRequests/LeaveRequestService.cs): `src/LeaveRequests.Api/Services/LeaveRequests/LeaveRequestService.cs`
- [Error handling](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Middleware/ExceptionHandlingMiddleware.cs): `src/LeaveRequests.Api/Middleware/ExceptionHandlingMiddleware.cs`
- [Request DTOs](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/DTOs/LeaveRequestDto.cs): `src/LeaveRequests.Api/DTOs/LeaveRequestDto.cs`

### Leave data

- [EF data access](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Data/Contexts/LeaveDbContext.cs): `src/LeaveRequests.Api/Data/Contexts/LeaveDbContext.cs`
- [Initial requests](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Data/Seeder/LeaveRequestSeed.cs): `src/LeaveRequests.Api/Data/Seeder/LeaveRequestSeed.cs`
- [Leave request model](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Entities/LeaveRequest.cs): `src/LeaveRequests.Api/Entities/LeaveRequest.cs`

### Employee integration

- [Employee lookup](https://github.com/merve-1/employee_leave_request/blob/main/src/LeaveRequests.Api/Services/Employee/EmployeeService.cs): `src/LeaveRequests.Api/Services/Employee/EmployeeService.cs`

### Other components

- **User**
- **HR reviewer**
- **API caller**
- **SQL Server**
- **DummyJSON users**

## Connections

- User → Leave pages: uses
- HR reviewer → API caller: submits HR action
- API caller → Leave endpoints: sends API requests
- API caller → Employee endpoint: searches employees
- Leave endpoints → Request operations: dispatches
- Employee endpoint → Employee lookup: dispatches
- Request operations → EF data access: reads and writes
- Request operations → Employee lookup: looks up employees
- Employee lookup → DummyJSON users: fetches users
- Employee lookup → DummyJSON users: fetches user list
- EF data access → SQL Server: queries and saves
- EF data access → Leave request model: maps records
- Initial requests → EF data access: provides seed data
- Request operations → Request DTOs: maps responses
- Error handling → Leave endpoints: wraps requests
- User → JWT claims: parses token
