from flask import Blueprint, jsonify, render_template import psycopg2 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 #======================================================== @main.route('/') def index(): return render_template('index.html') @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/") 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/") 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/") 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/') 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/') 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//') 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///') 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/') 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/') 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/") 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/") 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/') 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/') 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/") 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/") 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/') 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/') 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/") 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/") 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////') 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/') def get_koperasi_by_desa(kode_desa): data = apiController.getDesaDenganAtauTanpaKopmerDesa(conn, kode_desa) return jsonify(data) @main.route('/api/desa/pendamping/') 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/") def get_status_bumdes_desa(kode_desa): data = apiController.getBumdesDesa(conn,kode_desa) return jsonify(data) #informasi serapan @main.route("/api/desa/serapan/") def get_pdesa_serapan(kode_desa): 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(): with get_connection() as conn: data = apiController.kabkota return jsonify(data) @main.route('/api/master/kecamatan') def get_master_kecamatan(): with get_connection() as conn: data = apiController.kecamatan(conn) return jsonify(data)