From 3af156eb21620157abe24ca0d61daf6c100e132d Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Sun, 9 Mar 2025 21:24:57 -0400 Subject: [PATCH] Loan create --- SQL/salaryloan.sql | 1 + app/app.py | 73 +++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 67 insertions(+), 7 deletions(-) diff --git a/SQL/salaryloan.sql b/SQL/salaryloan.sql index 46874d6..e890ffb 100644 --- a/SQL/salaryloan.sql +++ b/SQL/salaryloan.sql @@ -102,6 +102,7 @@ CREATE TABLE loans ( loan VARCHAR(25) REFERENCES loan_offers (loan), approved_amount INT DEFAULT 0, days_duration INT DEFAULT 0, + status INT DEFAULT 1, due_date timestamp, payment INT DEFAULT 0, added timestamp without time zone DEFAULT now() diff --git a/app/app.py b/app/app.py index 6dfa46f..eddf482 100644 --- a/app/app.py +++ b/app/app.py @@ -15,7 +15,7 @@ from flask import ( request, ) from flask_cors import CORS, cross_origin - +from datetime import timedelta, date from functools import wraps import json import psycopg2.extras @@ -361,7 +361,9 @@ def salary_verifloan2(): with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cursor: cursor.execute(UPDATE_APPLICATION) -# loan_schedule = loan_create(bvn,loan_application_id) + print("10000-cccc") + loan_schedule = loan_create_final(bvn,loan_application_id) + return { "qr": UPDATE_APPLICATION, "status": "1", @@ -387,8 +389,9 @@ def salary_verifloan2(): "data": None }, 500 -def loan_create(bvn,loan_application_uid): - SELECT_LOAN = "SELECT uid,loan,bvn,amount,added,verified,status,due_date FROM loan_apply WHERE uid::text = '" + loan_application_uid + "' AND bvn ='" + bvn + "' " +def loan_create_final(bvn,loan_application_uid): + SELECT_LOAN = "SELECT uid,loan,bvn,amount,added::text,verified::text,status,due_date::text FROM loan_apply WHERE uid::text = '" + loan_application_uid + "' AND bvn ='" + bvn + "' " + print(SELECT_LOAN) with connection: with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cursor: cursor.execute(SELECT_LOAN) @@ -397,6 +400,20 @@ def loan_create(bvn,loan_application_uid): loan_data = json.dumps( [dict(ix) for ix in select_demoS] ) loan_result = json.loads( loan_data ) + print(loan_result) + + loan=loan_result[0]['loan'] + approved_amount=loan_result[0]['amount'] + days_duration=30 + due_date= date.today() + timedelta(days=30) + + INSERT_LOAN="INSERT INTO loans (application_uid,bvn,loan,approved_amount,days_duration,due_date) VALUES (%s,%s,%s,%s,%s,%s)" + new_data = (loan_application_uid,bvn,loan,approved_amount,days_duration,due_date) + #print(new_data) + with connection: + with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cursor: + cursor.execute(INSERT_LOAN,new_data) + return loan_result def products(): @@ -406,6 +423,22 @@ def products(): {"cid": "3", "description": "First Advance" , "active" : 1 }, ] return product_data +# CREATE TABLE loans ( +# id SERIAL, +# uid uuid DEFAULT uuid_generate_v4(), +# application_uid VARCHAR(150) NOT NULL, +# bvn VARCHAR(12) NOT NULL, +# loan VARCHAR(25) REFERENCES loan_offers (loan), +# approved_amount INT DEFAULT 0, +# days_duration INT DEFAULT 0, +# status INT DEFAULT 1, +# due_date timestamp, +# payment INT DEFAULT 0, +# added timestamp without time zone DEFAULT now() +# ); +# ALTER TABLE ONLY loans +# ADD CONSTRAINT loans_id_key UNIQUE (id); + def load_offer(loan,bvn): OFFER_QUERY = "SELECT uid AS cid,loan,amount,description,days_duration,active FROM loan_offers WHERE loan='" + loan +"' LIMIT 1" @@ -487,7 +520,8 @@ def loan_approved(): def office_loan_data_select(loanLevel): - SELECT_Q = f'''SELECT ls.id,ls.added::text, dm.name,dm.mobile, ls.bvn , ls.loan,lo.description FROM loan_select ls LEFT JOIN loan_offers lo ON lo.loan=ls.loan + SELECT_Q = f'''SELECT ls.id,ls.added::text, dm.name,dm.mobile, ls.bvn , ls.loan,lo.description + FROM loan_select ls LEFT JOIN loan_offers lo ON lo.loan=ls.loan LEFT JOIN demo_bank_accounts dm ON dm.bvn = ls.bvn ORDER BY ls.id DESC LIMIT 300 ''' with connection: @@ -506,8 +540,13 @@ def office_loan_data(loanLevel): LEFT JOIN demo_bank_accounts dm ON dm.bvn = ls.bvn ORDER BY ls.id DESC LIMIT 300 ''' if loanLevel == "APPLY": - SELECT_Q = f'''SELECT ls.id,ls.added::text, dm.name,dm.mobile, ls.bvn , ls.loan,lo.description,ls.amount,ls.verified::text FROM loan_apply ls LEFT JOIN loan_offers lo ON lo.loan=ls.loan - LEFT JOIN demo_bank_accounts dm ON dm.bvn = ls.bvn ORDER BY ls.id DESC LIMIT 300''' + SELECT_Q = f'''SELECT ls.id,ls.added::text, dm.name,dm.mobile, ls.bvn , + ls.loan,lo.description,ls.amount,ls.verified::text + FROM loan_apply ls + LEFT JOIN loan_offers lo ON lo.loan=ls.loan + LEFT JOIN demo_bank_accounts dm ON dm.bvn = ls.bvn + WHERE ls.verified IS NOT NULL AND ls.status = 5 + ORDER BY ls.id DESC LIMIT 300''' with connection: with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cursor: @@ -561,6 +600,26 @@ def repay_loans(): return offer_detail +@app.route('/simulation/generator') +def generate_activities(): + generate_simulation_salary() + + generate_simulation_transaction() + + generate_simulation_credit() + + return [] + +def generate_simulation_salary(): + pass + +def generate_simulation_transaction(): + pass + +def generate_simulation_credit(): + pass + + if __name__ == '__main__': app.run(host='0.0.0.0', port=8000) \ No newline at end of file