diff --git a/app/methods/e_cvent_methods.py b/app/methods/e_cvent_methods.py index c92ff8f..821ac51 100644 --- a/app/methods/e_cvent_methods.py +++ b/app/methods/e_cvent_methods.py @@ -474,6 +474,7 @@ def create_update_aether_person( # Important variables used more than once. person_external_id = None status = None + log.debug(cvent_contact_obj.get('customFields')) if custom_field_list := cvent_contact_obj.get('customFields'): # List for custom_field in custom_field_list: # Get the External ID created by OSIT @@ -485,6 +486,11 @@ def create_update_aether_person( if custom_field.get('id') == 'e4e51781-e1ec-4f61-8329-b5d29bec6886': # person_data['external_id'] = custom_field.get('value')[0] status = custom_field.get('value')[0].lower() + log.debug(f'Cvent Customer Custom Status: {status}') + if status: pass + else: status = 'unknown' # Will try to improve this guess in membership section below + log.debug(status) + email = cvent_contact_obj.get('email') membership_person_id = None membership_person_type_id = None @@ -626,6 +632,17 @@ def create_update_aether_person( membership_person_type_data['last_end_on'] = datetime.datetime.strptime(cvent_contact_obj.get('membership').get('expiration'), '%Y-%m-%d') current_datetime = datetime.datetime.now() + log.debug(status) + if status == 'unknown': + log.info('Status is unknown. Going to try and make a guess...') + if membership_person_type_data['first_start_on'] < current_datetime and membership_person_type_data['end_on'] >= current_datetime: + person_data['status'] = 'approved' # approved and current + elif membership_person_type_data['first_start_on'] < current_datetime and membership_person_type_data['end_on'] < current_datetime: + person_data['status'] = 'approved' # approved but expired + else: + person_data['status'] = 'pending' # likely new? + log.debug(person_data['status']) + if membership_person_type_data['end_on'] >= current_datetime: membership_person_type_data['lu_membership_type_status_id'] = 5 # 5 = active; expiration is > now else: diff --git a/app/routers/c_idaa.py b/app/routers/c_idaa.py index df47837..2754b59 100644 --- a/app/routers/c_idaa.py +++ b/app/routers/c_idaa.py @@ -24,13 +24,21 @@ async def refresh_membership_status( log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) + # sql = f""" + # UPDATE user + # INNER JOIN person ON user.id = person.user_id + # INNER JOIN membership_person ON person.id = membership_person.person_id + # SET user.email_verified = 1, user.enable = 1, user.enable_from = membership_person.start_on, user.enable_to = membership_person.end_on, user.verified = 1, user.group = 'pending_member' + # WHERE user.account_id = 13 AND membership_person.end_on >= NOW() + # AND (person.external_sys_id IS NULL OR person.external_sys_id = ''); + # """ sql = f""" UPDATE user INNER JOIN person ON user.id = person.user_id INNER JOIN membership_person ON person.id = membership_person.person_id SET user.email_verified = 1, user.enable = 1, user.enable_from = membership_person.start_on, user.enable_to = membership_person.end_on, user.verified = 1, user.group = 'pending_member' WHERE user.account_id = 13 AND membership_person.end_on >= NOW() - AND (person.external_sys_id IS NULL OR person.external_sys_id = ''); + AND person.status = 'pending'; """ if user_update_result := sql_update(sql=sql): # Pull out IDs of existing person record @@ -44,7 +52,7 @@ async def refresh_membership_status( INNER JOIN membership_person ON person.id = membership_person.person_id SET user.email_verified = 1, user.enable = 1, user.enable_from = membership_person.start_on, user.enable_to = membership_person.end_on, user.verified = 1, user.group = 'current_member' WHERE user.account_id = 13 AND membership_person.end_on >= NOW() - AND (person.external_sys_id IS NOT NULL AND person.external_sys_id != ''); + AND (person.status IS NULL OR person.status = 'approved'); """ if user_update_result := sql_update(sql=sql): # Pull out IDs of existing person record