Skip to main content

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โ€‹

KomponenDetail
Framework.NET Core 5.0
IDEVisual Studio 2019 ke atas
Database PrimaryPostgreSQL
Database SecondaryOracle (EBS Integration)
CacheRedis
ORMEntity Framework Core
API DocumentationSwagger/OpenAPI
ReportingRDLC 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 aplikasi
  • Startup.cs - Konfigurasi services dan middleware
  • appsettings.json - Konfigurasi aplikasi (connection strings, Redis, etc.)
  • Controllers/ - API endpoints
    • Master/ - Master data controllers
    • Transaction/ - Transaction controllers
  • ReportFiles/ - RDLC report templates
  • Print/ - 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 PostgreSQL
    • OracleContext.cs - DbContext untuk Oracle EBS
    • OracleLOBContext.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 limbah
    • mpictogram - Master pictogram
    • mpictogramlimbah - Relasi pictogram dengan limbah
    • mprlimbah - Master PR limbah
    • muom - Master unit of measure
  • Transaction Tables

    • trbbk - Transaksi BBK (Buku Berita Kegiatan)
    • trbbkdetail - Detail transaksi BBK
    • trklhk - Transaksi KLHK (Kementerian Lingkungan Hidup)
    • trlinetransaction - Transaksi line
    • trproracle - Transaksi PR dari Oracle
    • trrequestlimbah - Request limbah

Oracle (Secondary Database)โ€‹

Integrasi dengan Oracle EBS untuk data PR dan WMS.

Views/Tables:

  • xxshp_greenwms_requisition - Data requisition dari WMS
  • xxshp_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โ€‹

  • Generate PDF reports
  • Print labels dan dokumen

๐Ÿ“Š Reportingโ€‹

Report Templates (RDLC)โ€‹

Located in ReportFiles/ folder:

  1. BBK.rdlc

    • Template untuk laporan BBK
  2. Pictogram.rdlc

    • Template untuk print pictogram
  3. LabelKuning.rdlc

    • Template untuk label kuning limbah
  • Implementasi: WasteLimbah.Print.PrintService
  • Support: PDF generation
  • Library: AspNetCore.Reporting

๐Ÿš€ Setup & Installationโ€‹

Prerequisitesโ€‹

  1. Visual Studio 2019 atau lebih baru
  2. .NET Core 5.0 SDK
  3. PostgreSQL Client
  4. Oracle Client (untuk Oracle connectivity)
  5. Redis (optional, untuk caching)

Step-by-Step Installationโ€‹

  1. Clone Repository

    git clone <repository-url>
    cd kn2022_wastelimbahapi
  2. Restore NuGet Packages

    dotnet restore
  3. Update Connection Strings

    • Edit WasteLimbahAPI/appsettings.json
    • Update LimbahConnection (PostgreSQL)
    • Update OracleConnection (jika diperlukan)
    • Update RedisConnection (jika menggunakan Redis)
  4. Database Migration (jika ada)

    dotnet ef database update --project KN2022_WasteLimbah.DAL
  5. Build Solution

    dotnet build
  6. Run Application

    cd WasteLimbahAPI
    dotnet run
  7. Access Swagger UI

    • URL: https://localhost:5001/swagger
    • atau http://localhost:5000/swagger

๐Ÿณ 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 tables
    • tr = Transaction tables
    • xxshp_ = Oracle custom tables/views

๐Ÿ” Troubleshootingโ€‹

Common Issuesโ€‹

  1. Oracle Connection Failed

    • Pastikan Oracle Client terinstall
    • Verify Oracle connection string
    • Check network connectivity ke Oracle server
  2. Report Generation Failed

    • Pastikan RDLC files ada di folder ReportFiles/
    • Check CopyToOutputDirectory property di csproj
    • Verify AspNetCore.Reporting package installed

๐Ÿ“š Additional Resourcesโ€‹

Documentation Locationsโ€‹

  • API Documentation: Swagger UI (/swagger)
  • Database Schema: Check scaffoldingBD.txt in 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