diff --git a/db/DbManager.py b/db/DbManager.py index e2bd01d..6849b2e 100644 --- a/db/DbManager.py +++ b/db/DbManager.py @@ -49,17 +49,11 @@ class DataManager: doc_ref.set(sim_info.to_firestore_dict()) def save(self, result: ReserveResultPojo): - if result.type == PublishType.SUCCESS: - # get id - id = result.url.split("/")[-1] - result.id = id - document_name = str(datetime.date.today()) - doc_ref = self._db.collection(document_name).document(result.id) - doc_ref.set(result.to_firestore_dict()) - else: - if len(result.phone) > 0: - doc_ref = self._db.collection(ERROR_COLLECTION_NAME).document(result.phone) - doc_ref.set(result.to_firestore_dict()) + id = result.url.split("/")[-1] + result.id = id + document_name = str(datetime.date.today()) + doc_ref = self._db.collection(document_name).document(result.id) + doc_ref.set(result.to_firestore_dict()) def find_appointment_detail_via_phone(self, day, phone) -> ReserveResultPojo: doc_ref = self._db.collection(day) diff --git a/workers/commandor_page.py b/workers/commandor_page.py index bf2e999..2ec019e 100644 --- a/workers/commandor_page.py +++ b/workers/commandor_page.py @@ -19,7 +19,7 @@ from utils.excel_reader import ExcelHelper from utils.operator import Operator, check_operator RDV_URL = "https://rendezvousparis.hermes.com/client/register" -# + # RDV_URL = "file:///Users/lpan/Downloads/test_appointment.html" # RDV_URL = "https://api.ipify.org" # RDV_URL ="https://bot.sannysoft.com/" @@ -59,10 +59,7 @@ class CommandorPage: def on_success(self, result: ReserveResultPojo): self.logger.info("on_success called.") - result.sim_position = self.sim_position - result.slot_position = self.slot_position self.logger.info(result) - params.firebase_store_manager.save(result) params.oracle_log_sender.send_appoint_result(result) self.current_gsm_modem.modem.close() self.is_finished = True @@ -170,7 +167,7 @@ class CommandorPage: if CONFIRMED_MESSAGE in message: # publish the successful message self.logger.info("url is " + self.page.url) - self.publish_message_to_queue(self.contact, PublishType.SUCCESS.value, self.page.url) + self.publish_message_to_queue(self.contact, PublishType.SUCCESS, self.page.url) else: self.logger.info("timeout") self.reset_air_plan_mode() @@ -218,32 +215,41 @@ class CommandorPage: def _setPhoneCountryAndStore(self): # document.getElementById("prefer").value = \"faubourg\"; - if self.store_type == 0: - self.page.evaluate("""()=>{ - document.getElementById("phone_country").focus(); - document.getElementById("phone_country").value = \"FR\" }""") - else: - self.page.evaluate("""()=>{ - document.getElementById("prefer").value = \"faubourg\"; - document.getElementById("phone_country").focus(); - document.getElementById("phone_country").value = \"FR\" }""") + try: + if self.store_type == 0: + self.page.evaluate("""()=>{ + document.getElementById("phone_country").focus(); + document.getElementById("phone_country").value = \"FR\" }""") + else: + self.page.evaluate("""()=>{ + document.getElementById("prefer").value = \"faubourg\"; + document.getElementById("phone_country").focus(); + document.getElementById("phone_country").value = \"FR\" }""") + except Exception as error: + self.logger.error(error) def _setPhoneNumber(self, phoneNumber): time.sleep(get_random_wait_time()) - self.page.evaluate("""(phoneNumber)=>document.getElementById("phone_number").value =phoneNumber""", - phoneNumber) + try: + self.page.evaluate("""(phoneNumber)=>document.getElementById("phone_number").value =phoneNumber""", + phoneNumber) + except Exception as error: + self.logger.error(error) def _setName(self, lastName, firstName): time.sleep(get_random_wait_time()) - self.page.evaluate("""(name)=> { - document.getElementById("surname").focus(); - document.getElementById("surname").value = name.lastName; - document.getElementById("name").focus(); - document.getElementById("name").value = name.firstName}""", {'lastName': lastName, 'firstName': firstName}) + try: + self.page.evaluate("""(name)=> { + document.getElementById("surname").focus(); + document.getElementById("surname").value = name.lastName; + document.getElementById("name").focus(); + document.getElementById("name").value = name.firstName}""", {'lastName': lastName, 'firstName': firstName}) + except Exception as error: + self.logger.error(error) def getErrors(self): # send error result - self.publish_message_to_queue(self.contact, PublishType.ERROR.value, self.page.url) + self.publish_message_to_queue(self.contact, PublishType.ERROR, self.page.url) try: items = self.page.query_selector("div.alert") if items: @@ -253,31 +259,43 @@ class CommandorPage: def _set_email(self, email): time.sleep(get_random_wait_time()) - self.page.evaluate("""(email)=>{ - document.getElementById("email").focus(); - document.getElementById("email").value = email;}""", email) + try: + self.page.evaluate("""(email)=>{ + document.getElementById("email").focus(); + document.getElementById("email").value = email;}""", email) + except Exception as error: + self.logger.error(error) def setIdNumber(self, id): time.sleep(get_random_wait_time()) - self.page.evaluate(""" (id) =>{ - document.getElementById("passport_id").focus(); - document.getElementById("passport_id").value = id}""", id) + try: + self.page.evaluate(""" (id) =>{ + document.getElementById("passport_id").focus(); + document.getElementById("passport_id").value = id}""", id) + except Exception as error: + self.logger.error(error) def _checkCgu(self): # self.page.mouse.wheel(0, random.randint(200, 600)) - self.page.evaluate(""" - document.getElementById("cgu").focus(); - document.getElementById("cgu").checked = true; - document.getElementById("processing").focus(); - document.getElementById("processing").checked = true""") + try: + self.page.evaluate(""" + document.getElementById("cgu").focus(); + document.getElementById("cgu").checked = true; + document.getElementById("processing").focus(); + document.getElementById("processing").checked = true""") + except Exception as error: + self.logger.error(error) def clickOnValidBtn(self): # self.page.mouse.wheel(0, random.randint(400, 500)) time.sleep(get_random_wait_time()) - self.page.evaluate("""document.getElementsByClassName("btn")[0].focus();""") - time.sleep(get_random_wait_time()) - self.page.evaluate(""" - document.getElementsByClassName("btn")[0].click();""") + try: + self.page.evaluate("""document.getElementsByClassName("btn")[0].focus();""") + time.sleep(get_random_wait_time()) + self.page.evaluate(""" + document.getElementsByClassName("btn")[0].click();""") + except Exception as error: + self.logger.error(error) def clear_app_data(self): pass @@ -291,16 +309,20 @@ class CommandorPage: self.logger.info("will close browser") self.browser.close() - def publish_message_to_queue(self, contact: ContactPojo, message: str, url: str): + def publish_message_to_queue(self, contact: ContactPojo, status: PublishType, url: str): # create the message id = url.split("/")[-1] - result = ReserveResultPojo(type=PublishType.SUCCESS, phone=contact.phone, message=message, url=url, + result = ReserveResultPojo(type=status, phone=contact.phone, message=status.value, url=url, firstName=contact.first_name, lastName=contact.last_name, email=contact.mail, passport=contact.passport, ccid=contact.ccid) result.id = id - self.on_success(result) - time.sleep(2) - self.browser.close() + result.sim_position = self.sim_position + result.slot_position = self.slot_position + params.firebase_store_manager.save(result) + if status is PublishType.SUCCESS: + self.on_success(result) + time.sleep(2) + self.browser.close() def get_random_id_number_for_proxy() -> str: