From 7337f7eee91b6398e01f7bac6b43d9a516450761 Mon Sep 17 00:00:00 2001 From: yaso Date: Fri, 22 Nov 2024 11:54:07 +0200 Subject: [PATCH] create apis to get, add & delete loyalty cards --- backend/database/dbConnection.py | 8 ++ backend/main.py | 2 + backend/routers/mzansi_wallet.py | 138 +++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 backend/routers/mzansi_wallet.py diff --git a/backend/database/dbConnection.py b/backend/database/dbConnection.py index fb1405fb..75686c36 100644 --- a/backend/database/dbConnection.py +++ b/backend/database/dbConnection.py @@ -24,6 +24,14 @@ def dbDataAccessConnect(): database="data_access" ) +def dbMzansiWalletConnect(): + return mysql.connector.connect( + host="mysqldb", + user="root", + passwd="C@rtoon1995", + database="mzansi_wallet" + ) + def dbAllConnect(): return mysql.connector.connect( host="mysqldb", diff --git a/backend/main.py b/backend/main.py index 7f5886cd..2dda05e9 100644 --- a/backend/main.py +++ b/backend/main.py @@ -14,6 +14,7 @@ import routers.business_user as business_user import routers.business as business import routers.access_request as access_request import routers.patient_access as patient_access +import routers.mzansi_wallet as mzansi_wallet from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware import Middleware from supertokens_python import get_all_cors_headers @@ -86,6 +87,7 @@ app.include_router(medicine.router) app.include_router(business_user.router) app.include_router(business.router) app.include_router(notifications.router) +app.include_router(mzansi_wallet.router) # Check if server is up @app.get("/", tags=["Server Check"]) diff --git a/backend/routers/mzansi_wallet.py b/backend/routers/mzansi_wallet.py new file mode 100644 index 00000000..e4ca2d8d --- /dev/null +++ b/backend/routers/mzansi_wallet.py @@ -0,0 +1,138 @@ +from fastapi import APIRouter, HTTPException +from pydantic import BaseModel +from datetime import date +#from ..database import dbConnection +import database +#SuperToken Auth from front end +from supertokens_python.recipe.session.framework.fastapi import verify_session +from supertokens_python.recipe.session import SessionContainer +from fastapi import Depends + +router = APIRouter() + +class LoyaltyCardDeleteRequest(BaseModel): + idloyalty_cards: int + +class MzansiWalletInsertRequest(BaseModel): + app_id: str + shop_name: str + card_number: str + +# class patientNoteUpdateRequest(BaseModel): +# idpatient_notes: int +# note_name: str +# note_text: str +# doc_office: str +# doctor: str +# patient_id: int + +# Get List of all loyalty cards by user +@router.get("/mzasni-wallet/loyalty-cards/{app_id}", tags=["Mzansi Wallet"]) +async def read_all_loyalty_cards_by_app_id(app_id: str, session: SessionContainer = Depends(verify_session())): # , session: SessionContainer = Depends(verify_session()) + db = database.dbConnection.dbMzansiWalletConnect() + cursor = db.cursor() + query = "SELECT * FROM loyalty_cards where app_id = %s ORDER BY shop_name Asc" + cursor.execute(query, (app_id,)) + items = [ + { + "idloyalty_cards": item[0], + "app_id": item[1], + "shop_name": item[2], + "card_number": item[3], + } + for item in cursor.fetchall() + ] + cursor.close() + db.close() + return items + +# Get List of all notes by patient +# @router.get("/notes/patients-docOffice/", tags="patients_notes") +# async def read_all_patientsby(itemRequest: noteRequest, session: SessionContainer = Depends(verify_session())): +# db = database.dbConnection.dbPatientManagerConnect() +# cursor = db.cursor() +# query = "select patient_notes.idpatient_notes, patient_notes.note_name, patient_notes.note_text, patient_notes.patient_id, patient_notes.insert_date, patients.doc_office_id " +# query += "from patient_manager.patient_notes " +# query += "inner join patient_manager.patients " +# query += "on patient_notes.patient_id = patients.idpatients " +# query += "where patient_notes.patient_id = %s and patients.doc_office_id = %s" +# cursor.execute(query, (itemRequest.patientID, itemRequest.DocOfficeID,)) +# items = [ +# { +# "idpatient_notes": item[0], +# "note_name": item[1], +# "note_text": item[2], +# "insert_date": item[3], +# } +# for item in cursor.fetchall() +# ] +# cursor.close() +# db.close() +# return items + +# Insert loyalty cards into table +@router.post("/mzasni-wallet/loyalty-cards/insert/", tags=["Mzansi Wallet"], status_code=201) +async def insert_loyalty_card(itemRequest : MzansiWalletInsertRequest): #, session: SessionContainer = Depends(verify_session()) + db = database.dbConnection.dbMzansiWalletConnect() + cursor = db.cursor() + query = "insert into loyalty_cards " + query += "(app_id, shop_name, card_number) " + query += "values (%s, %s, %s)" + notetData = (itemRequest.app_id, + itemRequest.shop_name, + itemRequest.card_number, + ) + try: + cursor.execute(query, notetData) + except Exception as error: + print(error) + raise HTTPException(status_code=404, detail="Failed to Create Record") + # return {"message": error} + db.commit() + cursor.close() + db.close() + return {"message": "Successfully Created Record"} + +# Delete loyalty cards on table +@router.delete("/mzasni-wallet/loyalty-cards/delete/", tags=["Mzansi Wallet"]) +async def Delete_loyalty_card(itemRequest : LoyaltyCardDeleteRequest, session: SessionContainer = Depends(verify_session())): #, session: SessionContainer = Depends(verify_session()) + # today = date.today() + db = database.dbConnection.dbMzansiWalletConnect() + cursor = db.cursor() + query = "delete from loyalty_cards " + query += "where idloyalty_cards=%s" + # notetData = (itemRequest.idpatient_notes) + try: + cursor.execute(query, (str(itemRequest.idloyalty_cards),)) + except Exception as error: + print(error) + raise HTTPException(status_code=404, detail="Failed to Delete Record") + #return {"query": query, "message": error} + db.commit() + cursor.close() + db.close() + return {"message": "Successfully deleted Record"} + +# Update Patient note on table +# @router.put("/notes/update/", tags="patients_notes") +# async def UpdatePatient(itemRequest : patientNoteUpdateRequest, session: SessionContainer = Depends(verify_session())): +# today = date.today() +# db = database.dbConnection.dbPatientManagerConnect() +# cursor = db.cursor() +# query = "update patient_notes " +# query += "set note_name=%s, note_text=%s, patient_id=%s, insert_date=%s " +# query += "where idpatient_notes=%s" +# notetData = (itemRequest.note_name, +# itemRequest.note_text, +# itemRequest.patient_id, +# today, +# itemRequest.idpatient_notes) +# try: +# cursor.execute(query, notetData) +# except Exception as error: +# raise HTTPException(status_code=404, detail="Failed to Update Record") +# #return {"query": query, "message": error} +# db.commit() +# cursor.close() +# db.close() +# return {"message": "Successfully Updated Record"} \ No newline at end of file