๐ WasteMS
Aplikasi: Waste Management System
Perusahaan: PT Sanghiang Perkasa
Tipe Project: .NET Web Application
Tim Product Terkait: Hendi Hendrasta
Tanggal Dokumentasi: Januari 2026
KN2019 Waste Management System
๐ Akses Aplikasiโ
Berikut adalah alamat akses cepat untuk environment aplikasi:
| Environment | URL Akses | Deskripsi |
|---|---|---|
| ๐ Production | https://wastems.kalbenutritionals.com | Environment utama pengguna |
| ๐งช Development | https://wastemsdev.kalbenutritionals.web.id | Testing & staging area |
Deskripsi Proyekโ
Waste Limbah API adalah aplikasi Web API berbasis .NET Core untuk manajemen limbah (waste management) yang dikembangkan oleh Kalbe Nutritionals. Aplikasi ini menyediakan endpoint untuk mengelola data master limbah, transaksi, dan laporan terkait pengelolaan limbah.
Teknologi yang Digunakanโ
Framework & Runtimeโ
- .NET 5.0 - Framework utama
- ASP.NET Core Web API - Framework untuk membangun RESTful API
Databaseโ
- PostgreSQL - Database utama menggunakan Npgsql.EntityFrameworkCore.PostgreSQL
- Oracle Database - Database sekunder untuk integrasi dengan sistem Oracle
- Entity Framework Core 5.0.10 - ORM untuk akses database
Caching & Sessionโ
- Redis - Caching menggunakan StackExchange.Redis (v2.6.86)
- Distributed Memory Cache - Session management
Lainnyaโ
- Swagger/OpenAPI - Dokumentasi API (Swashbuckle.AspNetCore v5.6.3)
- Newtonsoft.Json - JSON serialization
- NPOI - Excel file processing (DotNetCore.NPOI v1.2.3)
- Reporting - RDLC reports (AspNetCore.Reporting v2.1.0, ReportViewerCore.NETCore v15.1.14)
- Docker - Containerization support
Struktur Proyekโ
Proyek ini menggunakan arsitektur layered (berlapis) dengan struktur sebagai berikut:
kn2022_wastelimbahapi/
โโโ WasteLimbahAPI/ # API Layer (Presentation)
โ โโโ Controllers/ # API Controllers
โ โ โโโ Master/ # Master Data Controllers
โ โ โ โโโ LimbahController.cs
โ โ โ โโโ PictogramController.cs
โ โ โ โโโ PictogramLimbahController.cs
โ โ โ โโโ PrLimbahController.cs
โ โ โ โโโ UomController.cs
โ โ โโโ Transaction/ # Transaction Controllers
โ โ โ โโโ BbkController.cs
โ โ โ โโโ DashboardController.cs
โ โ โ โโโ KlhkController.cs
โ โ โ โโโ LineTransactionController.cs
โ โ โ โโโ PrOracleController.cs
โ โ โ โโโ RequestLimbahController.cs
โ โ โโโ PrintController.cs
โ โโโ ReportFiles/ # RDLC Report Files
โ โโโ Images/ # Image Assets
โ โโโ Print/ # Print Service
โ โโโ Startup.cs # Application Startup Configuration
โ โโโ Program.cs # Application Entry Point
โ โโโ appsettings.json # Configuration File
โ
โโโ KN2022_WasteLimbah.BussLogic/ # Business Logic Layer
โ โโโ Master/ # Master Data Business Logic
โ โ โโโ clsMLimbahBL.cs
โ โ โโโ clsMPictogramBL.cs
โ โ โโโ clsMPictogramLimbahBL.cs
โ โ โโโ clsMPrLimbahBL.cs
โ โ โโโ clsMUomBL.cs
โ โโโ Transaction/ # Transaction Business Logic
โ โโโ clsDashboardBL.cs
โ โโโ clsTrBbkBL.cs
โ โโโ clsTrKlhkBL.cs
โ โโโ clsTrLineTransactionBL.cs
โ โโโ clsTrPrOracleBL.cs
โ โโโ clsTrRequestLimbahBL.cs
โ
โโโ KN2022_WasteLimbah.DAL/ # Data Access Layer
โ โโโ Context/ # DbContext
โ โ โโโ WasteLimbahDBContext.cs
โ โโโ Models/ # Entity Models
โ โ โโโ Mlimbah.cs
โ โ โโโ Mpictogram.cs
โ โ โโโ Mpictogramlimbah.cs
โ โ โโโ Mprlimbah.cs
โ โ โโโ Muom.cs
โ โ โโโ Trbbk.cs
โ โ โโโ Trbbkdetail.cs
โ โ โโโ Trklhk.cs
โ โ โโโ Trlinetransaction.cs
โ โ โโโ Trproracle.cs
โ โ โโโ Trrequestlimbah.cs
โ โโโ EFHelper.cs # Entity Framework Helper
โ
โโโ KN2022_WasteLimbah.Common/ # Common/Shared Layer
โโโ ConfigModel/ # Configuration Models
โ โโโ AppConnectionString.cs
โ โโโ AppSettings.cs
โ โโโ WSOHelperModel.cs
โโโ Entity/ # Common Entities
โโโ Library/ # Shared Libraries & Utilities
Persyaratan Sistemโ
Development Environmentโ
- .NET 5.0 SDK atau lebih tinggi
- Visual Studio 2019/2022 atau Visual Studio Code
- PostgreSQL (untuk database utama)
- Oracle Database Client (untuk koneksi ke Oracle)
- Redis Server (untuk caching)
Runtime Requirementsโ
- .NET 5.0 Runtime
- PostgreSQL Database
- Oracle Database (opsional, jika diperlukan)
- Redis Server
Konfigurasiโ
1. Connection Stringsโ
Edit file WasteLimbahAPI/appsettings.json untuk mengkonfigurasi connection strings:
{
"ConnectionStrings": {
"LimbahConnection": "<encrypted_postgresql_connection_string>",
"OracleConnection": "<encrypted_oracle_connection_string>"
},
"RedisConnection": "redisappdev.kalbenutritionals.com,abortConnect=false"
}
Catatan: Connection strings menggunakan enkripsi. Pastikan untuk menggunakan connection string yang sesuai dengan environment (Local/Dev/Prod).
2. App Settingsโ
{
"AppSettings": {
"Secret": "THIS IS USED TO SIGN AND VERIFY JWT TOKENS, REPLACE IT WITH YOUR OWN SECRET"
}
}
3. Environment Configurationโ
- Development:
appsettings.Development.json - Production:
appsettings.json(default)
Instalasi & Setupโ
1. Clone Repositoryโ
git clone <repository-url>
cd kn2022_wastelimbahapi
2. Restore NuGet Packagesโ
dotnet restore
Atau melalui Visual Studio:
- Klik kanan pada solution โ Restore NuGet Packages
3. Build Solutionโ
dotnet build
Atau melalui Visual Studio:
- Build โ Build Solution (Ctrl+Shift+B)
4. Update Database Connectionโ
Edit appsettings.json dengan connection string yang sesuai dengan environment Anda.
5. Run Applicationโ
cd WasteLimbahAPI
dotnet run
Atau melalui Visual Studio:
- Tekan F5 atau klik Run
Aplikasi akan berjalan di:
- HTTP:
http://localhost:5000 - HTTPS:
https://localhost:5001
6. Akses Swagger Documentationโ
Setelah aplikasi berjalan, akses Swagger UI di:
https://localhost:5001/swagger
Database Schemaโ
Master Tablesโ
- mlimbah - Master data limbah
- mpictogram - Master pictogram
- mpictogramlimbah - Relasi pictogram dengan limbah
- mprlimbah - Master PR limbah
- muom - Master Unit of Measurement
Transaction Tablesโ
- trklhk - Transaksi KLHK
- trbbk - Transaksi BBK (Berita Acara)
- trlinetransaction - Transaksi line detail
- trproracle - Transaksi PR Oracle
- trrequestlimbah - Transaksi request limbah
API Endpointsโ
Master Data APIsโ
Limbahโ
POST /api/Limbah/GetAllPaging- Get all limbah dengan pagingPOST /api/Limbah/Get- Get limbah by IDPOST /api/Limbah/GetAllActive- Get all active limbahPOST /api/Limbah/Save- Save/Update limbahPOST /api/Limbah/Delete- Delete limbahPOST /api/Limbah/GetAllByType- Get limbah by type
Pictogramโ
POST /api/Pictogram/*- CRUD operations untuk pictogram
UOM (Unit of Measurement)โ
POST /api/Uom/*- CRUD operations untuk UOM
Transaction APIsโ
KLHKโ
POST /api/Klhk/*- Transaksi KLHK operations
BBK (Berita Acara)โ
POST /api/Bbk/*- Transaksi BBK operations
Request Limbahโ
POST /api/RequestLimbah/*- Request limbah operations
Dashboardโ
POST /api/Dashboard/*- Dashboard data operations
Print APIsโ
POST /api/Print/*- Print report operations
Request/Response Formatโ
Semua API menggunakan format request standar:
{
"objRequestData": {
// Request parameters sesuai endpoint
},
"txtUsername": "username",
"bitError": false,
"txtErrorMessage": null,
"objData": null
}
Response format:
{
"bitError": false,
"txtErrorMessage": null,
"objData": {
// Response data
}
}
Docker Supportโ
Proyek ini mendukung containerization dengan Docker. File Dockerfile sudah tersedia di folder WasteLimbahAPI/.
Build Docker Imageโ
docker build -t wastelimbah-api .
Run Docker Containerโ
docker run -p 8080:80 wastelimbah-api
Reportingโ
Aplikasi menggunakan RDLC reports untuk generate laporan:
- BBK.rdlc - Laporan Berita Acara
- LabelKuning.rdlc - Label Kuning
- Pictogram.rdlc - Laporan Pictogram
Report files berada di folder WasteLimbahAPI/ReportFiles/.
Cachingโ
Aplikasi menggunakan Redis untuk caching:
- Redis Connection: Dikonfigurasi di
appsettings.json - Cache Service: Implementasi di
KN2022_WasteLimbah.Common
Dependenciesโ
NuGet Packagesโ
API Layerโ
- AspNetCore.Reporting (v2.1.0)
- DotNetCore.NPOI (v1.2.3)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (v3.1.2)
- ReportViewerCore.NETCore (v15.1.14)
- StackExchange.Redis (v2.6.86)
- Swashbuckle.AspNetCore (v5.6.3)
- System.Drawing.Common (v5.0.2)
- System.Text.Encoding.CodePages (v5.0.0)
DAL Layerโ
- Microsoft.EntityFrameworkCore.SqlServer (v5.0.10)
- Microsoft.EntityFrameworkCore.Design (v5.0.10)
- Microsoft.EntityFrameworkCore.Tools (v5.0.10)
- Npgsql.EntityFrameworkCore.PostgreSQL (v5.0.10)
- Npgsql.EntityFrameworkCore.PostgreSQL.Design (v1.1.0)
- Oracle.EntityFrameworkCore (v5.21.1)
Common Layerโ
- Microsoft.AspNetCore.Hosting (v2.2.7)
- Microsoft.AspNetCore.Http (v2.2.2)
- Microsoft.Extensions.Options (v5.0.0)
- StackExchange.Redis (v2.6.86)
External DLLsโ
- KN2021_GlobalClient-NetCore.dll - Global client library (berada di
WasteLimbahAPI/AdditionalDLL/)
Securityโ
- Connection strings dienkripsi untuk keamanan
- JWT token support (dikonfigurasi di AppSettings)
- CORS policy dikonfigurasi untuk allow all origins (perlu disesuaikan untuk production)
Development Guidelinesโ
Code Structureโ
- Menggunakan naming convention PascalCase untuk class dan method
- Menggunakan prefix
clsuntuk business logic classes - Menggunakan prefix
Muntuk master entities - Menggunakan prefix
Truntuk transaction entities
Best Practicesโ
- Separation of Concerns: Setiap layer memiliki tanggung jawab yang jelas
- Dependency Injection: Menggunakan DI untuk loose coupling
- Error Handling: Semua endpoint memiliki try-catch untuk error handling
- Configuration: Menggunakan strongly-typed configuration models