can insert accepted appointment to db

This commit is contained in:
2024-06-02 16:12:05 +02:00
parent ad733aa9b3
commit c772df34f3
3 changed files with 76 additions and 37 deletions
+8
View File
@@ -4,6 +4,7 @@ import time
from pymongo import MongoClient from pymongo import MongoClient
from models.AcceptedResultPojo import AcceptedResultPojo
from models.LinkPojo import LinkPojo from models.LinkPojo import LinkPojo
from models.ReserveResultPojo import ReserveResultPojo from models.ReserveResultPojo import ReserveResultPojo
from models.contact_pojo import ContactPojo from models.contact_pojo import ContactPojo
@@ -132,6 +133,13 @@ class MongoDbManager:
print(error) print(error)
return email_list return email_list
def insert_accepted_reserve(self, accepted_pojo: AcceptedResultPojo):
try:
collection_to_use = self.db[ACCEPTED_APPOINTMENT_LIST]
collection_to_use.insert_one(accepted_pojo.to_firestore_dict())
except Exception as Error:
self.logger.info(Error)
def get_links_to_validate(self) -> list: def get_links_to_validate(self) -> list:
collection_name = LINKS_TO_VALIDATE collection_name = LINKS_TO_VALIDATE
link_list = [] link_list = []
+23 -34
View File
@@ -2,22 +2,21 @@ from dataclasses import dataclass
from dataclasses_json import dataclass_json from dataclasses_json import dataclass_json
from db.mongo_manager import MongoDbManager
from models import ReserveResultPojo
@dataclass_json
@dataclass
class AcceptedResultPojo: class AcceptedResultPojo:
def __init__(self, msg: str, slot_position, sim_position, passport, email, name, phone, ccid: str, url, def __init__(self, id, msg: str, slot_position, sim_position, passport, email, name, firstName, lastName, phone,
ccid: str, url,
created_at: str, validated_at: str): created_at: str, validated_at: str):
self.message = msg self.message = msg
self.id = id
self.slot_position = slot_position self.slot_position = slot_position
self.sim_position = sim_position self.sim_position = sim_position
self.passport = "{}".format(passport) self.passport = "{}".format(passport)
self.email = email self.email = email
self.name = name self.name = name
self.firstName = firstName
self.lastName = lastName
self.phone = phone self.phone = phone
self.ccid = ccid self.ccid = ccid
self.url = url self.url = url
@@ -31,31 +30,21 @@ class AcceptedResultPojo:
def __repr__(self): def __repr__(self):
return str(self.__dict__) return str(self.__dict__)
def to_firestore_dict(self):
def get_accepted_result_from(reserve_pojo: ReserveResultPojo, mongo_db_manager: MongoDbManager, dest = {
all_contact_list) -> AcceptedResultPojo: u'id': self.id,
if reserve_pojo.lastName is None or len(reserve_pojo.lastName) == 0: u'phone': self.phone,
for _contact in all_contact_list: u'firstName': self.firstName,
if _contact.mail == reserve_pojo.mail: u'lastName': self.lastName,
reserve_pojo.lastName = _contact.last_name u'message': self.message,
reserve_pojo.firstName = _contact.first_name u'email': self.email,
reserve_pojo.phone = _contact.phone u'passport': self.passport,
reserve_pojo.passport = _contact.passport u'url': self.url,
u'ccid': self.ccid,
if reserve_pojo is None: u'store_type': self.store,
# send email even there are no reserve info u'accepted': 'ACCEPTED',
return AcceptedResultPojo("", slot_position=0, sim_position=0, u'created_at': self.created_at,
passport="", email="", phone="", u'appointment_time': self.time,
name="", ccid="", u'validated_at': self.validated_at,
url="", created_at="", validated_at="") }
else: return dest
toReturn = AcceptedResultPojo(reserve_pojo.message, slot_position=reserve_pojo.slot_position,
sim_position=reserve_pojo.sim_position,
passport=reserve_pojo.passport, email=reserve_pojo.email,
phone=reserve_pojo.phone,
name="{} {}".format(reserve_pojo.lastName, reserve_pojo.firstName),
ccid=reserve_pojo.ccid,
url=reserve_pojo.url, created_at=reserve_pojo.created_at,
validated_at=reserve_pojo.validated_at)
toReturn.mail_password = mongo_db_manager.get_code_for_email(reserve_pojo.email)
return toReturn
+45 -3
View File
@@ -1,8 +1,10 @@
import datetime
import glob import glob
import re import re
from db.mongo_manager import MONGO_STORE_MANAGER from db.mongo_manager import MONGO_STORE_MANAGER, MongoDbManager
from models import AcceptedResultPojo from models.AcceptedResultPojo import AcceptedResultPojo
from models.ReserveResultPojo import ReserveResultPojo
CONFIRMATION_SENTENCE = "Nous avons le plaisir de vous confirmer votre rendez-vous" CONFIRMATION_SENTENCE = "Nous avons le plaisir de vous confirmer votre rendez-vous"
TIME_REGEX = "([0-1]?[0-9]|2[0-3]):[0-5][0-9]" TIME_REGEX = "([0-1]?[0-9]|2[0-3]):[0-5][0-9]"
@@ -44,7 +46,7 @@ def get_appointment_info_from_id(info_list: list):
for _item in _all_items: for _item in _all_items:
for _info in info_list: for _info in info_list:
if _item.id == _info[0]: if _item.id == _info[0]:
_accepted = AcceptedResultPojo.get_accepted_result_from(_item, MONGO_STORE_MANAGER, _all_contact_list) _accepted = get_accepted_result_from(_item, MONGO_STORE_MANAGER, _all_contact_list)
_accepted.store = _info[1][0] _accepted.store = _info[1][0]
_accepted.time = _info[1][1] _accepted.time = _info[1][1]
accepted_appointments.append(_accepted) accepted_appointments.append(_accepted)
@@ -55,8 +57,48 @@ def get_appointment_info_from_id(info_list: list):
return accepted_appointments return accepted_appointments
def get_accepted_result_from(reserve_pojo: ReserveResultPojo, mongo_db_manager: MongoDbManager,
all_contact_list) -> AcceptedResultPojo:
if reserve_pojo.lastName is None or len(reserve_pojo.lastName) == 0:
for _contact in all_contact_list:
if _contact.mail == reserve_pojo.email:
reserve_pojo.lastName = _contact.last_name
reserve_pojo.firstName = _contact.first_name
reserve_pojo.phone = _contact.phone
reserve_pojo.passport = _contact.passport
if reserve_pojo is None:
# send email even there are no reserve info
return AcceptedResultPojo(id="", msg="", slot_position=0, sim_position=0,
passport="", email="", phone="",
name="", ccid="",
url="", created_at="", validated_at="")
else:
toReturn = AcceptedResultPojo(id=reserve_pojo.id, msg=reserve_pojo.message,
slot_position=reserve_pojo.slot_position,
sim_position=reserve_pojo.sim_position,
passport=reserve_pojo.passport, email=reserve_pojo.email,
phone=reserve_pojo.phone,
name="{} {}".format(reserve_pojo.lastName, reserve_pojo.firstName),
firstName=reserve_pojo.firstName, lastName=reserve_pojo.lastName,
ccid=reserve_pojo.ccid,
url=reserve_pojo.url, created_at=reserve_pojo.created_at,
validated_at=reserve_pojo.validated_at)
toReturn.mail_password = mongo_db_manager.get_code_for_email(reserve_pojo.email)
return toReturn
def migre_accepted_appointment(day: str, accepted_appointments: list):
# get successful item from firestore
for accepted_pojo in accepted_appointments:
accepted_pojo.day = day
accepted_pojo.accepted_at = datetime.datetime.strptime(day, '%Y-%m-%d').timestamp()
MONGO_STORE_MANAGER.insert_accepted_reserve(accepted_pojo)
if __name__ == '__main__': if __name__ == '__main__':
accepted_appointments = get_appointment_info_from_id(find_ids_from_results()) accepted_appointments = get_appointment_info_from_id(find_ids_from_results())
migre_accepted_appointment("2024-06-01", accepted_appointments)
for _accepted in accepted_appointments: for _accepted in accepted_appointments:
print(""" print("""
姓名:{} ({} {}) 姓名:{} ({} {})