Waste Limbah API - Dokumentasi Handover
๐ Deskripsi Projectโ
Project ini adalah sistem API untuk manajemen limbah (Waste Management) Kalbe Nutritionals. Sistem ini mengelola data master limbah, pictogram, dan transaksi terkait limbah termasuk integrasi dengan Oracle EBS.
๐ง Teknologi & Stackโ
| Komponen | Detail |
|---|---|
| Framework | .NET Core 5.0 |
| IDE | Visual Studio 2019 ke atas |
| Database Primary | PostgreSQL |
| Database Secondary | Oracle (EBS Integration) |
| Cache | Redis |
| ORM | Entity Framework Core |
| API Documentation | Swagger/OpenAPI |
| Reporting | RDLC Reports |
๐ Environment & Server Informationโ
Development/Production Serverโ
- Server IP: 10.104.1.134
- Database: WasteLimbahDB
- DB User: usrWasteLimbah
- DB Password: usrWasteLimbah
- Redis Server: redisappdev.kalbenutritionals.com
Statusโ
- โ CI/CD - Tested & Running
๐ Struktur Projectโ
1. WasteLimbahAPI (Main API Project)โ
Entry point utama aplikasi. Berisi controllers, configurations, dan reporting.
Key Components:
Program.cs- Entry point aplikasiStartup.cs- Konfigurasi services dan middlewareappsettings.json- Konfigurasi aplikasi (connection strings, Redis, etc.)Controllers/- API endpointsMaster/- Master data controllersTransaction/- Transaction controllers
ReportFiles/- RDLC report templatesPrint/- Print service implementation
2. KN2022_WasteLimbah.BussLogic (Business Logic Layer)โ
Berisi semua logika bisnis aplikasi.
Structure:
โโโ Master/
โ โโโ clsMLimbahBL.cs # Business logic untuk master limbah
โ โโโ clsMPictogramBL.cs # Business logic untuk master pictogram
โ โโโ clsMPictogramLimbahBL.cs # Business logic untuk relasi pictogram-limbah
โ โโโ clsMPrLimbahBL.cs # Business logic untuk PR limbah
โ โโโ clsMUomBL.cs # Business logic untuk unit of measure
โ
โโโ Transaction/
โโโ clsDashboardBL.cs # Business logic untuk dashboard
โโโ clsTrBbkBL.cs # Business logic untuk transaksi BBK
โโโ clsTrKlhkBL.cs # Business logic untuk transaksi KLHK
โโโ clsTrLineTransactionBL.cs # Business logic untuk line transaction
โโโ clsTrPrOracleBL.cs # Business logic untuk PR dari Oracle
โโโ clsTrRequestLimbahBL.cs # Business logic untuk request limbah
3. KN2022_WasteLimbah.DAL (Data Access Layer)โ
Layer untuk akses database menggunakan Entity Framework Core.
Key Components:
Context/WasteLimbahDBContext.cs- DbContext untuk PostgreSQLOracleContext.cs- DbContext untuk Oracle EBSOracleLOBContext.cs- DbContext khusus untuk Oracle LOB
Models/- Entity models yang mapping ke database tables- Master data models (Mlimbah, Mpictogram, Muom, dll)
- Transaction models (Trbbk, Trklhk, Trrequestlimbah, dll)
- Oracle models (XxshpGreenwmsRequisition, XxshpWmslobV)
4. KN2022_WasteLimbah.Common (Common Library)โ
Library untuk komponen yang digunakan bersama di seluruh project.
Structure:
โโโ ConfigModel/
โ โโโ AppConnectionString.cs # Model untuk connection strings
โ โโโ AppSettings.cs # Model untuk app settings
โ โโโ WSOHelperModel.cs # Model untuk WSO configuration
โ
โโโ Entity/
โ โโโ clsPrintModel.cs # Model untuk printing
โ โโโ Master/ # Master data entities
โ โโโ Oracle/ # Oracle entities
โ
โโโ Library/
โโโ AppServicesHelper.cs # Helper untuk dependency injection
โโโ clsAntiXSS.cs # Security helper untuk anti-XSS
โโโ clsGlobalClass.cs # Global utility class
โโโ clsGlobalConstant.cs # Global constants
โโโ clsPagingModelRequest.cs # Paging model untuk API
โโโ clsRijndael.cs # Encryption/Decryption helper
โโโ Cache/ # Redis cache implementation
โโโ CustomAttribute/ # Custom attributes
โโโ Interface/ # Interface definitions
๐๏ธ Databaseโ
PostgreSQL (Primary Database)โ
Database utama untuk menyimpan data master dan transaksi limbah.
Main Tables:
-
Master Tables
mlimbah- Master data limbahmpictogram- Master pictogrammpictogramlimbah- Relasi pictogram dengan limbahmprlimbah- Master PR limbahmuom- Master unit of measure
-
Transaction Tables
trbbk- Transaksi BBK (Buku Berita Kegiatan)trbbkdetail- Detail transaksi BBKtrklhk- Transaksi KLHK (Kementerian Lingkungan Hidup)trlinetransaction- Transaksi linetrproracle- Transaksi PR dari Oracletrrequestlimbah- Request limbah
Oracle (Secondary Database)โ
Integrasi dengan Oracle EBS untuk data PR dan WMS.
Views/Tables:
xxshp_greenwms_requisition- Data requisition dari WMSxxshp_wmslob_v- View untuk LOB data
๐ Security & Configurationโ
Encryptionโ
- Connection strings di-encrypt menggunakan Rijndael algorithm
- Implementasi ada di
clsRijndael.cs
Anti-XSS Protectionโ
- Proteksi input dari XSS attack
- Implementasi di
clsAntiXSS.cs
CORS Policyโ
- Configured untuk allow any origin (development)
- Bisa dikustomisasi di
Startup.cs
๐ก API Endpointsโ
Master Data APIsโ
1. Limbah Controller (/api/Limbah)โ
- Manajemen master data limbah
2. Pictogram Controller (/api/Pictogram)โ
- Manajemen master pictogram
3. Pictogram Limbah Controller (/api/PictogramLimbah)โ
- Manajemen relasi pictogram dengan limbah
4. PR Limbah Controller (/api/PrLimbah)โ
- Manajemen PR limbah
5. UOM Controller (/api/Uom)โ
- Manajemen unit of measure
Transaction APIsโ
1. BBK Controller (/api/Bbk)โ
- Transaksi Buku Berita Kegiatan (BBK)
- Generate laporan BBK
2. KLHK Controller (/api/Klhk)โ
- Transaksi KLHK
- Pelaporan ke Kementerian Lingkungan Hidup
3. Request Limbah Controller (/api/RequestLimbah)โ
- Request pengelolaan limbah
- Approval workflow
4. Line Transaction Controller (/api/LineTransaction)โ
- Transaksi per line produksi
5. PR Oracle Controller (/api/PrOracle)โ
- Integrasi PR dengan Oracle EBS
6. Dashboard Controller (/api/Dashboard)โ
- Data untuk dashboard analytics
Utility APIsโ
Print Controller (/api/Print)โ
- Generate PDF reports
- Print labels dan dokumen
๐ Reportingโ
Report Templates (RDLC)โ
Located in ReportFiles/ folder:
-
BBK.rdlc
- Template untuk laporan BBK
-
Pictogram.rdlc
- Template untuk print pictogram
-
LabelKuning.rdlc
- Template untuk label kuning limbah
Print Serviceโ
- Implementasi:
WasteLimbah.Print.PrintService - Support: PDF generation
- Library: AspNetCore.Reporting
๐ Setup & Installationโ
Prerequisitesโ
- Visual Studio 2019 atau lebih baru
- .NET Core 5.0 SDK
- PostgreSQL Client
- Oracle Client (untuk Oracle connectivity)
- Redis (optional, untuk caching)
Step-by-Step Installationโ
-
Clone Repository
git clone <repository-url>
cd kn2022_wastelimbahapi -
Restore NuGet Packages
dotnet restore -
Update Connection Strings
- Edit
WasteLimbahAPI/appsettings.json - Update
LimbahConnection(PostgreSQL) - Update
OracleConnection(jika diperlukan) - Update
RedisConnection(jika menggunakan Redis)
- Edit
-
Database Migration (jika ada)
dotnet ef database update --project KN2022_WasteLimbah.DAL -
Build Solution
dotnet build -
Run Application
cd WasteLimbahAPI
dotnet run -
Access Swagger UI
- URL:
https://localhost:5001/swagger - atau
http://localhost:5000/swagger
- URL:
๐ณ Docker Deploymentโ
Project sudah include Dockerfile untuk containerization.
Build Docker Imageโ
docker build -t wastelimbah-api:latest .
Run Containerโ
docker run -p 8080:80 -p 8443:443 wastelimbah-api:latest
๐ CI/CDโ
Status: โ Tested & Running
Pipeline Configurationโ
- CI/CD sudah dikonfigurasi dan tested
- Automated deployment tersedia
- Detail pipeline tergantung platform yang digunakan (GitLab CI, Azure DevOps, dll)
๐ฆ Dependenciesโ
Main Packagesโ
- Entity Framework Core - ORM
- Oracle.EntityFrameworkCore - Oracle provider
- Npgsql.EntityFrameworkCore.PostgreSQL - PostgreSQL provider
- StackExchange.Redis - Redis client
- Swashbuckle.AspNetCore - Swagger/OpenAPI
- AspNetCore.Reporting - RDLC reporting
- Microsoft.VisualStudio.Web.CodeGeneration.Design - Code generation
๐งช Testingโ
API Testingโ
- Gunakan Swagger UI untuk testing endpoints
- URL:
/swagger
๐ Naming Conventionsโ
Classesโ
- BL suffix = Business Logic (e.g.,
clsMLimbahBL) - cls prefix = Class (legacy naming)
- Tr prefix = Transaction entities
- M prefix = Master entities
Databaseโ
- Lowercase naming untuk tables dan columns
- Prefix conventions:
m= Master tablestr= Transaction tablesxxshp_= Oracle custom tables/views
๐ Troubleshootingโ
Common Issuesโ
-
Oracle Connection Failed
- Pastikan Oracle Client terinstall
- Verify Oracle connection string
- Check network connectivity ke Oracle server
-
Report Generation Failed
- Pastikan RDLC files ada di folder
ReportFiles/ - Check
CopyToOutputDirectoryproperty di csproj - Verify AspNetCore.Reporting package installed
- Pastikan RDLC files ada di folder
๐ Additional Resourcesโ
Documentation Locationsโ
- API Documentation: Swagger UI (
/swagger) - Database Schema: Check
scaffoldingBD.txtin DAL project
Code Referencesโ
- Connection String Management:
AppConnectionString.cs - Global Settings:
clsGlobalClass.cs,clsGlobalConstant.cs - Cache Implementation:
Cache/folder in Common project - Security Utils:
clsAntiXSS.cs,clsRijndael.cs