updated SenderService updated
This commit is contained in:
parent
3e1ba4cb67
commit
77893e1d95
|
|
@ -1,19 +1,103 @@
|
|||
import time
|
||||
from jinja2 import Template
|
||||
import arrow
|
||||
import os
|
||||
|
||||
from Services.MongoService.provider import MongoProvider
|
||||
from Configs.mongo import MongoConfig
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
from Services.EmailService.provider import send_email
|
||||
|
||||
|
||||
mongo_prefix = "CollectedData"
|
||||
delimiter = "|"
|
||||
|
||||
|
||||
# todo Check if postgres is_email_send === False then send email
|
||||
# todo Trigger @mongo email_send = False then send email
|
||||
def app():
|
||||
print("Hello from sender service!")
|
||||
|
||||
send_to = "karatay@mehmetkaratay.com.tr"
|
||||
|
||||
|
||||
def check_any_written_stage_in_mongo_database(mongo_provider) -> bool:
|
||||
return mongo_provider.find_one(filter_query={"stage": "written", "send": None})
|
||||
def check_any_written_stage_in_mongo_database(mongo_provider) -> list:
|
||||
return mongo_provider.find_many(filter_query={"stage": "written", "send": None})
|
||||
|
||||
|
||||
def render_email_template(
|
||||
headers: list, rows: list, balance_error: bool, bank_balance: float
|
||||
):
|
||||
template_dir = os.path.join(os.path.dirname(__file__), "templates")
|
||||
env = Environment(
|
||||
loader=FileSystemLoader(template_dir)
|
||||
) # Load templates from the directory
|
||||
template = env.get_template(
|
||||
"template_accounts.html"
|
||||
) # Load the specific template file
|
||||
# Render template with variables
|
||||
return template.render(
|
||||
headers=headers,
|
||||
rows=rows,
|
||||
bank_balance=f"{bank_balance:.4f}",
|
||||
balance_error=balance_error,
|
||||
today=str(arrow.now().date()),
|
||||
)
|
||||
|
||||
|
||||
def send_email_to_given_address(to: str, html_template: str) -> bool:
|
||||
today = arrow.now()
|
||||
subject = f"{str(today.date())} Gunes Apt. Cari Durum Bilgilendirme Raporu"
|
||||
try:
|
||||
send_email(subject=subject, receivers=[to], html=html_template)
|
||||
print(f"Email is sent to : {send_to}. BB")
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
print("Email is not sent")
|
||||
return False
|
||||
|
||||
|
||||
def send_email_and_update_mongo_database(mongo_provider, email_data) -> bool:
|
||||
parsed_list = email_data.get("parsed")
|
||||
if not parsed_list:
|
||||
return False
|
||||
|
||||
list_of_rows = list()
|
||||
for parsed in parsed_list:
|
||||
bank_date = arrow.get(str(parsed.get("bank_date")))
|
||||
process_comment = parsed.get("process_comment")
|
||||
currency_value = f"{parsed.get('currency_value'):.4f}"
|
||||
list_of_rows.append(
|
||||
[bank_date, process_comment, currency_value]
|
||||
)
|
||||
|
||||
html_template = render_email_template(
|
||||
headers=["Ulaştığı Tarih", "Banka Transaksiyonu Ek Bilgi", "Aktarım Değeri"],
|
||||
rows=list_of_rows,
|
||||
balance_error=False,
|
||||
bank_balance=0,
|
||||
)
|
||||
if send_email_to_given_address(to=send_to, html_template=html_template):
|
||||
mongo_provider.update_one(
|
||||
filter_query={"filename": email_data.get("filename")},
|
||||
update_data={"$set": {"send": True}},
|
||||
)
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
while True:
|
||||
app()
|
||||
print("Sender service is running...")
|
||||
with MongoProvider.mongo_client() as mongo_client:
|
||||
provider = MongoProvider(
|
||||
client=mongo_client,
|
||||
database=MongoConfig.DATABASE_NAME,
|
||||
storage_reason=[mongo_prefix, str(arrow.now().date())],
|
||||
)
|
||||
results = check_any_written_stage_in_mongo_database(mongo_provider=provider)
|
||||
for result in results:
|
||||
send_email_and_update_mongo_database(
|
||||
mongo_provider=provider,
|
||||
email_data=result,
|
||||
)
|
||||
time.sleep(5)
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
3.12
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
|
||||
def main():
|
||||
print("Hello from seperatorservice!")
|
||||
|
||||
|
||||
# todo Separates account records to decision book and and other details
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
[project]
|
||||
name = "seperatorservice"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = [
|
||||
"arrow>=1.3.0",
|
||||
"fastapi>=0.115.11",
|
||||
"psycopg2-binary>=2.9.10",
|
||||
"pymongo>=4.11.3",
|
||||
"sqlalchemy-mixins>=2.0.5",
|
||||
]
|
||||
|
|
@ -56,6 +56,7 @@ def write_parsed_data_to_account_records(
|
|||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
print("Writer Service is running")
|
||||
while True:
|
||||
with MongoProvider.mongo_client() as mongo_client:
|
||||
|
|
|
|||
|
|
@ -51,37 +51,37 @@ services:
|
|||
# volumes:
|
||||
# - wag_postgres_commercial_data:/bitnami/postgresql
|
||||
|
||||
email_service:
|
||||
container_name: email_service
|
||||
build:
|
||||
context: .
|
||||
dockerfile: BankServices/EmailService/Dockerfile
|
||||
networks:
|
||||
- network_store_services
|
||||
|
||||
parser_service:
|
||||
container_name: parser_service
|
||||
build:
|
||||
context: .
|
||||
dockerfile: BankServices/ParserService/Dockerfile
|
||||
networks:
|
||||
- network_store_services
|
||||
|
||||
writer_service:
|
||||
container_name: writer_service
|
||||
build:
|
||||
context: .
|
||||
dockerfile: BankServices/WriterService/Dockerfile
|
||||
networks:
|
||||
- network_store_services
|
||||
|
||||
routine_email_service:
|
||||
container_name: routine_email_service
|
||||
build:
|
||||
context: .
|
||||
dockerfile: BankServices/RoutineEmailService/Dockerfile
|
||||
networks:
|
||||
- network_store_services
|
||||
# email_service:
|
||||
# container_name: email_service
|
||||
# build:
|
||||
# context: .
|
||||
# dockerfile: BankServices/EmailService/Dockerfile
|
||||
# networks:
|
||||
# - network_store_services
|
||||
#
|
||||
# parser_service:
|
||||
# container_name: parser_service
|
||||
# build:
|
||||
# context: .
|
||||
# dockerfile: BankServices/ParserService/Dockerfile
|
||||
# networks:
|
||||
# - network_store_services
|
||||
#
|
||||
# writer_service:
|
||||
# container_name: writer_service
|
||||
# build:
|
||||
# context: .
|
||||
# dockerfile: BankServices/WriterService/Dockerfile
|
||||
# networks:
|
||||
# - network_store_services
|
||||
#
|
||||
# routine_email_service:
|
||||
# container_name: routine_email_service
|
||||
# build:
|
||||
# context: .
|
||||
# dockerfile: BankServices/RoutineEmailService/Dockerfile
|
||||
# networks:
|
||||
# - network_store_services
|
||||
|
||||
sender_service:
|
||||
container_name: sender_service
|
||||
|
|
|
|||
|
|
@ -23,4 +23,4 @@ dependencies = [
|
|||
]
|
||||
|
||||
[tool.uv.workspace]
|
||||
members = ["BankServices/EmailService", "BankServices/ParserService", "BankServices/ReaderService", "BankServices/SenderService", "BankServices/RoutineEmailService"]
|
||||
members = ["BankServices/EmailService", "BankServices/ParserService", "BankServices/ReaderService", "BankServices/SenderService", "BankServices/RoutineEmailService", "BankServices/SeperatorService"]
|
||||
|
|
|
|||
Loading…
Reference in New Issue