map-controller/app/routes.py
2025-07-02 21:27:29 +07:00

306 lines
10 KiB
Python

from flask import Blueprint, jsonify, render_template, request
from app import mapController
from app.apiController import apiController
from app.utils import toRupiah
import mysql.connector
from contextlib import contextmanager
main = Blueprint('main', __name__)
# conn = mysql.connector.connect(
# host="192.168.91.102",
# database="dbwarehouse",
# user="dwhadmin",
# password="K3m3nd3s4@2025"
# )
@contextmanager
def get_connection():
conn = None
try:
conn = mysql.connector.connect(
# 192.168.91.102
host="localhost",
database="dbwarehouse",
# dwhadmin
user="root",
# K3m3nd3s4@2025
password="asalada123"
)
yield conn
finally:
if conn is not None and conn.is_connected():
conn.close()
@main.route('/api/status/danadesa/<level>/<kode>')
def get_total_dana_by_level(level,kode):
with get_connection() as conn:
result = apiController.getTotalDana(conn,level,kode )
return jsonify(result)
#========================================================
# MAIN ROUTE
#========================================================
@main.route('/')
def index():
with get_connection() as conn:
data = apiController.provinsi(conn)
print(data)
return render_template('index.html', provinsis=data)
@main.route('/map')
def map():
with get_connection() as conn:
data = apiController.provinsi(conn)
print(data)
return render_template('map.html', provinsis=data)
@main.route("/geojson/provinsi")
def get_provinsi():
with get_connection() as conn:
data = mapController.fetch_geojson(conn,'provinsi')
return jsonify(data)
@main.route("/geojson/kabupaten/<kode_provinsi>")
def get_kabupaten(kode_provinsi):
with get_connection() as conn:
print("PRovinsi kode: ", kode_provinsi)
data = mapController.fetch_geojson(conn,'kabupaten', kode_provinsi)
return jsonify(data)
@main.route("/geojson/kecamatan/<kode_kabupaten>")
def get_kecamatan(kode_kabupaten):
with get_connection() as conn:
data = mapController.fetch_geojson(conn,'kecamatan', kode_kabupaten)
return jsonify(data)
@main.route("/geojson/desa/<kode_kecamatan>")
def get_desa(kode_kecamatan):
with get_connection() as conn:
data = mapController.fetch_geojson(conn,'desa', kode_kecamatan)
return jsonify(data)
#=========================================================
# API DATA
#=============================================================
@main.route('/api/desa/total-dana-desa')
def get_total_dd():
with get_connection() as conn:
datas = apiController.getTotalPersentaseSerapan(conn)
data = datas['jumlah_per_m']
return jsonify(data)
@main.route("/api/desa/total-serapan-dana")
def get_total_Serapan():
with get_connection() as conn:
data = apiController.getTotalPersentaseSerapan(conn)
return jsonify(data)
@main.route('/api/geojson/<level>')
def get_geojson(level):
print(level)
allowed = ['wil_provinsi', 'wil_kabupaten_kota', 'wil_kecamatan', 'wil_kelurahan_desa']
if level not in allowed:
return jsonify({"error": "Invalid level"}), 400
geojson_data = mapController.fetch_geojson(conn,level)
return jsonify(geojson_data)
#Informasi desa per provinsi
@main.route('/api/status-provinsi/<kode_provinsi>')
def get_status_provinsi(kode_provinsi):
with get_connection() as conn:
data = apiController.getStatusProvinsi(conn,kode_provinsi)
return jsonify(data)
#informasi desa per kabupaten/kota
@main.route('/api/status-kabupatenkota/<kode_prov>/<kode_kabkota>')
def get_status_kabkota(kode_prov, kode_kabkota):
with get_connection() as conn:
data = apiController.getStatusKabkota(conn,kode_prov, kode_kabkota)
return jsonify(data)
#informasi desa per kecamatan
@main.route('/api/status-kecamatan/<kode_provinsi>/<kode_kabupatenkota>/<kode_kecamatan>')
def get_status_kecamatan(kode_provinsi, kode_kabupatenkota, kode_kecamatan):
print(kode_provinsi, kode_kabupatenkota, kode_kecamatan)
with get_connection() as conn:
data = apiController.getStatusKecamatan(conn,kode_provinsi, kode_kabupatenkota, kode_kecamatan)
data = jsonify(data)
return data
@main.route("/api/status-bumdes")
def get_status_bumdes():
with get_connection() as conn:
data = apiController.getBumdes(conn)
return jsonify(data[0])
#informasi bumdes Bersama
@main.route("/api/status-bumdes-bersama")
def get_status_bumdes_bersma():
with get_connection() as conn:
data = apiController.getBumdes(conn)
return jsonify(data[1])
#informasi pendamping
@main.route('/api/pendamping-desa')
def get_pendamping():
with get_connection() as conn:
data = apiController.getPendamping(conn)
return jsonify(data[1])
#informasi pendamping per desa
@main.route('/api/pendamping-per-desa')
def get_pendamping_perdesa():
with get_connection() as conn:
data = apiController.getPendampingPerDesa(conn)
return jsonify(data[0])
#=======================================================================
#=======================================================================
#informasi Koperasi
@main.route('/api/provinsi/koperasi/<kode_prov>')
def get_koperasi_by_provinsi(kode_prov):
with get_connection() as conn:
data = apiController.getDesaDenganAtauTanpaKopmerKab(conn, kode_prov)
return jsonify(data)
@main.route('/api/provinsi/pendamping/<kode_prov>')
def get_pendamping_per_provinsi(kode_prov):
with get_connection() as conn:
data = apiController.getPendampingPerProv(conn, kode_prov)
return jsonify(data)
#informasi bumdes per provinsi
@main.route("/api/provinsi/bumdes/<kode_provinsi>")
def get_status_bumdes_prov(kode_provinsi):
with get_connection() as conn:
data = apiController.getBumdesProv(conn,kode_provinsi)
return jsonify(data)
#informasi serapan per provinsi
@main.route("/api/provinsi/serapan/<kode_provinsi>")
def get_provinsi_serapan(kode_provinsi):
with get_connection() as conn:
data = apiController.getTotalSerapanProv(conn,kode_provinsi)
return jsonify(data)
#=======================================================================
#=======================================================================
#informasi Koperasi
@main.route('/api/kabkota/koperasi/<kode_kabkota>')
def get_koperasi_by_kabkota(kode_kabkota):
with get_connection() as conn:
data = apiController.getDesaDenganAtauTanpaKopmerKab(conn, kode_kabkota)
return jsonify(data)
@main.route('/api/kabkota/pendamping/<kode_kabkota>')
def get_pendamping_per_kabkota(kode_kabkota):
with get_connection() as conn:
data = apiController.getPendampingPerKab(conn, kode_kabkota)
return jsonify(data)
#informasi bumdes
@main.route("/api/kabkota/bumdes/<kode_kabkota>")
def get_status_bumdes_kabkota(kode_kabkota):
with get_connection() as conn:
data = apiController.getBumdesKab(conn,kode_kabkota)
return jsonify(data)
#informasi serapan
@main.route("/api/kabkota/serapan/<kode_kabkota>")
def get_kabkota_serapan(kode_kabkota):
with get_connection() as conn:
data = apiController.getTotalSerapanKab(conn,kode_kabkota)
return jsonify(data)
#=======================================================================
#=======================================================================
#informasi Koperasi
@main.route('/api/kecamatan/koperasi/<kode_kecamatan>')
def get_koperasi_by_kecamatan(kode_kecamatan):
with get_connection() as conn:
data = apiController.getDesaDenganAtauTanpaKopmerKec(conn, kode_kecamatan)
return jsonify(data)
@main.route('/api/kecamatan/pendamping/<kode_kecamatan>')
def get_pendamping_per_kecamatan(kode_kecamatan):
with get_connection() as conn:
data = apiController.getPendampingPerKec(conn, kode_kecamatan)
return jsonify(data)
#informasi bumdes
@main.route("/api/kecamatan/bumdes/<kode_kecamatan>")
def get_status_bumdes_kecamatan(kode_kecamatan):
with get_connection() as conn:
data = apiController.getBumdesKec(conn,kode_kecamatan)
return jsonify(data)
#informasi serapan
@main.route("/api/kecamatan/serapan/<kode_kecamatan>")
def get_kecamatan_serapan(kode_kecamatan):
with get_connection() as conn:
data = apiController.getTotalSerapanKec(conn,kode_kecamatan)
return jsonify(data)
#=======================================================================
#=======================================================================
#informasi Koperasi
@main.route('/api/desa/status/<kode_prov>/<kode_kabkota>/<kode_kecamatan>/<kode_desa>')
def get_status_by_desa(kode_prov, kode_kabkota, kode_kecamatan, kode_desa):
with get_connection() as conn:
data = apiController.getStatusDesaByDesa(conn, kode_prov, kode_kabkota, kode_kecamatan, kode_desa)
return jsonify(data)
@main.route('/api/desa/koperasi/<kode_desa>')
def get_koperasi_by_desa(kode_desa):
with get_connection() as conn:
data = apiController.getDesaDenganAtauTanpaKopmerDesa(conn, kode_desa)
return jsonify(data)
@main.route('/api/desa/pendamping/<kode_desa>')
def get_pendamping_per_desa(kode_desa):
with get_connection() as conn:
data = apiController.getPendampingPerDesa(conn, kode_desa)
return jsonify(data)
#informasi bumdes
@main.route("/api/desa/bumdes/<kode_desa>")
def get_status_bumdes_desa(kode_desa):
with get_connection() as conn:
data = apiController.getBumdesDesa(conn,kode_desa)
return jsonify(data)
#informasi serapan
@main.route("/api/desa/serapan/<kode_desa>")
def get_pdesa_serapan(kode_desa):
with get_connection() as conn:
data = apiController.getTotalSerapanDesa(conn,kode_desa)
return jsonify(data)
#==================
# MASTER
#===============
@main.route('/app/master/provinsi')
def get_master_provinsi():
with get_connection() as conn:
data = apiController.provinsi(conn)
return data
@main.route('/api/master/kabkota/')
def get_master_kabkota():
provinsi_id = request.args.get('provinsi_id')
with get_connection() as conn:
data = apiController.kabkota(conn, provinsi_id)
return jsonify(data)
@main.route('/api/master/kecamatan')
def get_master_kecamatan():
kabkota_id = request.args.get('kabkota_id')
with get_connection() as conn:
data = apiController.kecamatan(conn,kabkota_id)
return jsonify(data)