75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
import json
|
|
import typing
|
|
import zlib
|
|
from base64 import b64decode
|
|
|
|
from fastapi import status
|
|
from fastapi.routing import APIRouter
|
|
from fastapi.responses import JSONResponse
|
|
from fastapi.requests import Request
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
internal_route = APIRouter(prefix="/internal", tags=["Internal"])
|
|
internal_route.include_router(internal_route, include_in_schema=False)
|
|
|
|
|
|
class ApiReceive(BaseModel):
|
|
data: str
|
|
|
|
|
|
class BankReceive(BaseModel):
|
|
import_file_name: str
|
|
iban: str
|
|
bank_date: str
|
|
channel_branch: str
|
|
currency: typing.Optional[str] = "TL"
|
|
currency_value: float
|
|
bank_balance: float
|
|
additional_balance: float
|
|
process_name: str
|
|
process_type: str
|
|
process_comment: str
|
|
bank_reference_code: str
|
|
|
|
|
|
@internal_route.post(
|
|
path="/isbank/retreive",
|
|
summary="Receive isbank xls service from mail reader service",
|
|
)
|
|
def is_bank_retrieve_account_records(request: Request, bank_data: ApiReceive):
|
|
from database_sql_models import AccountRecords
|
|
|
|
data_dict = bank_data.model_dump()
|
|
data_bulk = json.loads(zlib.decompress(b64decode(data_dict["data"])))
|
|
print("data_bulk", data_bulk)
|
|
new_record_list = []
|
|
for data_keys in data_bulk: # data_bulk is a dict
|
|
for data_dict in data_bulk[data_keys]: # data_bulk[data_keys] is a list
|
|
data_dict["bank_balance"] = data_dict.pop("balance")
|
|
data_dict["import_file_name"] = str(data_keys)
|
|
print("data_dict before pyd", data_dict)
|
|
data_dict = BankReceive(**data_dict).model_dump()
|
|
print("data_dict after pyd", data_dict)
|
|
if new_account_record := AccountRecords.find_or_create(**data_dict):
|
|
print("new_account_record.is_found", new_account_record.is_found)
|
|
if not new_account_record.is_found:
|
|
new_record_list.append(new_account_record.get_dict())
|
|
if new_record_list:
|
|
return JSONResponse(
|
|
content={
|
|
"completed": True,
|
|
"message": "Create Bank Record",
|
|
"data": new_record_list,
|
|
},
|
|
status_code=status.HTTP_200_OK,
|
|
)
|
|
return JSONResponse(
|
|
content={
|
|
"completed": False,
|
|
"message": "Record already exist or can not be created",
|
|
},
|
|
status_code=status.HTTP_406_NOT_ACCEPTABLE,
|
|
)
|