Skip to main content

๐Ÿ“‹ 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:

EnvironmentURL AksesDeskripsi
๐Ÿš€ Productionhttps://wastems.kalbenutritionals.comEnvironment utama pengguna
๐Ÿงช Developmenthttps://wastemsdev.kalbenutritionals.web.idTesting & 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 paging
  • POST /api/Limbah/Get - Get limbah by ID
  • POST /api/Limbah/GetAllActive - Get all active limbah
  • POST /api/Limbah/Save - Save/Update limbah
  • POST /api/Limbah/Delete - Delete limbah
  • POST /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
  • 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 cls untuk business logic classes
  • Menggunakan prefix M untuk master entities
  • Menggunakan prefix Tr untuk transaction entities

Best Practicesโ€‹

  1. Separation of Concerns: Setiap layer memiliki tanggung jawab yang jelas
  2. Dependency Injection: Menggunakan DI untuk loose coupling
  3. Error Handling: Semua endpoint memiliki try-catch untuk error handling
  4. Configuration: Menggunakan strongly-typed configuration models