def run()

in jobs/eam-integrations/scripts/workday_everfi_integration.py [0:0]


    def run(self, limit):
        # ========================================================
        # Getting Everfi hire dates, locations and locations mapping table ...
        # ========================================================        
        try:
            self.logger.info("Getting everfi hire dates")
            hire_date_category_id, hire_dates = self.everfi.everfi_api.get_hire_dates()           
            self.logger.info(f"Number of hire dates: {len(hire_dates)}")

            self.logger.info("Getting everfi locations")
            locs = self.everfi.everfi_api.get_locations()
            self.logger.info(f"Number of locations: {len(locs)}")

            self.logger.info("Getting everfi mapping table")
            loc_map_table = self.everfi.everfi_api.get_locations_mapping_table()
            self.logger.info(f"Number of mappins: {len(loc_map_table)}")

        except (APIAdaptorException, Exception) as e:
            self.logger.error(str(e))
            self.logger.critical("Failed while Getting Everfi hire dates,locations and locations mapping table ...")            
            sys.exit(1)

        # ========================================================
        # Getting Workday users...
        # ========================================================
        self.logger.info("Getting Workday users...")
        try:
            wd_comp, wd_users = self.workday.get_wd_users(locs, loc_map_table)
            self.logger.info(f"Number of wd users: {len(wd_users)}")
        except (APIAdaptorException, Exception) as e:
            self.logger.error(str(e))
            self.logger.critical("Failed while Getting Workday users...")           
            sys.exit(1)

        # ========================================================
        # Getting Everfi users...
        # ========================================================
        self.logger.info("Getting Everfi users...")
        try:
            everfi_comp, everfi_users = self.everfi.get_everfi_users(locs, loc_map_table, hire_dates)
            self.logger.info(f"Number of Everfi users: {len(everfi_users)}")
        except (APIAdaptorException, Exception) as e:
            self.logger.error(str(e))
            self.logger.critical("Failed while Getting Everfi users...")
            sys.exit(1)
            
        # ========================================================
        # Comparing users...
        # ========================================================
        self.logger.info("Comparing users...")
        try:
            add_list, del_list, upd_list = integration.compare_users(
                wd_comp, everfi_comp, wd_users, everfi_users
            )

            self.logger.info(f"Number of users to delete w/o limit={len(del_list)} with limit={len(del_list[:limit])}")
            self.logger.info(f"Number of users to add w/o limit={len(add_list)} with limit={len(add_list[:limit])}")
            self.logger.info(f"Number of users to update w/o limit={len(upd_list)} with limit={len(upd_list[:limit])}")

            del_list = del_list[:limit]
            add_list = add_list[:limit]
            upd_list = upd_list[:limit]
  
        except (Exception) as e:
            self.logger.error(str(e))
            self.logger.critical("Failed while Comparing users...")
            sys.exit(1)
        
            
        # ========================================================
        # Deleting Everfi users ...
        # ========================================================
        self.logger.info("Deleting Everfi users ...")        
        try:
             
            count_dels = self.everfi.deactivate_users(del_list, everfi_users)
            self.logger.info(f"Number of users deleted {count_dels}")
        except (APIAdaptorException, Exception) as e:
            self.logger.error(str(e))
            self.logger.critical("Faile while Deleting Everfi users ...")
            sys.exit(1)
            
        # ========================================================
        # Adding Everfi users ...
        # ========================================================
        self.logger.info("Adding Everfi users ...")
        try:
            count_add = self.everfi.add_everfi_users(
                hire_date_category_id, hire_dates, locs, add_list, wd_users, loc_map_table
            )
            self.logger.info(f"Number of users added {count_add}")            
        except (APIAdaptorException, Exception) as e:
            self.logger.error(str(e))
            self.logger.critical("Failed while Adding Everfi users ...")
            sys.exit(1)
        # ========================================================
        # Updating Everfi users ...
        # ========================================================
        self.logger.info("Updating Everfi users ...")
        
        try:
            count_upd = self.everfi.upd_everfi_users(
                hire_date_category_id,
                hire_dates,
                locs,
                upd_list,
                wd_users,
                everfi_users,
                loc_map_table,
            )
            self.logger.info(f"Number of users updated {count_upd}")
        except (APIAdaptorException, Exception) as e:
            self.logger.error(str(e))
            self.logger.critical("Failed while Updating Everfi users ...")
            sys.exit(1)
        
        self.logger.info("End of integration")