o
    ނi{                     @   s<   d dl Zd dlZd dlZdd Zdd Zdd Zdd	 ZdS )
    Nc              
   C   sr   zt | d}t|W  d    W S 1 sw   Y  W d S  ty8 } ztd|  W Y d }~d S d }~ww )NrzError reading JSON file: )openjsonload	Exceptionprint)	file_pathfilee r   8/home/acert/hirelines/app_api/functions/excel_mapping.py	read_json   s   (r   c              
   C   sB   zt | W S  ty  } ztd|  W Y d }~d S d }~ww )NzError reading Excel file: )pd
read_excelr   r   )r   r
   r   r   r   r      s   r   c           	      C   s   d}d}| dd}|  D ]A\}}t|rq|d7 }d|v r-|d }t|t|s-qd|v r<tt||d k r<qd|v rKtt||d krKq|d7 }q|durb|dkrb|d | }||kS ||kS )	zWValidates a column based on the provided rules, including optional accuracy percentage.r   accuracyN   pattern
min_length
max_lengthd   )getitemsr   isnarematchstrlen)	valuesrulesvalid_counttotal_countaccuracy_percentageindexvaluer   required_valid_rowsr   r   r   validate_column   s(   

r%   c                 C   s   t | }|si S |di }t|}|d u ri S i }| D ]-\}}|di }|s/g ||< qg }	t|jD ]\}
}t|| |rF|	|
 q6|	||< q|S )Ncolumn_mappingsvalidations)r   r   r   r   	enumeratecolumnsr%   append)json_file_pathexcel_file_path	json_datar&   
excel_dataoutputjson_keyr   r'   matching_columnscolumn_indexcolumn_namer   r   r   validate_excel_with_json8   s(   

r4   )pandasr   r   r   r   r   r%   r4   r   r   r   r   <module>   s    	!