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 models.AcceptedResultPojo import AcceptedResultPojo
from models.LinkPojo import LinkPojo
from models.ReserveResultPojo import ReserveResultPojo
from models.contact_pojo import ContactPojo
@@ -132,6 +133,13 @@ class MongoDbManager:
print(error)
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:
collection_name = LINKS_TO_VALIDATE
link_list = []
+23 -34
View File
@@ -2,22 +2,21 @@ from dataclasses import dataclass
from dataclasses_json import dataclass_json
from db.mongo_manager import MongoDbManager
from models import ReserveResultPojo
@dataclass_json
@dataclass
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):
self.message = msg
self.id = id
self.slot_position = slot_position
self.sim_position = sim_position
self.passport = "{}".format(passport)
self.email = email
self.name = name
self.firstName = firstName
self.lastName = lastName
self.phone = phone
self.ccid = ccid
self.url = url
@@ -31,31 +30,21 @@ class AcceptedResultPojo:
def __repr__(self):
return str(self.__dict__)
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.mail:
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("", slot_position=0, sim_position=0,
passport="", email="", phone="",
name="", ccid="",
url="", created_at="", validated_at="")
else:
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
def to_firestore_dict(self):
dest = {
u'id': self.id,
u'phone': self.phone,
u'firstName': self.firstName,
u'lastName': self.lastName,
u'message': self.message,
u'email': self.email,
u'passport': self.passport,
u'url': self.url,
u'ccid': self.ccid,
u'store_type': self.store,
u'accepted': 'ACCEPTED',
u'created_at': self.created_at,
u'appointment_time': self.time,
u'validated_at': self.validated_at,
}
return dest
+45 -3
View File
@@ -1,8 +1,10 @@
import datetime
import glob
import re
from db.mongo_manager import MONGO_STORE_MANAGER
from models import AcceptedResultPojo
from db.mongo_manager import MONGO_STORE_MANAGER, MongoDbManager
from models.AcceptedResultPojo import AcceptedResultPojo
from models.ReserveResultPojo import ReserveResultPojo
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]"
@@ -44,7 +46,7 @@ def get_appointment_info_from_id(info_list: list):
for _item in _all_items:
for _info in info_list:
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.time = _info[1][1]
accepted_appointments.append(_accepted)
@@ -55,8 +57,48 @@ def get_appointment_info_from_id(info_list: list):
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__':
accepted_appointments = get_appointment_info_from_id(find_ids_from_results())
migre_accepted_appointment("2024-06-01", accepted_appointments)
for _accepted in accepted_appointments:
print("""
姓名:{} ({} {})